ubuntu 26.04,使用kubespray-v2.31.0在线安装5节点高可用k8s-v1.35.4集群

ubuntu 26.04。

集群规划(5 节点)

master节点01,主机名:k8s-master-01,ip:172.21.64.36

master节点02,主机名:k8s-master-02,ip:172.21.64.37

master节点03,主机名:k8s-master-03,ip:172.21.64.38

工作节点01:主机名:k8s-worker-01,ip:172.21.64.39

工作节点02:主机名:k8s-worker-02,ip:172.21.64.40

 
机器名 内网 ip 角色
k8s-master-01 172.21.64.36 master
k8s-master-02 172.21.64.37 master
k8s-master-03 172.21.64.38 master
k8s-worker-01 172.21.64.39 worker
k8s-worker-02 172.21.64.40 worker

 

 

一,全节点卸载清理旧集群 containerd/k8s 所有残留

#!/usr/bin/env bash
set -euo pipefail

echo -e "===== 开始执行【全场景全覆盖】K8s 终极节点重置(适配kubeadm/sealos/kubekey/kubesray/kubeasz/二进制/deb混合残留)====="

# ======================
# 1. 通用集群重置(kubeadm体系)
# ======================
if command -v kubeadm >/dev/null; then
    kubeadm reset -f || true
fi

# ======================
# 2. 停止所有可能存在的服务(全覆盖)
# ======================
systemctl stop \
containerd kubelet \
kube-apiserver kube-controller-manager kube-scheduler kube-lb \
sealos kube-proxy etcd \
2>/dev/null || true

systemctl disable \
containerd kubelet \
kube-apiserver kube-controller-manager kube-scheduler kube-lb \
sealos kube-proxy etcd \
2>/dev/null || true

# ======================
# 3. 清理【二进制部署残留】控制面服务(你之前无限复活的元凶)
# ======================
rm -f /etc/systemd/system/kube-apiserver.service
rm -f /etc/systemd/system/kube-controller-manager.service
rm -f /etc/systemd/system/kube-scheduler.service
rm -f /etc/systemd/system/kube-lb.service
rm -f /etc/systemd/system/etcd.service
rm -f /etc/systemd/system/kube-proxy.service

# ======================
# 4. 清理 Sealos / Kubekey / KubeSray / Kubeasz 专属服务 & 目录
# ======================
# sealos 残留
rm -rf /var/lib/sealos /etc/sealos /root/.sealos
rm -f /etc/systemd/system/sealos.service

# kubekey/kubesray 残留
rm -rf /var/lib/kubekey /etc/kubekey /opt/kubekey
rm -rf /var/lib/kubesphere /etc/kubesphere

# kubeasz 残留
rm -rf /etc/kubeasz /var/lib/kubeasz

# ======================
# 5. 彻底purge卸载deb包(containerd.io、kubeadm、cri-tools全部purge,删除包+配置)
# ======================
apt purge -y --allow-change-held-packages \
    containerd.io containerd \
    kubeadm kubectl kubelet \
    cri-tools kubernetes-cni \
2>/dev/null || true

apt autoremove -y || true
apt autoclean

# 解除版本锁定,保证下次重装无冲突
apt-mark unhold \
    kubeadm kubelet kubectl \
    containerd.io cri-tools kubernetes-cni \
2>/dev/null || true

# ======================
# 6. 彻底清理所有路径 systemd 单元(解决二进制+deb双路径冲突)
# ======================
rm -f /lib/systemd/system/kubelet.service
rm -f /etc/systemd/system/kubelet.service
rm -rf /etc/systemd/system/kubelet.service.d

rm -f /lib/systemd/system/containerd.service
rm -f /etc/systemd/system/containerd.service
rm -rf /etc/systemd/system/containerd.service.d
rm -f /usr/local/lib/systemd/system/containerd.service

# ======================
# 7. 彻底清理所有路径 k8s/容器二进制
# 覆盖:apt/deb / 二进制解压 / kubekey / sealos
# 新增 cni、crictl 二进制清理
# ======================
rm -f /usr/bin/containerd /usr/bin/ctr /usr/bin/crictl /usr/bin/kube*
rm -f /usr/local/bin/containerd /usr/local/bin/ctr /usr/local/bin/crictl /usr/local/bin/kube*
rm -f /opt/kube/bin/* 2>/dev/null || true

# 清理二进制解压的cni插件二进制
rm -rf /opt/cni/bin/* 2>/dev/null || true

# ======================
# 8. 重载 systemd、清除失效状态
# ======================
systemctl daemon-reload
systemctl reset-failed

# ======================
# 9. 绝杀所有残留进程(杜绝复活、端口占用)
# ======================
pkill -9 -f "kube-apiserver|kube-scheduler|kube-controller-manager|kube-lb|kubelet|containerd|sealos|etcd|crictl" 2>/dev/null || true

# ======================
# 10. 清空所有体系数据目录
# ======================

# 先卸载 Calico cgroup 挂载点(否则 rm 报 Operation not permitted)
umount -R /var/run/calico/cgroup 2>/dev/null || true
umount -R /run/calico/cgroup 2>/dev/null || true

# /var/run 和 /run 是 tmpfs,重启自动清空,无需 rm
rm -rf \
/var/lib/containerd \
/var/lib/cri \
/etc/cni \
/opt/cni \
/root/.kube \
/etc/containerd \
/etc/kubernetes \
/var/lib/kubelet \
/var/lib/etcd \
/var/lib/calico \
/var/lib/sealos \
/var/lib/nerdctl \
/var/lib/kubekey \
/var/lib/kubesphere \
/etc/kubeasz \
/etc/cni/net.d/*

# ======================
# 11. 重置网络栈(解决多工具残留网卡、iptables错乱)
# ======================
iptables -F && iptables -t nat -F && iptables -X && ipvsadm -C
ip link del tunl0 2>/dev/null || true
ip link del cni0 2>/dev/null || true
ip link del flannel.1 2>/dev/null || true
ip link del vxlan.calico 2>/dev/null || true

echo -e "✅ 【k8s残留】清理完成!已purge卸载 containerd.io、cri-tools、kubernetes-cni"

 

二、前置环境配置,所有节点统一前置初始化脚本(所有机器执行)

1. 修改主机名

# master-01节点执行
hostnamectl set-hostname k8s-master-01
# master-02节点执行
hostnamectl set-hostname k8s-master-02
# master-03节点执行
hostnamectl set-hostname k8s-master-03
# worker-01节点执行
hostnamectl set-hostname k8s-worker-01
# worker-02节点执行
hostnamectl set-hostname k8s-worker-02

 

2. 配置 hosts 解析(所有节点统一写入 /etc/hosts)

cat >> /etc/hosts << EOF
172.21.64.36   k8s-master-01
172.21.64.37   k8s-master-02
172.21.64.38   k8s-master-03
172.21.64.39   k8s-worker-01
172.21.64.40   k8s-worker-02
EOF

 

3. 系统内核 & 资源优化

# 关闭永久swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

#关闭 ufw防火墙
systemctl stop ufw
systemctl disable ufw

# 内核转发、iptables桥接
cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1

# 允许绑定本机不存在的VIP(HA/kube-vip核心)
net.ipv4.ip_nonlocal_bind = 1

# 反向路由过滤 全部宽松模式
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.eth0.rp_filter = 2  #eth0替换为真实的网卡名称(非必填)

# ARP应答策略:仅匹配网卡IP才回复
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1  #eth0替换为真实的网卡名称(非必填)

# ARP宣告策略:严格匹配网卡网段
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2  #eth0替换为真实的网卡名称(非必填)

EOF
sysctl -p

# 加载overlay/iptables内核模块
modprobe overlay
modprobe br_netfilter


#系统开机自动加载里面写的内核模块。
echo "overlay" >> /etc/modules-load.d/k8s.conf
echo "br_netfilter" >> /etc/modules-load.d/k8s.conf
# 开启root密码登录
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/#PubkeyAuthentication no/PubkeyAuthentication yes/' /etc/ssh/sshd_config
systemctl restart ssh systemctl enable ssh

#时间同步
apt install chrony -y
systemctl enable --now chronyd
timedatectl set-timezone Asia/Shanghai

 

4 安装所有软件包

apt update && apt upgrade -y
apt install -y curl wget openssl ca-certificates gnupg lsb-release openssh-server sshpass tar unzip ipset ipvsadm conntrack socat lvm2

 

5. Master 节点单独执行 SSH 免密分发

# master节点生成密钥
ssh-keygen -t ed25519 -N "" -f /root/.ssh/id_ed25519
# 分发公钥
sshpass -p "root密码" ssh-copy-id root@172.21.64.36
sshpass -p "root密码" ssh-copy-id root@172.21.64.37
sshpass -p "root密码" ssh-copy-id root@172.21.64.38
sshpass -p "root密码" ssh-copy-id root@172.21.64.39
sshpass -p "root密码" ssh-copy-id root@172.21.64.40

# 验证免密连通
ssh root@172.21.64.36 hostname
ssh root@172.21.64.37 hostname
ssh root@172.21.64.38 hostname
ssh root@172.21.64.39 hostname
ssh root@172.21.64.40 hostname

 

6. 批量校验所有节点 SSH 连通性(最关键前置检查)

nodes=(172.21.64.36 172.21.64.37 172.21.64.38 172.21.64.39 172.21.64.40)
for ip in ${nodes[@]};
do
  echo "=== 测试 $ip SSH ==="
  sshpass -p "你的root密码" ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no root@$ip "hostname; echo 连接正常"
done

 

 三,选一台master节点安装ansible管控机(推荐master-01)

1. 目录规划

/data/kubespray/
├── kubespray-src                  # kubespray源码目录,git切换v2.31 / v2.32 / v2.33
├── venv/
│   ├── venv-ks-v2.31              # v2.31专属虚拟环境
│   ├── venv-ks-v2.32              # v2.32专属虚拟环境
│   └── venv-ks-v2.33              # 未来新版本
├── inv/
│   ├── dev-k8s                    # 开发集群 inventory
│   ├── test-k8s                   # 测试集群 inventory
│   └── prod-k8s                   # 生产集群 inventory
└── logs/                          # 执行日志统一存放

 

2. 管控机安装依赖

#系统自带python3-v3.14,不需要安装python3
apt update && apt install -y python3-pip python3-venv git
mkdir -p /data/kubespray
cd /data/kubespray
git clone https://github.com/kubernetes-sigs/kubespray.git kubespray-src
cd kubespray-src
#查看当前分枝(默认是master分枝)
git branch
# 建议切换到最新的固定分枝,不要用master分枝
git fetch --tags 
git checkout v2.31.0

ubuntu26 / 24 / 22 / 20 / 18默认已经安装了python3,所以其它节点不需要额外安装python3了。

查看tag命令,列出当前有哪些tag:

git tag

 

3. 使用虚拟环境安装ansible(python环境隔离)

# 1. 创建虚拟环境目录
mkdir -p /data/kubespray/venv/venv-ks-v2.31
# 2. 创建虚拟环境
python3 -m venv /data/kubespray/venv/venv-ks-v2.31
# 3. 激活虚拟环境
source /data/kubespray/venv/venv-ks-v2.31/bin/activate
# 4. 进入源码目录安装依赖
cd /data/kubespray/kubespray-src
pip install -r requirements.txt
# 校验ansible版本
ansible --version

 

4. 后续执行 ansible-playbook 前必须先激活虚拟环境

source /data/kubespray/venv/venv-ks-v2.31/bin/activate

退出虚拟环境

deactivate

 

四. kubespray集群配置文件修改(在ansible管控机)

1. 查看支持哪些k8s版本

cat roles/kubespray_defaults/vars/main/checksums.yml

找到kubeadm_checksums:节点,就是支持的k8s版本 

kubeadm_checksums:
  arm64:
    1.36.3: sha256:276cfbdc43b10fef663288cc1ed76abf77b1b7f700e9f1c053cb5dc3115484de
    1.36.2: sha256:c638f0b4d9b216df8d5bcf41473b81e59143aa0a690392c224e97e6ec91ed3e9
    1.36.1: sha256:82fa5119d6687f721cd80cb278bac08f54cc5d3fd0320c66cef9394d42e153a9
    1.36.0: sha256:43d4ca3a9f8f49c2c2f6db2c056de1a00fa110a3dd5aa68a74fbc52e42d96c01
    1.35.7: sha256:b8c3a1145a9875f046e9b66d5cd5810431e92ae1d5abca82f0151694cd257928
    1.35.6: sha256:b6acbcd4ab8a18759191a2d6373d84a80f3cb47ad5460603df5fe8887b139716
    1.35.5: sha256:24658203703a8bfa2813571881c1ba08f8cc4aff714a5b43bbf417af7d3cf229
    1.35.4: sha256:e8f6b5bee3e2c8b5965f4ae65c2ae04e3f9f426d2458a1e2f159e824d419d92c
    1.35.3: sha256:647a9821c37a27bcaf6d679a191732b686c01cecd0219d5e579129f0cfd62cef
    1.35.2: sha256:b540b734e9eaeb134e2cb7c7803dc62160589ac3b2615d717ce41acb22bbec98
    1.35.1: sha256:80097a3c4ef824f4edfe131d2bd429772c4be3a460c42a44f2320164a917de32
    1.35.0: sha256:1dac7dc2c6a56548bbc6bf8a7ecf4734f2e733fb336d7293d84541ebe52d0e50
    1.34.10: sha256:550f1d6d7e73b91cc77d10f89a94e745d800e49b4b7fc509c1a670ffc6401b1b
    1.34.9: sha256:892789444a830b16eb1c8d3e09a878a9ced6ac18c5765e5bb9d41123a41ce3ee
    1.34.8: sha256:7b06f4442a7a819fcb4e0697721a2e4a8acda068d66ecfb4e781f213ee804884
    1.34.7: sha256:f0ca19db42757a3612e2a20268209a3843b6eb8c1284f11c5fa7c31d40ed8c8f
    1.34.6: sha256:7878391ea18b276ad69c570dcdaa46f74449a978f8e222f92d99855332a01f62
    1.34.5: sha256:cc8a59c0f04a1d7389790dc872b1c714e4cf4d3ba0c38ca2f4ca1388fb38b774
    1.34.4: sha256:d8028b7e8c8d6c9b3fc3da6bc88d4d0cfb33df1b4b026a7d6e8c35d1471c9f6e
    1.34.3: sha256:697cf3aa54f1a5740b883a3b18a5d051b4032fd68ba89af626781a43ec9bccc3
    1.34.2: sha256:065f7de266c59831676cc48b50f404fd18d1f6464502d53980957158e4cab3a7
    1.34.1: sha256:b0dc5cf091373caf87d069dc3678e661464837e4f10156f1436bd35a9a7db06b
    1.34.0: sha256:6b7108016bb2b74132f7494e200501d6522682c01759db91892051a052079c77

 

2. 生成集群节点清单 inventory

# 复制示例inventory
mkdir -p /data/kubespray/inv/dev-k8s cp
-r inventory/sample/* ../inv/dev-k8s

编辑清单文件 inv/dev-k8s/inventory.ini

vi  ../inv/dev-k8s/inventory.ini

[kube_control_plane]
k8s-master-01 ansible_host=172.21.64.36 ansible_user=root ip=172.21.64.36 etcd_member_name=etcd1
k8s-master-02 ansible_host=172.21.64.37 ansible_user=root ip=172.21.64.37 etcd_member_name=etcd2
k8s-master-03 ansible_host=172.21.64.38 ansible_user=root ip=172.21.64.38 etcd_member_name=etcd3

[etcd:children]
kube_control_plane

[kube_node]
k8s-worker-01 ansible_host=172.21.64.39 ansible_user=root ip=172.21.64.39
k8s-worker-02 ansible_host=172.21.64.40 ansible_user=root ip=172.21.64.40

[k8s_cluster:children]
kube_control_plane
kube_node

 

2. 设置国内下载源

新建china_mirror.yml文件

cat > ../inv/dev-k8s/group_vars/all/china_mirror.yml <<'EOF'
# ====================== 二进制文件下载 DaoCloud ======================
dl_k8s_io_url: "https://files.m.daocloud.io/dl.k8s.io"
github_url: "https://files.m.daocloud.io/github.com"
get_helm_url: "https://files.m.daocloud.io/get.helm.sh"

# ====================== 容器镜像仓库域名替换(Kubespray渲染yaml替换镜像地址) ======================
kube_image_repo: "k8s.m.daocloud.io"
gcr_image_repo: "gcr.m.daocloud.io"
docker_image_repo: "docker.m.daocloud.io"
quay_image_repo: "quay.m.daocloud.io"
github_image_repo: "ghcr.m.daocloud.io"

# ====================== 缓存持久化(脱离/tmp,防止系统自动清理) ======================
# 所有节点二进制文件存放目录
local_release_dir: /opt/kubespray_cache/releases
# download_run_once 模式下,中控节点镜像缓存目录
download_cache_dir: /opt/kubespray_cache/cache
# 部署完成不删除缓存,多次执行可复用
download_keep_remote_cache: true

# ====================== 下载策略(调试阶段注释镜像预分发,规避nerdctl不存在报错) ======================
# download_run_once: true
# download_localhost: true
download_verify_checksum: false
EOF

 

3. 在 inventory 里配置 containerd 镜像加速变量

编辑: ../inv/dev-k8s/group_vars/all/containerd.yml, 追加下面的内容:

注意,开头要多加一个换行

cat >> ../inv/dev-k8s/group_vars/all/containerd.yml <<'EOF'

containerd_registries_mirrors:
  - prefix: registry.k8s.io
    mirrors:
      - host: https://k8s.m.daocloud.io
        capabilities: ["pull", "resolve"]
  - prefix: docker.io
    mirrors:
      - host: https://docker.m.daocloud.io
        capabilities: ["pull", "resolve"]
  - prefix: quay.io
    mirrors:
      - host: https://quay.m.daocloud.io
        capabilities: ["pull", "resolve"]
  - prefix: ghcr.io
    mirrors:
      - host: https://ghcr.m.daocloud.io
        capabilities: ["pull", "resolve"]
EOF

校验containerd.yml配置文件是否合法

ansible localhost -m copy -a "content='{{ lookup('file','../inv/dev-k8s/group_vars/all/containerd.yml') }}' dest=/dev/null"

 

4. 验证变量是否加载成功

ansible all -i ../inv/dev-k8s/inventory.ini -m debug -a "var=containerd_registries_mirrors" -b

5. 执行下载测试命令,不安装组件、不部署集群。

ansible-playbook -i ../inv/dev-k8s/inventory.ini cluster.yml -b --tags download -v

下载失败时打印详细日志:

ansible-playbook -i ../inv/dev-k8s/inventory.ini cluster.yml -b --tags download -v -e unsafe_show_logs=true -e gather_facts=false

 

五,初始化master

1. 执行部署前预检,测试连通性

ansible -i ../inv/dev-k8s/inventory.ini all -m ping

2. 前置环境初始化(关闭 swap、内核模块、sysctl、容器依赖等)

ansible-playbook -i ../inv/dev-k8s/inventory.ini cluster.yml --tags=bootstrap

 

3. 执行安装集群

ansible-playbook -i ../inv/dev-k8s/inventory.ini cluster.yml -b

中-b参数是用sudo权限运行。

如果安装失败,重置集群,深度清理

# 1. 卸载apt旧包(防止二进制自动恢复)
ansible -i ../inv/dev-k8s/inventory.ini all -b -m shell -a "
apt remove -y containerd.io kubeadm kubelet kubectl;
apt autoremove -y;
"

# 2. kubespray官方重置剧本
ansible-playbook -i ../inv/dev-k8s/inventory.ini reset.yml -b

# 3. 深度全盘清理
ansible -i ../inv/dev-k8s/inventory.ini all -b -m shell -a "
systemctl stop kubelet || true;
systemctl stop containerd || true;

# 清理新旧两路kube二进制
rm -f /usr/bin/kubelet /usr/bin/kubeadm /usr/bin/kubectl;
rm -f /usr/local/bin/kubelet /usr/local/bin/kubeadm /usr/local/bin/kubectl;
rm -rf /etc/systemd/system/kubelet.service /etc/systemd/system/kubelet.service.d;

# k8s数据目录
rm -rf /etc/kubernetes;
rm -rf /var/lib/kubelet;
rm -rf /var/lib/etcd;
rm -rf /var/run/kubernetes;
rm -rf /etc/cni;
rm -rf /opt/cni;
rm -rf /root/.kube;

# containerd
rm -rf /etc/containerd;
rm -rf /etc/crictl.yaml;
rm -rf /run/containerd;
rm -rf /var/lib/containerd;

# 清理容器镜像
crictl stop \$(crictl ps -q) 2>/dev/null;
crictl rm \$(crictl ps -a -q) 2>/dev/null;
crictl rmi \$(crictl images -q) 2>/dev/null;

# 网络规则
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X;
ipvsadm -C;

# dns残留配置
rm -rf /etc/systemd/resolved.conf.d/*;
systemctl reset-failed systemd-resolved;

systemctl daemon-reload;
systemctl reset-failed kubelet;
systemctl reset-failed containerd;
"

# 单独修复master01的/dev/null(只执行这台)
ansible -i ../inv/dev-k8s/inventory.ini k8s-master-01 -b -m shell -a "
rm -f /dev/null;
mknod -m 666 /dev/null c 1 3;
systemctl reset-failed systemd-resolved;
"

然后执行第3步重新安装。

 

4,安装成功会输出信息:

PLAY RECAP ***************************************************************************************************************************************************
k8s-master-01              : ok=605  changed=92   unreachable=0    failed=0    skipped=836  rescued=0    ignored=4
k8s-master-02              : ok=516  changed=78   unreachable=0    failed=0    skipped=756  rescued=0    ignored=1
k8s-master-03              : ok=518  changed=79   unreachable=0    failed=0    skipped=754  rescued=0    ignored=1
k8s-worker-01              : ok=423  changed=52   unreachable=0    failed=0    skipped=475  rescued=0    ignored=0
k8s-worker-02              : ok=423  changed=52   unreachable=0    failed=0    skipped=474  rescued=0    ignored=0

Wednesday 12 August 2026  15:46:32 +0800 (0:00:00.274)       0:57:49.368 ******
===============================================================================
download : Download_container | Download image if required ------------------------------------------------------------------------------------------ 785.24s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------ 651.86s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------ 465.96s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------ 195.30s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------ 179.68s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------ 153.59s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------- 85.52s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------- 53.49s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------- 45.94s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------- 38.11s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------- 35.66s
kubernetes/control-plane : Joining control plane node to the cluster. -------------------------------------------------------------------------------- 21.06s
etcd : Gen_certs | Write etcd member/admin and kube_control_plane client certs to other etcd nodes --------------------------------------------------- 17.48s
download : Download_container | Download image if required ------------------------------------------------------------------------------------------- 13.00s
kubernetes/control-plane : Kubeadm | Initialize first control plane node (1st try) ------------------------------------------------------------------- 11.26s
container-engine/crictl : Download_file | Download item ---------------------------------------------------------------------------------------------- 10.95s
container-engine/nerdctl : Download_file | Download item --------------------------------------------------------------------------------------------- 10.51s
container-engine/runc : Download_file | Download item ------------------------------------------------------------------------------------------------ 10.20s
container-engine/containerd : Download_file | Download item ------------------------------------------------------------------------------------------- 9.68s
etcd : Gen_certs | Gather etcd member/admin and kube_control_plane client certs from first etcd node -------------------------------------------------- 8.74s

 

image

 

5. 授予master本地访问权限(在每个master节点执行)

mkdir -p ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config
chmod 600 ~/.kube/config

或者在管控机批量复制到所有master节点

ansible k8s-master-01 -i ../inv/dev-k8s/inventory.ini -m fetch -a "src=/etc/kubernetes/admin.conf dest=./ flat=yes"
cp admin.conf ~/.kube/config
chmod 600 ~/.kube/config

 

5.校验集群

kubectl get nodes
kubectl get cs
kubectl get pods -n kube-system

 

posted @ 2026-08-12 16:08  民工黑猫  阅读(4)  评论(0)    收藏  举报