在Ubuntu上實現Kubernetes高可用需圍繞控制平面高可用和節點冗余展開,核心步驟如下:
swapoff -a
并修改 /etc/fstab
永久生效。ufw disable
(生產環境建議配置防火墻規則)。kubeadm
、kubelet
、kubectl
。使用 kubeadm init
并指定負載均衡器地址(后續會通過HAProxy+Keepalived實現):
sudo kubeadm init --control-plane-endpoint <VIP>:6443 --upload-certs
其中 <VIP>
為虛擬IP(由HAProxy+Keepalived提供),初始化后配置 kubectl
:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
/etc/haproxy/haproxy.cfg
,將流量分發到多個Master節點的API Server(端口6443)。frontend kubernetes-api
bind *:6443
mode tcp
default_backend kubernetes-api-backend
backend kubernetes-api-backend
mode tcp
balance roundrobin
server master1 <Master1_IP>:6443 check
server master2 <Master2_IP>:6443 check
server master3 <Master3_IP>:6443 check
sudo apt install keepalived
配置 /etc/keepalived/keepalived.conf
,定義VIP和優先級,例如:vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
virtual_ipaddress {
<VIP>
}
}
在其他Master節點上執行 kubeadm join
,加入控制平面集群,確保多個Master節點共同提供服務。
kubeadm join
加入集群。affinity
和 anti-affinity
規則,將副本分散到不同Node節點,避免單點故障。kubectl get nodes # 確保所有節點狀態為Ready
kubectl get pods -A # 檢查系統組件Pod是否正常運行