如何从kubernetes集群注销kubernetes节点

问题描述

我有一个错误地在群集B上注册的节点,而实际上它却在为群集A服务。

“在群集B上注册”意味着我可以从群集B看到kubectl get node上的节点。

我想从群集B中注销该节点,但保持该节点不变。

我知道删除节点的常规过程是:

kubectl drain node xxx
kubectl delete node xxx
# on node
kubeadm reset

但是我不希望删除或传输群集A上节点上的Pod。而且我想确保该节点以后不会自动注册到群集B。

为清楚起见,假设集群A的节点上具有Pod A,集群B的节点上也具有Pod B,我想从集群B中删除节点,但保持Pod A不变。 (顺便问一下,我可以从集群B中看到Pod A吗?)

提前谢谢!

解决方法

要在不删除任何pod的情况下注销节点,请在命令下运行

kubectl delete node nodename

完成此操作后,该节点将不会出现在kubectl get nodes

要使该节点不再自行注册,请登录该节点并使用以下命令停止该节点上的kubelet进程。

systemctl stop kubelet

,

由于此案已经澄清,因此我决定根据以下评论发布社区Wiki 答案:

@mario nvm,我认为一个节点中的不同群集会影响每个群集 其他,实际上他们没有,他们只是共享容器运行时 更像是“只读”,它们具有不同的kubelet 自己在不同的端口上监听。 –李子彦8月17日5:29

还要向其他用户清楚说明这里实际上是什么问题,以及如何解决或简单地解决了这个问题。

因此,如果您以某种方式(例如,将Node的一台物理(或虚拟)计算机用于一个以上的 kubernetes集群,则设计基础架构(我相信这不是很常见)情况)的基础结构如下:

  1. 共享的组件
  • 物理(或虚拟)节点
  • 常见的容器运行时环境(例如docker)
  1. 单独的组件
  • 两个独立的小方块。尽管它们在同一物理/虚拟节点上运行,但它们被配置为在不同的端口上侦听,并且在两个主Nodes (或更具体地,两个不同的主机)中注册kube-apiservers两个不同的kubernetes控制平面的一部分
  • 两个逻辑上独立的kubernetes Nodes ,尽管它们在相同的物理节点/主机上配置,但在逻辑上是完全独立的kubernetes {{1 }},是两个完全不同的 kubernetes集群的一部分,这些集群不会以任何方式相互干扰。

我希望这有助于澄清有关此问题的可能混淆,并在有人有类似疑问时帮助他们。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...