CKA备考心得!这证没有值不值,想拿就拿就完了!

如果拿到证后,能报销考试费,或者有补贴,上车就完事了

报考

CKA or CKA-CN

  • CKA 英文试题、监考官和你用英文和你聊天、考试时出示证件为护照;
  • CKA-CN 中文试题、监考官用中文和你聊天、考试时出示证件为身份证。

报名

报完名交完钱后,后续的操作基本不在 linuxfoundation.cn

选考试时间

Linux Foundation帮助文档-如何注册考试码及预约考试

建议注册 Linux Foundation ID(LFID) 时,不要选用 Google、FaceBook 之类明显需要翻墙的账号创建。
选择考试时间界面

报考到考试期间的准备

Vim

或者其他在服务器 Terminal 中可以进行编辑的工具

Vim 用得越溜,编辑得越快,考试时做题的速度也就越快。

刷题

其他资料

考试开始前15分钟 Tips

  • 提前检查考试电脑的兼容性 WebDelivery Compatibility Check (examslocal.com)
  • 考试全程需要录屏、录音;需要一个无人的房间;桌子上面、下面不能出现纸质、电子资料;考试前会让你拿着电脑,转动摄像头,展示桌子上面、下面以及整个房间;
  • 不要说话、不要交谈;
  • 考试时使用插电源的笔记本电脑
  • 考试前会让你将其他进程都关掉(macOS 上就只剩下 Finder浏览器两个进程);
  • 准备好、调试好梯子以备不时之需(考试时没有使用梯子,但刚进入考试界面时,页面载入特别慢);
  • 考官的作用:
  • 给你下发指令,做考试前准备;
  • 当你有问题时,和你网聊;
  • 当时间快到时,给你提醒。

考试开始后

进入考试界面后,先简单设置一下 vim、bash,方便在后面答题中的使用。

Vim

简略的 Vim 常用配置 ~/.vimrc,可以提高 Vim 的使用幸福感(考试时需要凭记忆手动配置)。

# 显示行号,方便移动
set nu
# 上色,不上色可能看不清
syntax on
# 按下 Tab 键时,Vim 显示的空格数。
set tabstop=2
# 在文本上按下>>(增加一级缩进)、<<(取消一级缩进)或者==(取消全部缩进)时,每一级的字符数。
set shiftwidth=2
# 由于 Tab 键在不同的编辑器缩进不一致,该设置自动将 Tab 转为空格。
set expandtab

快捷命令

  1. 检查是否配置了 kubectl 命令补全(按 tab 是否有提示)或通过 source <(kubectl completion bash) 来设置命令补全;
  2. kubectl 创建别名 alias k=kubectl

考试中

开始每一道题目之前,需要注意一下3点是否符合题意:

  • context
  • namespace
  • node

操作完了之后记得 k describe/get 相应的资源看看,检查一下。

快速命令

使用 kubectl create/run 来创建资源;

当其创建的资源不满足要求时,可以考虑使用下面的模式答题
k create/run xxxxxx --dry-run=client -o yaml > 1.yaml
将生成好的 yaml 保存到本地
vim 1.yaml
然后用 vim 之类的工具编辑
k apply -f 1.yaml
再提交给 k8s

使用 kubectl expose 来暴露服务;

k edit 直接修改资源;

--all-namespace => -A

--namesapce => -n

救命命令

  • --help/-h
  • k explain pods.spec.containers 查看某个资源有哪些具体字段及说明

最后的倔强

kubernetes.io 中使用搜索功能搜索关键字。只要在文档中找到了相应的关键字,基本上就能获取到题目相关的 yaml。将 yaml 粘贴保存到本地后,用 Vim 编辑,然后 apply。

其他

  • 不是越往后越难,该跳就跳,不要浪费时间;
  • 没搞定的题可以打标签,做完一遍后,在下拉菜单回顾时,可以很清楚的看到;
  • 考试界面有个做笔记的 Web 应用,可以用来暂存一些信息。

印象比较深刻的题

k8s 故障恢复

印象中是使用 kubeadm 安装的 k8s 集群,所以得熟悉一下用 kubeadm 搭建 k8s 集群。

Master 节点问题

看 kube-system 命名空间下的 pod 是否正常。可考虑看异常 pod 的日志

k -n kube-system logs xxxx

Node 节点 kubelet 启动(由 systemd 托管)问题

  • 看 kubelet 进程状态 systemctl status kubelet
  • 看 kubelet 日志 journalctl -xefu kubelet
  • 看 kubelet 命令是否存在(xxx.service 中定义的 kubelet 路径是否存在);

Node 节点 join 问题

当修复好 Node 节点上面的 kubelet 问题后,在 Master 节点上面,通过 kubeadm 重新生成 bootstrap-token

kubeadm token create --print-join-command
  • 再使用 kubeadm join xxxxx,将 Node 节点加入集群。

记录某个操作

命令行里面加 --record 参数

etcd 的备份与恢复

基本会考,但是不难,就两条命令记下就好。证书路径别记错了。

ingress & egress(网络策略)

多容器Pod与sidecar

  • 多个容器共享同一个目录
印象中这道题我没做完,错误理解题意了,修改 yaml 贼慢,并且时间来不及了。

最后

祝愿各位明天拿证!!!

Read more

容器镜像(4):镜像的常用工具箱

容器镜像(4):镜像的常用工具箱

前几篇在讲多架构镜像时已经用过 skopeo 和 crane 做镜像复制,这篇系统整理这两个工具的完整能力,同时介绍几个日常操作镜像时同样好用的工具。 一、skopeo:不依赖 Daemon 的镜像瑞士军刀 skopeo 的核心价值是绕过 Docker daemon,直接与 Registry API 交互。上一篇用它做镜像复制和离线传输,但它的能力远不止于此。 1.1 安装 # Ubuntu / Debian sudo apt install -y skopeo skopeo --version # skopeo version 1.15.1 1.2 inspect:免拉取检查镜像元数据 docker inspect 需要先把镜像拉到本地,skopeo inspect 直接向 Registry

容器镜像(3):多架构镜像构建

容器镜像(3):多架构镜像构建

一、什么是多架构镜像 1.1 OCI Image Index 上一篇介绍了单平台镜像的结构:一个 Manifest 指向 Config 和若干 Layer blob。多架构镜像在此之上多了一层——OCI Image Index(也叫 Manifest List),是一个轻量的索引文件,把多个单平台 Manifest 组织在一起: $ docker manifest inspect golang:1.22-alpine { "schemaVersion": 2, "mediaType": "application/vnd.oci.image.index.v1+json", "manifests&

容器镜像(2):containerd 视角下的镜像

容器镜像(2):containerd 视角下的镜像

一、为什么需要了解 containerd 如果你只用 docker run 跑容器,从来不关心底层,那可以不了解 containerd。但如果你在用 Kubernetes,或者想真正理解"容器运行时"是什么,containerd 是绕不开的。 事实上,当你执行 docker run 的时候,containerd 早就在后台悄悄工作了——Docker 从 1.11 版本开始,就把核心运行时剥离出来交给 containerd 负责。 1.1 Docker 的架构演变 早期的 Docker(1.10 及之前)是一个"大一统"的单体程序:一个 dockerd