k8s删除节点后,重启kubelet节点为啥会自动加入集群

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值