背景

​ 某环境,kube-controller-manager反复重启,尝试重建kube-controller-manager的pod,但是过一会问题复现。

如上图,kube-controller-manager反复重启了200多次了。

排查

1.通过kubectl logs -n kube-system kube-controller-manager-xxx查看kube-controller-manager日志,日志显示“failed to renew lease kube-system/kube-controller-manager: failed to tryAcquireOrRenew context deadline exceeded”

2.参考一次kube-controller-manager的bug导致的线上无法调度处理过程,通过kubectl get --raw /api/v1/namespaces/kube-system/endpoints/kube-controller-manager | jq .|grep resource对比正常环境和此异常环境的resourceVersion,异常环境确实kube-controller-manager的endpoint,resourceVersion一直维持不变。

3.通过kubectl delete endpint -n kube-system kube-controller-manager ,删除此endpoint, 发现kube-controller-manager启动成功,同时此endpoint的resourceVersion开始更新,初始以为问题解决,后发现kube-controller-manager反复重启问题依旧,日志报错仍和之前一样。

4.分析kube-controller-manager启动参数,leader-elect设置为true,此为高可用场景下多个kube-controller-manager实例竞争选举哪个实例为leader角色的开关,开启时kube-controller-manger实例启动时会连接kube-api竞争创建名为kube-controller-manager的endpoint,创建成功的kube-controller-manger实例为leader,其他实例为backup,同时leader实例需要定期更新此endpoint,维持leader地位。

5.分析kube-controller-manager日志,显示更新此endpoint超时,初始怀疑kube-api异常,检查kube-api日志未发现异常,同时kubectl操作流畅,通过curl调用kube-api 6443端口也正常响应,排除kube-api本身问题。

6.综上,排除kube-api问题后,怀疑kube-controller-manager实例连接kube-api的网络异常,检查/etc/kubernetes/controller-manager.conf发现,发现问题所在,环境配置了kube-controller-manager通过公网IP去连接kube-api,环境为公有云环境,有内外网IP,通过自动化部署工具创建集群时指定了公网IP,导致kube-controller-manager和kube-scheduler都是通过kube-api所在节点的公网IP去连接,导致连接不稳定。修改相关地址为内网IP后,问题未复现。

总结

1.“failed to renew lease kube-system/kube-controller-manager: failed to tryAcquireOrRenew context deadline exceeded”问题,一般从kube-api和网络链接入手。

2.此环境为非高可用环境,修改leader-elect为false避免kube-controller-manager定期去连接kube-api更新endpoint,理论也可以避免renew超时退出问题。

3.如果特定场景,kube-controller等组件必须通过公网连接kube-api,如果有相关参数配置连接kube-api超时时间也是一种解决思路,笔者搜索kube-controller-manager启动参数,暂未发现与此有关参数,待代码确认是否写死了。

kube-controller-manager反复重启解决的更多相关文章

  1. XP系统无法进入界面 不断的反复重启-解决方法

    XP系统无法进入界面 不断的反复重启-解决方法 XP系统无法进入界面 不断的反复重启-解决方法 一般都是非正常关机导致磁盘受到损坏.需要修复磁盘. 1.插入带PE的u盘,进入PE系统后 2.win+R ...

  2. dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启

    kubernetes(k8s)DNS 服务反复重启解决: k8s.io/dns/pkg/dns/dns.go:150: Failed to list *v1.Service: Get https:// ...

  3. (转)dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启

    转:https://blog.csdn.net/shida_csdn/article/details/80028905 kubernetes(k8s)DNS 服务反复重启解决: k8s.io/dns/ ...

  4. Windows反复重启的可能的解决办法

    Windows反复重启,原因很多,下面提供两个可能的解决办法: 1. 查看BIOS中关于SATA的设置,一般只有两种PCIE和IDE,调整成另外一个试试: 2. 查看BIOS的启动模式,如果是UEFI ...

  5. 针对piix4_smbus ****host smbus controller not enabled的解决方法

    SMBus 目录 SMBus与I2C的差别 SMBus 是 System Management Bus 的缩写,是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯.它主要是希望 ...

  6. [troubleshoot][daily][redhat] 设备反复重启故障排查

    一台服务器设备,反复重启,每天重启数次. 一: 原因分析及初步排异. 1.  硬件,内存主板,一一更换,甚至除了硬盘将整台机器都换掉了,依然重启. 2.  排除电源问题,换了电源线,换了插座,还是重启 ...

  7. kubernetes的Controller Manager

    1. Controller Manager简介 Controller Manager作为集群内部的管理控制中心,负责集群内的Node.Pod副本.服务端点(Endpoint).命名空间(Namespa ...

  8. kubernetes之Controller Manager原理分析

    Controller Manager作为集群内部的管理控制中心,负责集群内的Node.Pod副本.服务端点(Endpoint).命名空间(Namespace).服务账号(ServiceAccount) ...

  9. 029.核心组件-Controller Manager

    一 Controller Manager原理 1.1 Controller Manager概述 一般来说,智能系统和自动系统通常会通过一个"控制系统"来不断修正系统的工作状态.在K ...

随机推荐

  1. 如何使用Markdown 编写文档

    Markdown 是一种轻量级标记语言,用来编写文本文档,一般后缀名为.md.该语言在 2004 由约翰·格鲁伯(John Gruber)创建. 由于Markdown 语法简单,易读易写,变得越来越通 ...

  2. 标准库sys

    sys模块的主要函数介绍,结合官方文档说明和实例.This module provides access to some variables used or maintained by the int ...

  3. 在线图片资源转换成Base64格式

    function getBase64Image(img) { var canvas = document.createElement("canvas"); canvas.width ...

  4. 如何将Superset嵌入后台系统之实践

    1. 前言 此次实践过程全属个人学习,我选择了在window下安装Superset,并进行嵌入后台系统实践.对此进行实践过程总结,实践成果分享给大家,供大家参考,如果你有更好的想法,欢迎留言交流. 2 ...

  5. vlookup匹配不出,明明文本内容是一样的,求解答。

    看起来很简单,肉眼看都知道就是匹配他,但是就是匹配不出.用trim去掉了空格,用分列去掉空格.tab这些看不见的.也改了单元格是数字型,而且粘贴是用数值型粘贴,全都匹配不出用if函数验证两个匹配对象是 ...

  6. ACM模板合集

    写在前面: 第一年小白拿铜牌,第二年队友出走,加上疫情原因不能回校训练导致心底防线彻底崩盘,于是选择退役. 自从退役之后,一直想我打了那么久的ACM,什么也没留下觉得很难受,突然想到我打ACM的时候, ...

  7. POJ 1905 Expanding Rods(二分)

    Expanding Rods Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 20224 Accepted: 5412 Descr ...

  8. Java——Java泛型

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.泛型概述 1.定 ...

  9. 2249: Altruistic Amphibians 01背包

    Description A set of frogs have accidentally fallen to the bottom of a large pit. Their only means o ...

  10. Java模拟UDP通信

    目录 Java基础:模拟UDP通信 1.一次发送,一次接收 1.1.发送方 1.2.接收方 2.多次发送,多次接收 2.1.发送方 2.2.接收方 3.模拟双方通信 3.1.发送方的线程 3.2.接收 ...