K8S高可用集群-小白學習之二進制部署(ansible+shell)

一.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 健康檢查腳本)
引用的文件?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897379.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【自學筆記】R語言基礎知識點總覽-持續更新

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 R語言基礎知識點總覽1. R語言簡介2. R語言安裝與環境配置3. R語言基礎語法3.1 數據類型3.2 向量與矩陣3.3 數據框與列表 4. 控制結構4.1 條件語句4.2 循環結構 5. 函…

【編譯器】VSCODE搭建ESP32-C3

【編譯器】VSCODE搭建ESP32-C3 文章目錄 [TOC](文章目錄) 前言一、下載配置二、編譯三、燒錄四、參考資料總結 前言 使用工具: 1. 提示:以下是本篇文章正文內容,下面案例可供參考 一、下載配置 安裝IDF,打開例程 二、編譯 三…

通義千問本地配置并實現微調

通義千問本地配置并實現微調 最小Qwen模型大小942mb from modelscope import snapshot_download model_dir = snapshot_download(“qwen/Qwen2.5-0.5B”, cache_dir=“./models2.5”) Qwen2.5-0.5B:942MB from modelscope import snapshot_download model_dir = snapshot_d…

Magento2根據圖片文件包導入產品圖片

圖片包給的圖片文件是子產品的圖片&#xff0c;如下圖&#xff1a;A104255是主產品的sku <?php/*** 根據圖片包導入產品圖片&#xff0c;包含子產品和主產品* 子產品是作為主圖&#xff0c;主產品是作為附加圖片*/use Magento\Framework\App\Bootstrap;include(../app/boot…

力扣146 - LRU緩存

視頻講解 哈希 雙向鏈表 為什么要用雙向鏈表&#xff1f; 快速刪除節點&#xff08;O(1&#xff09;&#xff09; 如果是單鏈表的話&#xff0c;刪除一個節點時&#xff0c;需要從頭遍歷&#xff0c;找到前驅節點&#xff0c;才能修改 prev->next&#xff0c;導致 O(n)…

考研408

是否需要考研&#xff1f; 考研前期準備 目標院校 每年9月10月才會公布 考試時長3小時 數據結構 1.時間復雜度選擇題計算 2.順序表鏈表特點;指針、結構體語法&#xff0c;鏈表結點定義&#xff0c;鏈表頭結點與頭指針,常見的五種鏈 表&#xff0c;鏈表的插入刪除操作;順…

nodejs使用WebSocket實現聊天效果

在nodejs中使用WebSocket實現聊天效果&#xff08;簡易實現&#xff09; 安裝 npm i ws 實現 創建 server.js /*** 創建一個 WebSocket 服務器&#xff0c;監聽指定端口&#xff0c;并處理客戶端連接和消息。** param {Object} WebSocket - 引入的 WebSocket 模塊&#xff0c…

Web網頁制作(靜態網頁):千年之戀

一、是用的PyCharm來寫的代碼 二、代碼中所用到的知識點&#xff08;無 js&#xff09; 這段HTML代碼展示了一個簡單的注冊頁面&#xff0c;包含了多個HTML元素和CSS樣式的應用。 這段HTML代碼展示了一個典型的注冊頁面&#xff0c;包含了常見的HTML元素和表單控件。通過CSS樣…

操作系統知識點23

1.實時操作系統的主要設計目標&#xff1a;在嚴格時間氛圍內對外部請求做出反應。 2.當用戶程序正在處理器上運行時&#xff0c;若此刻取到了一條特權指令&#xff0c;則處理器將停止執行該指令&#xff0c;并產生一個“非法操作”的事件 3.某網絡監控系統中。多個被授權的用…

CSS—網格布局Grid

網格布局grid 提供了帶有行和列的基于網格的布局系統&#xff0c;無需使用浮動和定位。 當 HTML 元素的 display 屬性設置為 grid 或 inline-grid 時&#xff0c;它就會成為網格容器。 更多布局模式可以參考之前的博客&#xff1a; ??????CSS—flex布局、過渡transit…

如何將本地已有的倉庫上傳到gitee (使用UGit)

1、登錄Gitee。 2、點擊個人頭像旁邊的加號&#xff0c;選擇新建倉庫&#xff1a; 3、填寫倉庫相關信息 4、復制Gitee倉庫的地址 5、綁定我們的本地倉庫與遠程倉庫 6、將本地倉庫發布&#xff08;推送&#xff09;到遠程倉庫&#xff1a; 注意到此處報錯&#xff0c;有關于…

【JAVA面試題】Spring、Spring MVC、Spring Boot、Spring Cloud的區別與聯系

在Java生態中&#xff0c;Spring框架及其衍生技術&#xff08;如Spring MVC、Spring Boot、Spring Cloud&#xff09;是開發企業級應用的核心工具。它們在功能、定位和使用場景上各有側重&#xff0c;但又緊密聯系。本文將詳細解析它們的區別與聯系&#xff0c;幫助你在面試中更…

【Linux系統編程】初識系統編程

目錄 一、什么是系統編程1. 系統編程的定義2. 系統編程的特點3. 系統編程的應用領域4. 系統編程的核心概念5. 系統編程的工具和技術 二、操作系統四大基本功能1. 進程管理&#xff08;Process Management&#xff09;2. 內存管理&#xff08;Memory Management&#xff09;3. 文…

Web基礎:HTML快速入門

HTML基礎語法 HTML&#xff08;超文本標記語言&#xff09; 是用于創建網頁內容的 標記語言&#xff0c;通過定義頁面的 結構和內容 來告訴瀏覽器如何呈現網頁。 超文本&#xff08;Hypertext&#xff09; 是一種通過 鏈接&#xff08;Hyperlinks&#xff09; 將不同文本、圖像…

Linux基本操作指令3

1、wget: 這是一個用于從網絡上下載文件的命令行工具。它支持 HTTP、HTTPS 和 FTP 協議。 wget http://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run 2、下載完成后&#xff0c;你可以通過以下命令使文件可執行并運行安裝程序&#xff1a; ch…

Deeplabv3+改進3:在主干網絡中添加NAMAttention|助力漲點!

??【DeepLabv3+改進專欄!探索語義分割新高度】 ?? 你是否在為圖像分割的精度與效率發愁? ?? 本專欄重磅推出: ? 獨家改進策略:融合注意力機制、輕量化設計與多尺度優化 ? 即插即用模塊:ASPP+升級、解碼器 PS:訂閱專欄提供完整代碼 目錄 論文簡介 步驟一 步驟二…

二分查找(遞歸和迭代)– Python

1. 使用遞歸進行二分查找的 Python 程序 創建一個遞歸函數&#xff0c;并將搜索空間的 mid 與 key 進行比較。根據結果&#xff0c;要么返回找到鍵的索引&#xff0c;要么調用下一個搜索空間的遞歸函數。 # 用于遞歸二進制搜索的 Python 3 程序。 # 在注釋中可以找到對舊版 Pyt…

電力場景絕緣子缺陷分割數據集labelme格式1585張4類別

數據集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;僅僅包含jpg圖片和對應的json文件) 圖片數量(jpg文件個數)&#xff1a;1585 標注數量(json文件個數)&#xff1a;1585 標注類別數&#xff1a;4 標注類別名稱:["broken part","broken insulat…

部署說明書

一、打開IIS功能 1、 雙擊“此電腦” 2、 在空白地方右鍵后&#xff0c;點擊屬性 3、 點擊控制面板主頁 4、 查看方式選擇小圖標&#xff0c;然后點擊”程序和功能” 5、點擊”啟用或關閉Windows功能” 6、 勾選”Internet Information Services”勾選“IIS管理服務…

在vue2項目中el-table表格的表頭和內容錯位問題

一、問題描述以及產生原因 問題描述&#xff1a;當el-table表格有橫向滾動條和縱向滾動條&#xff0c;把橫向滾動條拉到最右邊&#xff0c;表格的表頭會和內容錯位&#xff08;表頭和內容列不對齊&#xff09;問題產生原因&#xff1a;在el-table有縱向滾動條時&#xff0c;el…