kubekey安装的k8s集群,如何将k8s的master节点改为兼做工作节点,如何导出kubekey安装的集群的配置文件

KubeKey v3.1.9 让 master 节点同时作为 worker 节点完整操作(已装好集群)

步骤 1:导出当前集群完整配置(master 节点 root 执行)

kk create config --from-cluster -f k8s-cluster.yaml

 

步骤 2:修改 yaml,把 master 加入 worker 角色组

vim k8s-cluster.yaml

 

找到 roleGroups 部分,修改 worker 数组,加入 k8s-master-01

roleGroups:
  etcd:
  - k8s-master-01
  controlPlane:
  - k8s-master-01
  worker:
  - k8s-master-01    # 新增master节点作为worker
  - k8s-worker-01
  - k8s-worker-02

 

步骤 3:执行 kk 更新集群,给 master 部署 worker 组件

kk upgrade cluster -f k8s-cluster.yaml

 

执行逻辑:
  • KubeKey 会在 master 节点补全 kube-proxy、kubelet worker 相关配置
  • 同步所有节点组件配置、containerd、网络策略
  • 不会重装集群,仅增量更新 worker 角色所需组件
等待命令执行完成,无报错再往下走。
 
步骤 4:移除 master 节点控制平面污点(关键!否则 Pod 调度不上)
# 删除污点(末尾减号代表移除)
kubectl taint node k8s-master-01 node-role.kubernetes.io/control-plane:NoSchedule-

 

验证污点是否清除

kubectl describe node k8s-master-01 | grep Taints

输出 Taints: <none> 代表成功。

 

步骤 5:验证 master 已具备 worker 调度能力

kubectl get nodes

 

正常输出:

NAME             STATUS   ROLES                  AGE   VERSION
k8s-master-01    Ready    control-plane,worker   xxh   v1.26.15
k8s-worker-01   Ready    worker                 xxh   v1.26.15
k8s-worker-02   Ready    worker                 xxh   v1.26.15

 

 补充:生产环境建议(可选)

# 软排斥:优先调度到其他worker,实在没资源才调度master
kubectl taint node k8s-master-01 node-role.kubernetes.io/control-plane:PreferNoSchedule

 

后续想恢复纯 master 不跑业务 Pod:

kubectl taint node k8s-master-01 node-role.kubernetes.io/control-plane:NoSchedule

 

回滚操作(不想 master 跑业务时)

  • 修改 yaml,把 k8s-master-01 从 worker 组删掉
  • 执行 kk upgrade cluster -f k8s-cluster.yaml
  • 重新打上禁止调度污点:
kubectl taint node k8s-master-01 node-role.kubernetes.io/control-plane:NoSchedule

 

posted @ 2026-06-24 23:18  民工黑猫  阅读(8)  评论(0)    收藏  举报