189 8069 5689

K8Sdeletenode运维的示例分析

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驱逐。请一定谨慎。

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


文章标题:K8Sdeletenode运维的示例分析
地址分享:http://cdxtjz.cn/article/jdjogh.html

其他资讯