重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
K8S delete node 运维的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
成都创新互联服务项目包括商水网站建设、商水网站制作、商水网页制作以及商水网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,商水网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到商水省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
kubelet v1.16 源码
目前版本的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驱逐。请一定谨慎。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。