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.mzph.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…