最佳答案
引言
Kubernetes(簡稱K8s)作為當今最風行的容器編排平台,其高可用性對出產情況至關重要。本文將深刻探究K8s高可用設置的核心技能,幫助妳輕鬆實現集群的牢固運轉。
高可用性架構
1. 主備形式
K8s集群的高可用性重要依附於主備形式,即經由過程推舉產生領導者,確保集群內只有一個組件運轉。以下是多少個關鍵組件的高可用設置:
a. controller-manager
- 經由過程
--leader-elect
選項把持領導者推舉,確保同一時辰集群內只有一個controller-manager組件運轉。
b. scheduler
- 同樣經由過程
--leader-elect
選項把持領導者推舉,確保同一時辰集群內只有一個scheduler組件運轉。
c. etcd
- etcd經由過程運轉kubeadm方法主動創建集群來實現高可用,安排的節點數為奇數,最多容忍一台呆板宕機。
2. VIP與負載均衡
a. keepalived
- 利用keepalived實現apiserver的高可用,當某個節點毛病時,觸發VIP轉移。
b. haproxy
- haproxy監聽VIP,後端連接全部apiserver實例,供給安康檢查跟負載均衡功能。
3. 集群形式
a. etcd集群
- 安排奇數個etcd實例,樹破一個冗餘、堅固的數據存儲層。
b. kube-apiserver
- 經由過程啟動多個實例並結合負載均衡器實現高可用。
安排現實
1. 情況籌備
- k8s版本:7.8.2003
- 主機設置:4U4G
- 主機列表:master01, master02, master03
- VIP:192.168.213.200
- 私有客棧:docker-registry
2. 安裝與設置
a. 初始化節點
# 在全部集群內呆板上履行以下操縱
# 體系安排 IP 地點牢固(略)
# 設置 hostname(注意修改 hostname)
hostname master1
cat > /etc/hostname << EOF
master1
EOF
# 修改 hosts 文件,增加主機名對 IP 映射(注意修改 IP 地點、hostname,其他呆板順次增加本人的 IP hostname 映射即可)
cat >> /etc/hosts << EOF
192.168.213.181 master1
192.168.213.182 master2
192.168.213.183 master3
EOF
# 封閉防火牆
iptables -F
systemctl stop firewalld && systemctl disable firewalld
# 封閉 selinux
setenforce 0
b. 安排收集插件
# 抉擇一個合適的收集插件(如 Flannel、Calico 等),在主節點上安排該插件
# 以 Flannel 為例
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
c. 參加任務節點
# 利用 kubeadm join 命令將其他節點參加到集群中
# 以 master02 為例
kubeadm join 192.168.213.181:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
d. 驗證集群狀況
# 利用 kubectl get nodes 命令驗證集群中全部節點的狀況能否正常
kubectl get nodes
總結
經由過程以上高可用設置技能跟現實,妳將可能輕鬆實現K8s集群的牢固運轉。在現實利用中,請根據具體須要跟情況停止恰當調劑。