k8s删除节点后,重启kubelet节点为啥会自动加入集群
kubelet在创建了 Node或者节点上的kubelet执行了自注册操作之后,控制面会检查新的 Node 对象是否合法。Kubernetes 会在内部创建一个 Node 对象作为节点的表示。Kubernetes 检查kubelet向 API 服务器注册节点时使用的字段是否匹配。如果节点是健康的(即所有必要的服务都在运行中),则该节点可以用来运行 Pod。否则,直到该节点变为健康之前,所有的集群活
1. 概述
k8s集群进行节点管理时,需要进行集群扩缩容,即节点添加和删除,这里主要介绍添加节点的两种方式:
- 节点上的
kubelet
向控制面执行自注册; - 手动添加一个 Node 对象。
在创建了 Node 对象或者节点上的 kubelet
执行了自注册操作之后,控制面会检查新的 Node 对象是否合法。
Kubernetes 会在内部创建一个 Node 对象作为节点的表示。Kubernetes 检查 kubelet
向 API 服务器注册节点时使用的 metadata.name
字段是否匹配。 如果节点是健康的(即所有必要的服务都在运行中),则该节点可以用来运行 Pod。 否则,直到该节点变为健康之前,所有的集群活动都会忽略该节点。
说明:
Kubernetes 会一直保存着非法节点对应的对象,并持续检查该节点是否已经变得健康。必须显式地删除该 Node 对象以停止健康检查操作。
Node 对象的名称必须是合法的 DNS 子域名。
2. 节点自注册
当 kubelet 标志 ==–register-node 为 true(默认)==时,它会尝试向 API 服务注册自己。 这是首选模式,被绝大多数发行版选用。
对于自注册模式,kubelet 使用下列参数启动:
--kubeconfig
- 用于向 API 服务器执行身份认证所用的凭据的路径。--cloud-provider
- 与某云驱动 进行通信以读取与自身相关的元数据的方式。--register-node
- 自动向 API 服务注册。--register-with-taints
- 使用所给的污点列表 (逗号分隔的<key>=<value>:<effect>
)注册节点。当register-node
为 false 时无效。--node-ip
- 节点 IP 地址。--node-labels
- 在集群中注册节点时要添加的标签。 (参见 NodeRestriction 准入控制插件所实施的标签限制)。--node-status-update-frequency
- 指定 kubelet 向 API 服务器发送其节点状态的频率。
当 Node 鉴权模式和 NodeRestriction 准入插件被启用后, 仅授权 kubelet 创建/修改自己的 Node 资源。
说明:
当执行kubectl delete node xxxx后,节点就会被从etcd中删除掉,集群中删除该节点,当kubelet重启后,节点会向apiserver服务发起自注册,如果未执行kubeadm reset -f或者集群中的配置未被删除(未执行kubeadm reset -f),可能导致节点自动重新加入集群。
如果在 kubelet 重启期间 Node 配置发生了变化,已经被调度到某 Node 上的 Pod 可能会出现行为不正常或者出现其他问题,例如,已经运行的 Pod 可能通过污点机制设置了与 Node 上新设置的标签相排斥的规则,也有一些其他 Pod, 本来与此 Pod 之间存在不兼容的问题,也会因为新的标签设置而被调到同一节点。 节点重新注册操作可以确保节点上所有 Pod 都被排空并被正确地重新调度
3. 手动注册
如果希望手动创建节点对象,可以设置kubelet flag参数--register-node=false
。
更多推荐
所有评论(0)