温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

K8S delete node 运维的示例分析

发布时间:2021-12-15 18:39:44 来源:亿速云 阅读:209 作者:柒染 栏目:云计算

K8S delete node 运维的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

kubelet v1.16 源码

K8S delete node 运维的示例分析

delete node 流程剖析

目前版本的k8s node 由controller-manager 中的NodeLifecycleController控制,

该版本,不会默认开启TaintBasedEvictions feature, 去对not ready的node进行 NoExecute 污点和容忍的处理。可通过以下命令确认。 grep -r "Controller is using taint based evictions." kube-controller-manager.INFO

而NodeLifecycleController 对node的Delete 事件,并没有相应的handler进行处理。而是通过ZonePodEvictor 的map结构体去记录哪些超时的节点上的pod需要被主动删除。

--node-monitor-grace-period duration Default: 40s
// workers that evicts pods from unresponsive nodes.
zonePodEvictor map[string]*scheduler.RateLimitedTimedQueue

controller会起一个goroutine 每隔NodeEvictionPeriod 时间间隔100ms, doEvictionPass的操作对每个ZonePodEvictor队列 中存储的node节点上的pod进行删除。

doEvictionPass()
  -> nodeutil.DeletePods()
    -> kubeClient.CoreV1().Pods(pod.Namespace).Delete(pod.Name, nil)

node controller 通过monitorNodeStatus goroutine进行node状态监控。

通过把本地informer的node数据 和etcd中的比较,把node节点分为几类(added, deleted,newZoneRepresentatives),观测到node存在added,deleted列表,但获取zone状态为空时,加入newZoneRepresentatives列表,确认后会把node加入ZonePodEvictor队列 。

kubectl delete node 是一个危险的操作,执行后触发节点上所有pod的evict驱逐。请一定谨慎。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

k8s
AI