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

浙公网安备 33010602011771号