Context

kubeadm 配置的集群已迁移到新机器。它需要更改配置才能成功运行。

Task

修复在机器迁移过程中损坏的单节点集群。

首先,确定损坏的集群组件,并调查导致其损坏的原因。

注意:已停用的集群使用外部 etcd 服务器。

接下来,修复所有损坏的集群组件的配置。

注意:确保重新启动所有必要的服务和组件,以使更改生效。否则可能导致分数降低。

最后,确保集群运行正常。确保:

每个节点 和 所有 Pod 都处于 Ready 状态。

模拟环境需要执行这道题的初始化脚本,模拟 etcd 异常。
sh etcd-set.sh

执行题目里要求的初始化脚本

注意仅模拟环境里需要执行这个脚本。考试时,你 ssh 到这个节点的集群,这个集群本身就是这样异常的

sh etcd-set.sh
此时集群异常,命令报错,或者卡住
kubectl get nodes
kubectl -n kube-system get pod

修复 etcd

文档最后有这道题的排错方法

编辑 kube-apiserver 的静态 Pod 清单文件,修正 --etcd-servers 参数。

vim /etc/kubernetes/manifests/kube-apiserver.yaml

找到 --etcd-servers 参数,确保其指向本地 etcd 服务器地址

--etcd-servers=https://127.0.0.1:2379

修改完成后,重启一下 kubelet 服务

systemctl daemon-reload

systemctl restart kubelet

等 1~3 分钟,此时虽然显示 Ready 了,但是 kube-scheduler-master01 还是有异常的,需要继续操作。

kubectl get nodes

kubectl -n kube-system get pod

修复 kube-scheduler-master01

通过 lscpu,先检查这个机器系统的 CPU 核数,因为下面编辑 kube-scheduler.yaml 文件时,里面会提示你设置为系统的 10%。

lscpu |grep CPU

显示这个机器是 2 个 CPU,1CPU=1000m,所以 2CPU 就是 2000m,然后 10%就是 200m

另外,真正考试时,那台机器的 CPU 也是 2 个。

(因为不是说 K8S Node 可用的 10%,而是说 SYSTEM,所以指虚拟机 CPU 核心的 10%,出题者的本意是这个,不要想复杂了。

修复 scheduler 文件

vim /etc/kubernetes/manifests/kube-scheduler.yaml

将改 requests cpu 成 200m

cpu: 200m

验证集群状态

修改完成后,可以重启一下 kubelet 服务

systemctl daemon-reload

systemctl restart kubelet

等 1~3 分钟,检查状态

kubectl get nodes

kubectl -n kube-system get pod

更多推荐