Kubernetes集群中为何看不到master或worker角色的节点
原因说明
该现象不是集群异常,是Kubernetes v1.24版本的默认设计逻辑,具体两点:
- 控制面节点显示
control-plane而非旧版本的master,是官方标签规则迭代导致:Kubernetes从v1.20版本开始逐步弃用控制面节点的node-role.kubernetes.io/master标签,v1.24版本的kubeadm初始化集群时,默认仅给控制平面节点打上node-role.kubernetes.io/control-plane标签。kubectl get nodes的ROLES列本身就是读取节点上node-role.kubernetes.io/<role>格式的标签生成展示内容,因此控制面节点显示control-plane完全符合预期。 - 工作节点显示
<none>是kubeadm的默认行为:kubeadm的工作节点加入流程默认不会自动给节点打上node-role.kubernetes.io/worker标签,所有通过kubeadm join加入的工作节点,未手动配置角色标签时ROLES列都会显示为<none>,和集群运行故障无关。当前集群所有节点状态为Ready、组件运行正常、Dashboard无异常,说明集群本身是健康状态。
处理方法
如果需要ROLES列展示符合使用习惯的角色标识,手动给对应节点打标签即可,标签操作不会影响集群现有业务和组件运行:
- 若需要兼容旧版本习惯显示master角色,给控制面节点打对应标签:
kubectl label node slchvdvcybld001 node-role.kubernetes.io/master=
标签值留空即可,执行后控制面节点的ROLES列会同时显示
control-plane,master
- 给两个工作节点打上worker角色标签,执行以下命令:
kubectl label node slchvdvcydtb001 node-role.kubernetes.io/worker= kubectl label node slchvdvcytst001 node-role.kubernetes.io/worker=
操作完成后重新执行kubectl get nodes即可看到对应节点的角色正常显示。
内容的提问来源于stack exchange,提问作者pregmatch
相关产品推荐
相关产品推荐

