← 返回上一頁
Kubernetes

二進位方式手動安裝 Kubernetes v1.28.0 完整教學:從零開始建構高可用叢集

本頁目錄

前言

雖然現在大多數人都會用 kubeadm 或託管式的雲端服務來建構 Kubernetes 叢集,但如果你想真正理解 K8s 各個元件之間的關係與運作原理,透過二進位方式手動安裝是最好的學習途徑。

這篇文章記錄了從零開始,使用二進位檔案手動部署一套具備高可用性的 Kubernetes v1.28.0 叢集的完整過程。整個過程涵蓋環境準備、憑證產生、元件配置、網路插件安裝到最終驗證。

環境規劃

主機名稱 IP 位址 角色 主要元件
Master01 YOUR_MASTER1_IP Master kube-apiserver, kube-controller-manager, kube-scheduler, etcd, kubelet, kube-proxy, haproxy, keepalived
Master02 YOUR_MASTER2_IP Master 同上
Master03 YOUR_MASTER3_IP Master 同上
Node01 YOUR_NODE1_IP Worker kubelet, kube-proxy
Node02 YOUR_NODE2_IP Worker kubelet, kube-proxy
VIP YOUR_VIP_IP 虛擬 IP

網段規劃:

  • 主機網段:YOUR_HOST_SUBNET/24
  • Service 網段:10.96.0.0/12
  • Pod 網段:172.16.0.0/12

整體安裝流程概覽

整個安裝過程分為 16 個步驟,我將每個步驟的核心要點整理如下:

Step 1:基礎環境配置

  • 配置靜態 IP 位址(支援 IPv4/IPv6 雙棧)
  • 設定主機名稱與 /etc/hosts
  • 配置 YUM/APT 軟體源
  • 安裝基礎工具(wget, vim, net-tools, git, curl 等)
  • 關閉防火牆、SELinux、Swap
  • 配置時間同步(chrony)
  • 載入核心模組(overlay, br_netfilter)
  • 調整核心參數(sysctl:開啟 IP 轉發、bridge-nf-call-iptables 等)
  • 配置 IPVS 模組
  • 配置 SSH 免密登入

Step 2:安裝容器執行環境

有兩種選擇:

  • Containerd(推薦):Kubernetes 1.24 之後已移除 dockershim,建議直接使用 Containerd
  • Docker + cri-dockerd:如果仍需使用 Docker,需要額外安裝 cri-dockerd 作為 CRI 介面

同時下載 K8s 和 etcd 的二進位檔案,解壓並分發到各節點。

Step 3:產生 TLS 憑證

這是二進位安裝中最繁瑣但也最重要的步驟。需要產生以下憑證:

憑證 用途
etcd CA + 伺服器/客戶端憑證 etcd 叢集內部通訊加密
Kubernetes CA K8s 元件間的信任根
kube-apiserver 憑證 API Server 對外服務的 TLS
kube-controller-manager 憑證 Controller Manager 與 API Server 通訊
kube-scheduler 憑證 Scheduler 與 API Server 通訊
kube-proxy 憑證 kube-proxy 與 API Server 通訊
admin 憑證 kubectl 管理用
Front Proxy CA + 憑證 API Aggregation 使用
Service Account 金鑰對 簽發和驗證 ServiceAccount Token

使用 cfssl 工具產生所有憑證,並分發到對應節點。

Step 4:配置 etcd 叢集

在三個 Master 節點上配置 etcd 叢集,每個節點都有自己的 etcd 配置檔與 systemd service。etcd 使用 TLS 加密通訊,叢集模式為靜態成員發現。

Step 5:高可用配置

提供兩種高可用方案:

  1. NGINX 方案:在每個節點上部署 NGINX 做 4 層反向代理,將 kube-apiserver 的請求負載均衡到三個 Master
  2. Keepalived + HAProxy 方案:使用 VIP 實現 API Server 的高可用,HAProxy 負責負載均衡,Keepalived 負責 VIP 漂移

Step 6:配置 K8s 核心元件

  • kube-apiserver:配置 Service、審計策略、准入控制器、etcd 連線等
  • kube-controller-manager:配置叢集簽名憑證、Service Account 金鑰、CIDR 分配等
  • kube-scheduler:配置排程策略

每個元件都建立對應的 systemd service 檔案和 kubeconfig。

Step 7:TLS Bootstrapping 配置

配置 kubelet 的 TLS Bootstrapping 機制,讓 Worker 節點的 kubelet 可以自動向 API Server 申請憑證。需要建立 bootstrap token 和對應的 ClusterRoleBinding。

Step 8:Worker 節點配置

在 Worker 節點上配置 kubelet 和 kube-proxy:

  • kubelet 負責管理節點上的 Pod 生命週期
  • kube-proxy 負責實作 Service 的網路轉發(IPVS 模式)

Step 9:安裝 CNI 網路插件

提供兩個選擇:

  • Calico:成熟穩定,支援 NetworkPolicy
  • Cilium:基於 eBPF,效能更好,功能更豐富

Step 10-11:安裝核心附加元件

  • CoreDNS:叢集內部 DNS 服務
  • Metrics Server:提供資源使用率指標,支援 HPA 和 kubectl top

Step 12:叢集驗證

完整的驗證流程包括:

  1. 部署 Pod 並確認正常運行
  2. 驗證 DNS 解析(同 namespace 和跨 namespace)
  3. 確認各節點可存取 kubernetes SVC 的 443 和 kube-dns 的 53 端口
  4. 驗證 Pod 之間的連通性
  5. 測試多副本部署的分散情況

Step 13-14:安裝管理介面

  • Kubernetes Dashboard:Web UI 管理介面
  • Ingress Controller:七層流量入口

Step 15-16:額外功能

  • IPv6 雙棧測試
  • kubectl 命令列自動補全

為什麼要學二進位安裝?

在實際生產中,我並不建議所有人都用二進位方式安裝 K8s——kubeadm 或託管服務在大多數場景下是更好的選擇。但二進位安裝有它獨特的學習價值:

  1. 深入理解各元件的角色與依賴關係:你會清楚知道 API Server 需要哪些憑證、Controller Manager 如何連接 etcd 等
  2. 憑證體系的完整認知:手動產生憑證的過程讓你真正理解 K8s 的安全架構
  3. 排錯能力提升:遇到叢集問題時,你知道每個元件的配置在哪裡、日誌怎麼看
  4. 自訂能力更強:可以精確控制每個元件的啟動參數

注意事項

  • 文中的 IP 位址、密碼、Token 等敏感資訊都需要根據你自己的環境替換
  • 建議在虛擬機環境中先練習,確認流程無誤後再用於正式環境
  • Kubernetes 1.24+ 已移除 dockershim,優先選擇 Containerd 作為容器執行環境
  • 生產環境務必啟用 RBAC、NetworkPolicy 和審計日誌

參考資料

分享這篇
X LinkedIn Facebook Hacker News Reddit

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料