一.K8S高可用集群配置概述
序言:本文從一個小白的視角進行K8S的研究和部署,采用二進制的方式是為了更清楚了分解部署流程及了解這個集群是怎么運作的,加上ansible+shell是方便在這個過程中,遇到了問題,我們可以不斷的快速重復部署來測試和研究問題的所在點,本文的架構圖是由博主繪制,但是可能不是完全正確,有問題可以留言指出,大家一起學習進步~
1.主機配置清單
2.各應用及組件版本清單
3.架構及運行原理圖
4.部署文件目錄概覽
4.1.目錄結構及概述
├── k8s # Kubernetes 相關文件的根目錄
│ ├── containerd # 容器運行時相關文件
│ │ ├── cni-plugins-linux-amd64-v1.4.1.tgz # CNI 插件壓縮包
│ │ ├── containerd-1.7.14-linux-amd64.tar.gz # containerd 二進制文件壓縮包
│ │ ├── containerd.service # systemd 服務文件
│ │ ├── crictl-v1.26.0-linux-amd64.tar.gz # CRI 工具壓縮包
│ │ └── runc.amd64 # runc 二進制文件
│ ├── image (此目錄為離線鏡像包,為防止在線拉取異常后可手動導入用) # Kubernetes 鏡像文件
│ │ ├── docker.io_kubernetesui_dashboard_v2.7.0.tar
│ │ ├── docker.io_kubernetesui_metrics-scraper_v1.0.8.tar
│ │ ├── registry.cn-hangzhou.aliyuncs.com_chenby_cni_v3.26.1.tar
│ │ ├── registry.cn-hangzhou.aliyuncs.com_chenby_coredns_v1.10.0.tar
│ │ ├── registry.cn-hangzhou.aliyuncs.com_chenby_kube-controllers_v3.26.1.tar
│ │ ├── registry.cn-hangzhou.aliyuncs.com_chenby_metrics-server_v0.5.2.tar
│ │ └── registry.cn-hangzhou.aliyuncs.com_chenby_node_v3.26.1.tar
│ ├── pkg # 配置文件和工具包
│ │ ├── calico.yaml # Calico 網絡插件配置文件
│ │ ├── cfssl_1.6.5_linux_amd64 # CFSSL 二進制文件
│ │ ├── cfssljson_1.6.5_linux_amd64 # CFSSL JSON 處理工具
│ │ ├── dashboard-user.yaml # Dashboard 用戶配置文件
│ │ ├── libseccomp-2.5.1-1.el8.x86_64.rpm # libseccomp RPM 包
│ │ └── recommended.yaml # Kubernetes 圖形化配置文件
│ ├── pki (此目錄文件均為部署中生成,后腳本自動拷貝備份至此,部署前為空置 # 公鑰基礎設施相關文件
│ │ ├── admin.csr # 管理員證書簽名請求
│ │ ├── admin-csr.json # 管理員 CSR JSON 文件
│ │ ├── admin-key.pem # 管理員私鑰
│ │ ├── admin.kubeconfig # 管理員 kubeconfig 文件
│ │ ├── admin.pem # 管理員證書
│ │ ├── apiserver.csr # API 服務器證書簽名請求
│ │ ├── apiserver-csr.json # API 服務器 CSR JSON 文件
│ │ ├── apiserver-key.pem # API 服務器私鑰
│ │ ├── apiserver.pem # API 服務器證書
│ │ ├── bootstrap-kubelet.kubeconfig # kubelet 啟動配置文件
│ │ ├── bootstrap.secret.yaml # 啟動密鑰的 YAML 配置
│ │ ├── ca-config.json # CA 配置文件
│ │ ├── ca.csr # CA 證書簽名請求
│ │ ├── ca-csr.json # CA CSR JSON 文件
│ │ ├── ca-key.pem # CA 私鑰
│ │ ├── ca.pem # CA 證書
│ │ ├── controller-manager.csr # 控制器管理器證書簽名請求
│ │ ├── controller-manager-key.pem # 控制器管理器私鑰
│ │ ├── controller-manager.kubeconfig # 控制器管理器 kubeconfig 文件
│ │ ├── controller-manager.pem # 控制器管理器證書
│ │ ├── coredns.yaml # CoreDNS 配置文件
│ │ ├── etcd-ca-csr.json # etcd CA CSR JSON 文件
│ │ ├── etcd-csr.json # etcd 證書簽名請求
│ │ ├── front-proxy-ca.csr # 前端代理 CA 證書簽名請求
│ │ ├── front-proxy-ca-csr.json # 前端代理 CA CSR JSON 文件
│ │ ├── front-proxy-ca-key.pem # 前端代理 CA 私鑰
│ │ ├── front-proxy-ca.pem # 前端代理 CA 證書
│ │ ├── front-proxy-client.csr # 前端代理客戶端證書簽名請求
│ │ ├── front-proxy-client-csr.json # 前端代理客戶端 CSR JSON 文件
│ │ ├── front-proxy-client-key.pem # 前端代理客戶端私鑰
│ │ ├── front-proxy-client.pem # 前端代理客戶端證書
│ │ ├── kubelet-csr.json # kubelet 證書簽名請求
│ │ ├── kube-proxy.csr # kube-proxy 證書簽名請求
│ │ ├── kube-proxy-csr.json # kube-proxy CSR JSON 文件
│ │ ├── kube-proxy-key.pem # kube-proxy 私鑰
│ │ ├── kube-proxy.kubeconfig # kube-proxy kubeconfig 文件
│ │ ├── kube-proxy.pem # kube-proxy 證書
│ │ ├── manager-csr.json # 管理員證書簽名請求
│ │ ├── metrics-server.yaml # 指標服務器配置文件
│ │ ├── sa.key # 服務賬戶私鑰
│ │ ├── sa.pub # 服務賬戶公鑰
│ │ ├── scheduler.csr # 調度器證書簽名請求
│ │ ├── scheduler-csr.json # 調度器 CSR JSON 文件
│ │ ├── scheduler-key.pem # 調度器私鑰
│ │ ├── scheduler.kubeconfig # 調度器 kubeconfig 文件
│ │ └── scheduler.pem # 調度器證書
│ ├── start # 啟動腳本和配置
│ │ ├── 1-passwd.sh # 批量免密登錄腳本
│ │ ├── 2-start.sh # 主機環境初始化腳本
│ │ ├── 3-containerd.sh # 容器服務部署腳本
│ │ ├── 4-k8stargz.sh # K8S 組件部署腳本
│ │ ├── 5-pki.sh # K8S 集群證書配置生成腳本
│ │ ├── 6-cfssl.sh # CFSSL 工具部署腳本
│ │ ├── 7-certs.sh # K8S 集群證書生成與分發腳本
│ │ ├── 8-etcdyml.sh # etcd 配置生成與分發腳本
│ │ ├── 9-haproxy.sh # HAProxy 安裝與配置腳本
│ │ ├── 10-keepalived.sh # Keepalived 安裝與配置腳本
│ │ ├── 11-apiserver.sh # kube-apiserver 服務配置腳本
│ │ ├── 12-kube_controller_manager.sh # kube-controller-manager 服務配置腳本
│ │ ├── 13-kube-scheduler.sh # kube-scheduler 服務配置腳本
│ │ ├── 14-tlsbootstrapping.sh # TLS Bootstrapping 配置腳本
│ │ ├── 15-kubelet.sh # Kubelet 服務配置腳本
│ │ ├── 16-kubeproxy.sh # Kube-proxy 服務配置腳本
│ │ ├── ansible_group (部署前按需修改) # Ansible 組配置文件,部分腳本引用
│ │ └── start_variables (部署前按需修改) # 通用變量配置文件,所有腳本均有引用
│ └── targz # 壓縮包目錄
│ ├── etcd-v3.5.6-linux-amd64.tar.gz # etcd 壓縮包
│ └── kubernetes-server-linux-amd64.tar.gz # Kubernetes 服務器壓縮包
4.2.主要壓縮包下載地址
cni-plugins-linux-amd64-v1.4.1.tgz
containerd-1.7.14-linux-amd64.tar.gz
crictl-v1.26.0-linux-amd64.tar.gz
runc.amd64
etcd-v3.5.6-linux-amd64.tar.gz
kubernetes-server-linux-amd64.tar.gz
其他文件在本文中均已寫出或另在文件概述中附加了原版文件下載地址。
5.腳本文件概述
1-passwd.sh(批量免密登錄腳本)
腳本名:1-passwd.sh(批量免密登錄腳本)
執行方式:master 組第一個主機上切換至共享目錄 /share/k8s/start 目錄下,./腳本名 執行。
腳本目標:自動化配置集群所有主機的 SSH 免密登錄,并分發公用變量文件。
運行邏輯:
1. 加載通用變量 → 2. 生成 SSH 密鑰 → 3. 安裝 sshpass → 4. 交互式輸入密碼 → 5. 分發公鑰至所有主機 → 6. Ansible 檢查 → 7. 分發變量文件至所有主機
生成的文件:
~/.ssh/id_rsa(SSH 私鑰)
~/.ssh/id_rsa.pub(SSH 公鑰)
引用的文件:
/share/k8s/start/start_variables(變量文件)
/share/k8s/start/ansible_group(Ansible 主機清單文件)
2-start.sh(主機環境初始化腳本)
腳本名:2-start.sh(主機環境初始化腳本)
執行方式:master組第一個主機上使用ansible對all組執行執行
腳本目標:自動化配置系統環境,包括主機映射、共享目錄掛載、主機名設置、防火墻關閉、內核優化等,為后續部署(如 Kubernetes)做好準備。
運行邏輯:
1. 加載通用變量 → 2. 添加主機映射 → 3. 掛載共享目錄 → 4. 設置主機名 → 5. 關閉防火墻 → 6. 清除 iptables 規則 → 7. 關閉 SELinux → 8. 關閉 Swap → 9. 禁用 IPv6 → 10. 配置阿里云 YUM 源 → 11. 安裝工具包 → 12. 配置 Ansible → 13. 配置 NTP 時間同步 → 14. 加大文件描述符 → 15. 內核優化 → 16. 加載 br_netfilter 模塊
生成的文件:
/etc/hosts(更新主機映射)
/etc/fstab(更新掛載配置)
/etc/default/grub(更新 GRUB 配置)
/etc/yum.repos.d/CentOS-Base.repo(阿里云 YUM 源)
/etc/yum.repos.d/epel.repo(EPEL 源)
/etc/ansible/ansible.cfg(Ansible 配置)
/etc/sysctl.conf(內核優化配置)
/etc/sysctl.d/k8s.conf(K8S 內核優化配置)
引用的文件:
/tmp/start_variables(1-passwd.sh分發的公用變量文件)
/etc/hosts(主機映射文件)
3-containerd.sh(容器服務部署腳本)
腳本名:3-containerd.sh(容器服務部署腳本)
執行方式:master組第一個主機上使用ansible對all組執行執行
腳本目標:自動化安裝和配置 Containerd 容器運行時,包括相關工具(如 runc、CNI 插件、crictl)的安裝和配置,為 Kubernetes 部署做好準備。
運行邏輯:
1. 拷貝 Containerd 相關文件 → 2. 安裝 Containerd → 3. 配置 Containerd 服務 → 4. 生成默認配置文件 → 5. 修改容器鏡像源 → 6. 配置 Systemd Cgroup 驅動 → 7. 重啟 Containerd → 8. 安裝 runc → 9. 安裝 CNI 插件 → 10. 配置 crictl 工具
生成的文件:
/etc/systemd/system/containerd.service(Containerd 服務文件)
/etc/containerd/config.toml(Containerd 配置文件)
/etc/crictl.yaml(crictl 配置文件)
引用的文件:
/share/k8s/containerd/*(Containerd 安裝包和配置文件)
/share/k8s/pkg/libseccomp-2.5.1-1.el8.x86_64.rpm(libseccomp 依賴包)
4-k8stargz.sh(K8S組件部署腳本)
腳本名:4-k8stargz.sh(K8S組件部署腳本)
執行方式:master 組第一個主機上切換至共享目錄 /share/k8s/start 目錄下,./腳本名 執行。
腳本目標:自動化部署 Kubernetes 和 etcd 的二進制文件到所有節點,并創建必要的目錄結構,為 Kubernetes 集群的初始化做好準備。
運行邏輯:
1. 加載變量文件 → 2. 解壓 Kubernetes 二進制文件 → 3. 解壓并移動 etcd 二進制文件 → 4. 驗證版本 → 5. 從 Ansible 分組文件中提取 Master 和 Worker 節點 → 6. 將二進制文件復制到 Master 節點 → 7. 將二進制文件復制到 Worker 節點 → 8. 在所有節點上創建 CNI 和其他配置目錄
生成的文件:
/usr/local/bin/kube{let,ctl,-apiserver,-controller-manager,-scheduler,-proxy}(Kubernetes 二進制文件)
/usr/local/bin/etcd*(etcd 二進制文件)
/opt/cni/bin(CNI 插件目錄)
/etc/kubernetes/manifests/(Kubernetes 靜態 Pod 目錄)
/etc/systemd/system/kubelet.service.d/(Kubelet 服務配置目錄)
/var/lib/kubelet(Kubelet 數據目錄)
/var/log/kubernetes(Kubernetes 日志目錄)
引用的文件:
/share/k8s/start/start_variables(變量文件)
/share/k8s/start/ansible_group(Ansible 分組文件)
/share/k8s/targz/kubernetes-server-linux-amd64.tar.gz(Kubernetes 二進制文件包)
/share/k8s/targz/etcd*.tar.gz(etcd 二進制文件包)
5-pki.sh(K8S集群證書配置生成腳本)
腳本名:5-pki.sh(K8S集群證書配置生成腳本)
執行方式:master 組第一個主機上切換至共享目錄 /share/k8s/start 目錄下,./腳本名 執行。
腳本目標:自動化生成 Kubernetes 集群所需的 PKI CSR CA JSON等證書請求文件及其他yaml配置文件,并將其分發到所有 Master 節點,為 Kubernetes 集群的安全通信和組件配置做好準備。
運行邏輯:
1. 加載變量文件 → 2. 提取 Master 節點的主機名和 IP 地址 → 3. 定義源目錄和目標目錄 → 4. 生成各類證書簽名請求(CSR)文件 → 5. 生成集群初始化所需的 YAML 配置文件 → 6. 分發 PKI 文件和配置文件到所有 Master 節點
生成的文件(/share/k8s/pki/也有一份):
CSR 文件
/etc/kubernetes/pki/admin-csr.json(管理員證書請求文件)
/etc/kubernetes/pki/ca-csr.json(CA 證書請求文件)
/etc/kubernetes/pki/apiserver-csr.json(API Server 證書請求文件)
/etc/kubernetes/pki/apiserver-kubelet-client-csr.json(API Server 與 Kubelet 通信證書請求文件)
/etc/kubernetes/pki/controller-manager-csr.json(Controller Manager 證書請求文件)
/etc/kubernetes/pki/front-proxy-ca-csr.json(Front Proxy CA 證書請求文件)
/etc/kubernetes/pki/front-proxy-client-csr.json(Front Proxy 客戶端證書請求文件)
/etc/kubernetes/pki/kubelet-csr.json(Kubelet 證書請求文件)
/etc/kubernetes/pki/metrics-server-csr.json(Metrics Server 證書請求文件)
/etc/kubernetes/pki/scheduler-csr.json(Scheduler 證書請求文件)
集群初始化配置文件
/etc/kubernetes/pki/bootstrap.secret.yaml(Bootstrap Secret 配置文件)
/etc/kubernetes/pki/coredns.yaml(CoreDNS 配置文件)
/etc/kubernetes/pki/metrics-server.yaml(Metrics Server 配置文件)
/etc/kubernetes/pki/kube-controller-manager.yaml(Controller Manager 配置文件)
/etc/kubernetes/pki/kube-scheduler.yaml(Scheduler 配置文件)
/etc/kubernetes/pki/kube-proxy.yaml(Kube Proxy 配置文件)
/etc/kubernetes/pki/kubelet-config.yaml(Kubelet 配置文件)
/etc/kubernetes/pki/kubelet.service(Kubelet 服務文件)
/etc/kubernetes/pki/kube-apiserver.yaml(API Server 配置文件)
/etc/kubernetes/pki/etcd.yaml(etcd 配置文件)
證書文件
/etc/kubernetes/pki/ca.pem(CA 證書)
/etc/kubernetes/pki/ca-key.pem(CA 私鑰)
/etc/kubernetes/pki/apiserver.pem(API Server 證書)
/etc/kubernetes/pki/apiserver-key.pem(API Server 私鑰)
/etc/kubernetes/pki/apiserver-kubelet-client.pem(API Server 與 Kubelet 通信證書)
/etc/kubernetes/pki/apiserver-kubelet-client-key.pem(API Server 與 Kubelet 通信私鑰)
/etc/kubernetes/pki/controller-manager.pem(Controller Manager 證書)
/etc/kubernetes/pki/controller-manager-key.pem(Controller Manager 私鑰)
/etc/kubernetes/pki/front-proxy-ca.pem(Front Proxy CA 證書)
/etc/kubernetes/pki/front-proxy-ca-key.pem(Front Proxy CA 私鑰)
/etc/kubernetes/pki/front-proxy-client.pem(Front Proxy 客戶端證書)
/etc/kubernetes/pki/front-proxy-client-key.pem(Front Proxy 客戶端私鑰)
/etc/kubernetes/pki/kubelet.pem(Kubelet 證書)
/etc/kubernetes/pki/kubelet-key.pem(Kubelet 私鑰)
/etc/kubernetes/pki/metrics-server.pem(Metrics Server 證書)
/etc/kubernetes/pki/metrics-server-key.pem(Metrics Server 私鑰)
/etc/kubernetes/pki/scheduler.pem(Scheduler 證書)
/etc/kubernetes/pki/scheduler-key.pem(Scheduler 私鑰)
引用的文件:
/share/k8s/start/start_variables(變量文件)
/share/k8s/start/ansible_group(Ansible 分組文件)
6-cfssl.sh(CFSSL 工具部署腳本)
腳本名:6-cfssl.sh(CFSSL 工具部署腳本)
執行方式:master 組第一個主機上切換至共享目錄 /share/k8s/start 目錄下,./腳本名 執行。
腳本目標:自動化部署 CFSSL 工具到目標路徑,并驗證安裝結果。
運行邏輯:
1. 檢查本地 CFSSL 工具文件 → 2. 復制文件到目標路徑 → 3. 賦予可執行權限 → 4. 驗證安裝結果
生成的文件:
/usr/local/bin/cfssl(CFSSL 可執行文件)
/usr/local/bin/cfssljson(CFSSLJSON 可執行文件)
引用的文件:
/share/k8s/pkg/cfssl_1.6.5_linux_amd64(本地 CFSSL 文件)
/share/k8s/pkg/cfssljson_1.6.5_linux_amd64(本地 CFSSLJSON 文件)
7-certs.sh(K8S 集群證書生成與分發腳本)
腳本名:7-certs.sh(K8S 集群證書生成與分發腳本)
執行方式:master 組第一個主機上切換至共享目錄 /share/k8s/start 目錄下,./腳本名 執行。
腳本目標:自動化生成 Kubernetes 集群所需的各類證書和配置文件,并將其分發到所有 Master 節點,確保集群的安全通信和組件配置。
運行邏輯:
1. 加載變量文件 → 2. 提取 Master 節點信息 → 3. 檢查 PKI 目錄和文件 → 4. 生成 etcd 證書 → 5. 生成 Kubernetes 根證書 → 6. 生成 front-proxy 證書 → 7. 生成 API Server 證書 → 8. 生成 Controller Manager 證書和 kubeconfig → 9. 生成 Scheduler 證書和 kubeconfig → 10. 生成 Admin 證書和 kubeconfig → 11. 生成 Kube-Proxy 證書和 kubeconfig → 12. 生成 Service Account 密鑰對 → 13. 分發證書和配置文件到所有 Master 節點
生成的文件:
/etc/etcd/ssl/etcd-ca.pem(etcd CA 證書)
/etc/etcd/ssl/etcd-ca-key.pem(etcd CA 私鑰)
/etc/etcd/ssl/etcd.pem(etcd 證書)
/etc/etcd/ssl/etcd-key.pem(etcd 私鑰)
/etc/kubernetes/pki/ca.pem(Kubernetes CA 證書)
/etc/kubernetes/pki/ca-key.pem(Kubernetes CA 私鑰)
/etc/kubernetes/pki/apiserver.pem(API Server 證書)
/etc/kubernetes/pki/apiserver-key.pem(API Server 私鑰)
/etc/kubernetes/pki/controller-manager.pem(Controller Manager 證書)
/etc/kubernetes/pki/controller-manager-key.pem(Controller Manager 私鑰)
/etc/kubernetes/pki/scheduler.pem(Scheduler 證書)
/etc/kubernetes/pki/scheduler-key.pem(Scheduler 私鑰)
/etc/kubernetes/pki/admin.pem(Admin 證書)
/etc/kubernetes/pki/admin-key.pem(Admin 私鑰)
/etc/kubernetes/pki/kube-proxy.pem(Kube-Proxy 證書)
/etc/kubernetes/pki/kube-proxy-key.pem(Kube-Proxy 私鑰)
/etc/kubernetes/pki/sa.key(Service Account 私鑰)
/etc/kubernetes/pki/sa.pub(Service Account 公鑰)
/etc/kubernetes/pki/front-proxy-ca.pem(Front Proxy CA 證書)
/etc/kubernetes/pki/front-proxy-ca-key.pem(Front Proxy CA 私鑰)
/etc/kubernetes/pki/front-proxy-client.pem(Front Proxy 客戶端證書)
/etc/kubernetes/pki/front-proxy-client-key.pem(Front Proxy 客戶端私鑰)
/etc/kubernetes/controller-manager.kubeconfig(Controller Manager kubeconfig)
/etc/kubernetes/scheduler.kubeconfig(Scheduler kubeconfig)
/etc/kubernetes/admin.kubeconfig(Admin kubeconfig)
/etc/kubernetes/kube-proxy.kubeconfig(Kube-Proxy kubeconfig)
引用的文件:
/share/k8s/start/start_variables(變量文件)
/share/k8s/start/ansible_group(Ansible 分組文件)
/etc/kubernetes/pki/*.json(證書簽名請求文件)
8-etcdyml.sh(etcd 配置生成與分發腳本)
腳本名:8-etcdyml.sh(etcd 配置文件生成與分發腳本)
執行方式:master 組第一個主機上切換至共享目錄 /share/k8s/start 目錄下,./腳本名 執行。
腳本目標:自動化生成 etcd 配置文件,并將其分發到所有 Master 節點,同時配置 systemd 服務并啟動 etcd。
運行邏輯:
1. 加載變量文件 → 2. 提取 Master 節點的主機名和 IP 地址 → 3. 生成 etcd 配置文件 → 4. 分發配置文件到各個 Master 節點 → 5. 創建 systemd 服務文件 → 6. 創建證書目錄并鏈接 → 7. 重新加載 systemd 配置并啟動 etcd 服務 → 8. 檢查 etcd 狀態
生成的文件:
/etc/etcd/etcd.config.yml(etcd 配置文件)
/etc/etcd/etcd-主機名.config.yml(etcd 臨時配置文件)
/usr/lib/systemd/system/etcd.service(etcd systemd 服務文件)
引用的文件:
/share/k8s/start/start_variables(變量文件)
/share/k8s/start/ansible_group(Ansible 分組文件)
/etc/kubernetes/pki/etcd/*(etcd 證書文件)
9-haproxy.sh(HAProxy 安裝與配置腳本)
腳本名:9-haproxy.sh(HAProxy 安裝與配置腳本)
執行方式:master 組第一個主機上切換至共享目錄 /share/k8s/start 目錄下,./腳本名 執行。
腳本目標:自動化生成 HAProxy 配置文件,并將其分發到所有 Master 節點,同時安裝并啟動 HAProxy 服務。
運行邏輯:
1. 加載變量文件 → 2. 提取 Master 節點的主機名和 IP 地址 → 3. 生成 HAProxy 配置文件內容 → 4. 將 Master 節點的主機名和 IP 地址添加到 backend 配置中 → 5. 在每個 Master 節點上安裝 HAProxy 并分發配置文件
生成的文件:
/etc/haproxy/haproxy.cfg(HAProxy 配置文件)
/etc/haproxy/haproxy.cfg.bak(HAProxy 配置文件備份)
引用的文件:
/share/k8s/start/start_variables(變量文件)
/share/k8s/start/ansible_group(Ansible 分組文件)
10-keepalived.sh(Keepalived 安裝與配置腳本)
腳本名:10-keepalived.sh(Keepalived 安裝與配置腳本)
執行方式:master 組第一個主機上切換至共享目錄 /share/k8s/start 目錄下,./腳本名 執行。
腳本目標:自動化生成 Keepalived 配置文件,并將其分發到所有 Master 節點,同時安裝并啟動 Keepalived 服務。
運行邏輯:
1. 加載變量文件 → 2. 提取 Master 節點的主機名和 IP 地址 → 3. 確保至少有 3 臺 Master 節點 → 4. 在每個 Master 節點上安裝 Keepalived 并寫入配置文件 → 5. 創建 check_apiserver.sh 腳本 → 6. 啟動并啟用 Keepalived 服務
生成的文件:
/etc/keepalived/keepalived.conf(Keepalived 配置文件)
/etc/keepalived/keepalived.conf.bak(Keepalived 配置文件備份)
/etc/keepalived/check_apiserver.sh(HAProxy 健康檢查腳本)
引用的文件?