Kubernetes 集群节点初始化与配置同步文档

目的

将 master 节点的 Docker 配置 (daemon.json) 与 Kubernetes admin 配置 (admin.conf) 同步到所有 worker 节点,并保证 Docker cgroup driver、镜像加速、私有仓库及 kubectl 配置一致。


前提条件

  • Master 节点已完成 kubeadm 初始化
  • Worker 节点可以通过 SSH 登录
  • 使用 root 用户或有 sudo 权限的用户

节点列表

node1, node2, node3, node4

步骤一:同步 Docker 配置

1️⃣ 确认 master 节点 Docker 配置

cat /etc/docker/daemon.json

示例内容:

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors":["https://docker.1ms.run"],
  "insecure-registries": ["192.168.31.151:5000"]
}

确保配置正确。


2️⃣ 在每个节点创建 /etc/docker 目录

ssh root@node1 "mkdir -p /etc/docker"
ssh root@node2 "mkdir -p /etc/docker"
ssh root@node3 "mkdir -p /etc/docker"
ssh root@node4 "mkdir -p /etc/docker"

-p 参数保证目录不存在时自动创建。


3️⃣ 将 daemon.json 复制到每个节点

scp /etc/docker/daemon.json root@node1:/etc/docker/daemon.json
scp /etc/docker/daemon.json root@node2:/etc/docker/daemon.json
scp /etc/docker/daemon.json root@node3:/etc/docker/daemon.json
scp /etc/docker/daemon.json root@node4:/etc/docker/daemon.json

4️⃣ 修改权限为 root

ssh root@node1 "chown root:root /etc/docker/daemon.json"
ssh root@node2 "chown root:root /etc/docker/daemon.json"
ssh root@node3 "chown root:root /etc/docker/daemon.json"
ssh root@node4 "chown root:root /etc/docker/daemon.json"

5️⃣ 重载 systemd 并重启 Docker

ssh root@node1 "systemctl daemon-reload && systemctl restart docker"
ssh root@node2 "systemctl daemon-reload && systemctl restart docker"
ssh root@node3 "systemctl daemon-reload && systemctl restart docker"
ssh root@node4 "systemctl daemon-reload && systemctl restart docker"

6️⃣ 检查 Docker 配置是否生效

ssh root@node1 "docker info | grep -i cgroup"
ssh root@node2 "docker info | grep -i cgroup"
ssh root@node3 "docker info | grep -i cgroup"
ssh root@node4 "docker info | grep -i cgroup"

输出应为:

Cgroup Driver: systemd

同时镜像加速和私有仓库配置已生效。


步骤二:同步 Kubernetes admin.conf

1️⃣ 在每个节点创建 .kube 目录

ssh root@node1 "mkdir -p $HOME/.kube"
ssh root@node2 "mkdir -p $HOME/.kube"
ssh root@node3 "mkdir -p $HOME/.kube"
ssh root@node4 "mkdir -p $HOME/.kube"

2️⃣ 复制 master 的 admin.conf 到各节点

scp /etc/kubernetes/admin.conf root@node1:~/.kube/config
scp /etc/kubernetes/admin.conf root@node2:~/.kube/config
scp /etc/kubernetes/admin.conf root@node3:~/.kube/config
scp /etc/kubernetes/admin.conf root@node4:~/.kube/config

3️⃣ 修改文件权限(确保 kubectl 可以访问)

ssh root@node1 "chown $(id -u):$(id -g) $HOME/.kube/config"
ssh root@node2 "chown $(id -u):$(id -g) $HOME/.kube/config"
ssh root@node3 "chown $(id -u):$(id -g) $HOME/.kube/config"
ssh root@node4 "chown $(id -u):$(id -g) $HOME/.kube/config"

4️⃣ 测试 kubectl

在任意节点执行:

kubectl get nodes

应能正确列出所有 master 和 worker 节点。


步骤三:可选批量循环命令

如果希望一次循环完成所有节点操作:

for node in node1 node2 node3 node4; do
  echo "===== 配置 Docker 和 kubeconfig on $node ====="
  ssh root@$node "mkdir -p /etc/docker /root/.kube"
  scp /etc/docker/daemon.json root@$node:/etc/docker/daemon.json
  scp /etc/kubernetes/admin.conf root@$node:~/.kube/config
  ssh root@$node "chown root:root /etc/docker/daemon.json && chown $(id -u):$(id -g) ~/.kube/config"
  ssh root@$node "systemctl daemon-reload && systemctl restart docker"
  ssh root@$node "docker info | grep -i cgroup"
done

✅ 完成后:

  • 所有节点 Docker 配置一致(systemd cgroup driver + 镜像加速 + 私有仓库)
  • 所有节点可使用 kubectl 访问 master API server

更多推荐