返回
Kubernetes之kube-controller-manager高可用部署攻略
后端
2023-11-22 17:25:26
前提条件
- 3个Master节点,每个节点至少有4GB内存和2个CPU内核。
- Kubernetes版本为1.23.5。
- etcd集群已经搭建完成。
- kube-apiserver已经搭建完成。
- kube-scheduler已经搭建完成。
部署步骤
- 在每个Master节点上创建kube-controller-manager的systemd unit文件。
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://kubernetes.io/docs/home/
After=kube-apiserver.service
Requires=kube-apiserver.service
[Service]
ExecStart=/usr/local/bin/kube-controller-manager \\
--bind-address=127.0.0.1 \\
--cluster-name=kubernetes \\
--kubeconfig=/etc/kubernetes/controller-manager.conf \\
--leader-elect=true \\
--port=10252 \\
--service-cluster-ip-range=10.32.0.0/24 \\
--use-service-account-credentials=true
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
- 将systemd unit文件复制到每个Master节点上。
scp /etc/systemd/system/kube-controller-manager.service root@master1:/etc/systemd/system/
scp /etc/systemd/system/kube-controller-manager.service root@master2:/etc/systemd/system/
scp /etc/systemd/system/kube-controller-manager.service root@master3:/etc/systemd/system/
- 在每个Master节点上启用并启动kube-controller-manager服务。
systemctl enable kube-controller-manager
systemctl start kube-controller-manager
- 检查kube-controller-manager是否正在运行。
systemctl status kube-controller-manager
如果kube-controller-manager正在运行,您应该会看到类似以下的输出:
● kube-controller-manager.service - Kubernetes Controller Manager
Loaded: loaded (/etc/systemd/system/kube-controller-manager.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-03-13 16:32:32 UTC; 4s ago
Docs: https://kubernetes.io/docs/home/
Main PID: 28714 (kube-controll)
Tasks: 19 (limit: 512)
Memory: 9.2M
CPU: 199ms
CGroup: /system.slice/kube-controller-manager.service
├─28714 kube-controll
└─28715 kube-controll
Mar 13 16:32:32 master1 systemd[1]: Started Kubernetes Controller Manager.
验证
您可以通过以下命令来验证kube-controller-manager是否正常工作:
kubectl get componentstatuses
如果kube-controller-manager正在正常工作,您应该会看到类似以下的输出:
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
故障转移测试
您可以通过以下步骤来测试kube-controller-manager的高可用性:
- 在其中一个Master节点上停止kube-controller-manager服务。
systemctl stop kube-controller-manager
- 检查其他两个Master节点上的kube-controller-manager服务是否仍然正在运行。
systemctl status kube-controller-manager
您应该会看到其他两个Master节点上的kube-controller-manager服务仍然正在运行,并且其中一个节点已经成为新的leader节点。
- 在停止kube-controller-manager服务的Master节点上重新启动kube-controller-manager服务。
systemctl start kube-controller-manager
- 检查kube-controller-manager服务是否已经恢复正常工作。
systemctl status kube-controller-manager
您应该会看到kube-controller-manager服务已经恢复正常工作,并且该节点已经重新加入到集群中。
结论
通过本文的介绍,您已经了解了如何在Kubernetes集群中部署kube-controller-manager,以实现高可用性。您已经学会了如何在每个Master节点上创建systemd unit文件、复制systemd unit文件到每个Master节点、启用并启动kube-controller-manager服务、检查kube-controller-manager是否正在运行、验证kube-controller-manager是否正常工作,以及进行故障转移测试。希望本文对您有所帮助,如果您有任何问题,请随时与我联系。