centos

centos k8s部署怎样实现高可用

小樊
47
2025-11-01 21:18:34
栏目: 智能运维

CentOS环境下Kubernetes高可用部署实现指南

一、基础环境准备

高可用部署的前提是确保所有节点(Master/Worker)满足以下要求:

二、安装核心组件

在所有节点上安装Docker(容器运行时)和Kubernetes工具(kubeadmkubeletkubectl):

# 添加Docker yum源并安装
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
systemctl enable --now docker

# 添加Kubernetes yum源并安装
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0
systemctl enable --now kubelet

三、部署高可用Master节点

Master节点的高可用是Kubernetes集群稳定的核心,需通过负载均衡器etcd集群实现:

1. 初始化第一个Master节点(设置负载均衡器地址)

使用kubeadm init时指定--control-plane-endpoint(负载均衡器的虚拟IP,如k8s-lb.example.com:6443),并上传证书以实现多Master节点共享:

kubeadm init \
  --apiserver-advertise-address <Master1_IP> \
  --control-plane-endpoint k8s-lb.example.com:6443 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.28.0 \
  --pod-network-cidr 10.244.0.0/16 \
  --upload-certs

初始化完成后,配置kubectl(将生成的admin.conf复制到~/.kube/config):

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
2. 部署负载均衡器(HAProxy+Keepalived)

负载均衡器的作用是将API Server请求分发到多个Master节点,避免单点故障。

3. 扩展Master节点

在其他Master节点上执行kubeadm join命令(初始化时生成的命令),加入控制平面集群:

kubeadm join k8s-lb.example.com:6443 \
  --token <TOKEN> \
  --discovery-token-ca-cert-hash sha256:<HASH> \
  --control-plane --certificate-key <CERT_KEY>

通过kubectl get nodes确认所有Master节点状态为Ready

四、部署etcd高可用集群

etcd是Kubernetes的核心数据库,存储集群状态、配置等信息,必须配置为高可用(建议3或5节点):

kubectl get pods -n kube-system -l app=etcd

五、部署网络插件

网络插件是Pod间通信的基础,需选择支持多节点的插件(如Calico、Flannel):

# 以Calico为例(推荐)
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

等待网络插件部署完成(kubectl get pods -n kube-system显示所有Pod为Running)。

六、加入Worker节点

在Worker节点上安装Docker和Kubernetes工具(步骤同第二步),然后执行kubeadm join命令(初始化Master节点时生成的命令)加入集群:

kubeadm join k8s-lb.example.com:6443 \
  --token <TOKEN> \
  --discovery-token-ca-cert-hash sha256:<HASH>

通过kubectl get nodes确认Worker节点状态为Ready

七、验证高可用性

  1. Master节点故障测试:停止某个Master节点的kubelet服务,观察集群状态(kubectl get nodes),确认其他Master节点仍能提供服务;恢复后检查状态是否正常。
  2. 负载均衡器测试:停止HAProxy服务,检查虚拟IP是否能切换到备节点(ip addr show查看VIP是否绑定到备节点)。
  3. etcd故障测试:停止某个etcd节点,观察集群状态,确认etcd集群仍能正常工作(需至少3个节点正常)。

八、后续优化建议

通过以上步骤,可在CentOS环境下实现Kubernetes集群的高可用部署,确保控制平面、网络和存储的稳定性,满足生产环境需求。

0
看了该问题的人还看了