Chuyển đến nội dung chính

第 6 課:初始化第一個 Kubernetes HA 控制平面

為 HA 拓撲建立 kubeadm-config.yaml,在 master1 上執行 kubeadm init,將控制平面端點作為 VIP,處理證書,複製 kubeconfig 並檢查第一個叢集狀態。

🔒 DevSecOps — 第 6 課 第 6 課:初始化 KUBERNETES HA 控制項 第一架飛機

使用 Kubernetes HA 在本地部署微服務

第 2 部分:使用 kubeadm 的 Kubernetes HA 叢集__HTMLTAG_62___

xdev.asia

🎯 課程目標__HTMLTAG_68___

完成本課程後,您將:

  • ✅ 為 HA 拓樸建立 kubeadm 設定檔__HTMLTAG_73___
  • ✅ 成功初始化第一個控制平面
  • ✅ 了解憑證結構與憑證輪替__HTMLTAG_77___
  • ✅ 複製 kubeconfig 並使用 kubectl 存取叢集
  • ✅ 了解堆疊式 etcd 拓樸與外部 etcd

第 1 部分:KUBERNETES HA 拓樸

1.1。堆疊式 etcd 與外部 etcd

選項 A:堆疊式 etcd(大多數情況下建議)

程式碼區塊_0

✅ 伺服器很少 · ✅ 簡單 · ❌ etcd + API 耦合

選項 B:外部 etcd

程式碼區塊_1

✅ 隔離 · ✅ 獨立擴充 · ❌ 需要 6 台伺服器

👉 為本課程選擇堆疊式 etcd — 簡單,足以滿足大多數生產工作負載。僅非常大的叢集(超過 100 個節點)才需要外部 etcd。


第 2 部分:建立 KUBEADM 設定

2.1。 kubeadm-config.yaml 詳細資料

___程式碼區塊_2___

2.2。重要參數解釋

參數 值 意義
controlPlaneEndpoint 10.10.20.100:6443 HAProxy VIP — 所有組件都透過此處連接
podSubnet 10.244.0.0/16 Pod IP 的 CIDR(最多 65,534 個 Pod)
服務子網路 10.96.0.0/12 ClusterIP 服務的 CIDR(1,048,574 個 IP)
模式:ipvs kube-proxy IPVS 負載平衡(當服務很多時比 iptables 更好)
strictARP:正確 kube-proxy MetalLB L2 模式所需
cgroup驅動程式:systemd kubelet 符合containerd SystemdCgroup = true

⚠️ 關鍵: controlPlaneEndpoint 必須指向 VIP (HAProxy),而不是 master1 的 IP。這是 HA 的關鍵要素。


第 3 部分:叢集初始化

3.1。建立審核日誌目錄

___程式碼區塊_3___

3.2。運行 kubeadm init

___程式碼區塊_4___

⚠️ 立即呼叫:___HTMLTAG_178__HTMLTAG_179___

    ___HTMLTAG_181__HTMLTAG_182___--token:用於加入節點(24小時後過期) ___HTMLTAG_185__HTMLTAG_186___--discovery-token-ca-cert-hash:CA 憑證的 SHA256 雜湊 ___HTMLTAG_189__HTMLTAG_190___--certificate-key:用於加入控制平面節點(2小時後過期)

3.3。設定 kubeconfig

___程式碼區塊_5___

第 4 部分:憑證結構

4.1。架構證書

___程式碼區塊_6___

4.2。檢查憑證是否過期

___程式碼區塊_7___

第 5 部分:驗證 HA 準備情況

5.1。透過 VIP 檢查 API 伺服器

___程式碼區塊_8___

5.2。保存連線命令(重要!)

___程式碼區塊_9___

💡 重點

    ___HTMLTAG_214__HTMLTAG_215___controlPlaneEndpoint 必須指向 VIP (HAProxy),而不是特定 IP ___HTMLTAG_218__HTMLTAG_219___堆疊式 etcd 對於大多數部署而言足夠好,etcd 在控制平面上運行 ___HTMLTAG_222__HTMLTAG_223___--upload-certs 標誌自動分發用於加入控制平面的憑證 ___HTMLTAG_226__HTMLTAG_227___令牌將在 24 小時後過期,憑證金鑰將在 2 小時後過期 — 必須盡快儲存並加入節點 ___HTMLTAG_230__HTMLTAG_231___ipvs 模式 + strictARP 對於 kube-proxy 是 MetalLB 的要求 ___HTMLTAG_234__HTMLTAG_235___節點狀態NotReady在安裝CNI (Cilium)之前是正常的

🎯 練習

練習 1:初始化控制平面__HTMLTAG_243___
  • 在 master1 上建立 kubeadm-config.yaml
  • 執行 kubeadm init --config --upload-certs
  • 設定 kubeconfig,驗證 kubectl 取得節點
  • 呼叫連線指令

練習 2:驗證憑證

  • 列出 /etc/kubernetes/pki/
  • 中的所有憑證
  • 執行 kubeadm 憑證檢查過期
  • 透過 VIP 驗證 API 伺服器:curl -sk https://VIP:6443/healthz

📚 下一篇文章

在第7課:加入控制平面與工作節點中,我們將master2、master3加入HA控制平面並將工作節點加入叢集。