如何从 Rancher 管理的节点中移除 worker 角色
本文永久链接: https://www.xtplayer.cn/rancher/remove-worker-role-from-a-node-managed-by-rancher/
注意:此文档可能不适合 rancher 创建的自定义 rke2 集群。如果是手动创建的 rke2 集群,可以参考文档 https://docs.rke2.io/install/server_roles 操作。
此文档基于 suse kb 文档翻译:https://support.scc.suse.com/s/kb/Remove-worker-role-from-a-node-managed-by-Rancher?language=en_US
环境
Rancher 版本 2.8.x 及以上。适用于 RKE2 和 K3S Rancher 配置的集群。
问题背景
可能会出现这样的情况:节点池被意外地创建为包含所有角色,并且集群也已配置完毕,但本意是只在节点池中选择控制平面和 etcd 角色。 在这种情况下,您可以按照解决方案中提到的步骤来删除工作角色。
解决方法
步骤一
使用 Rancher UI 中的 编辑配置 选项,通过集群管理编辑集群。找到要进行更改的 MachinePool .取消勾选工作节点角色并保存集群配置。这应该会从集群中移除工作节点角色。但是,如果您通过集群管理执行集群的 编辑 YAML时,仍然看到创建的机器池的值为workerRole: true,则可以将其设置为 workerRole: false。
步骤二
虽然机器池已使用步骤 1 进行了更新,但运行 kubectl get nodes 命令时仍会看到工作节点角色。 这是因为该节点上仍然存在标签 node-role.kubernetes.io/worker=true。您需要使用以下命令将其删除: kubectl label node <nodeName> node-role.kubernetes.io/worker-。现在,当您运行 kubectl get nodes 命令时,您将无法看到节点上的工作节点角色。
步骤 3
如果只选择了 Controlplane 和 etcd 角色,则集群除了控制平面组件之外,将不允许在这些节点上部署常规 pod。 这是由于 Rancher 在选择控制平面和 etcd 角色时向节点添加了某些安全污点。 我们需要将这些污点应用到已移除工作角色的节点上,因为选择工作角色时不会应用这些污点。 要应用污点,您可以运行以下命令:kubectl taint node


