专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

记一次K8S重大故障处理--controller manager请求并发数

上周经历了一次k8s集群的重大故障,

有多重大呢?整个k8s集群的node节点全部重启了。

故障原因呢?我当然是不会说的。

但是我想分享一下在处理这个故障过程中积累的一点知识

先说现象

在k8s集群重启完成,各个kube-system的服务都正常了之后,业务pod开始重启。

在这个时候我们发现业务pod的恢复特别慢。

进一步追查日志,是因为我们使用了istio。

而istiod服务此时还没有启动成功,这就导致了Istio 使用 ValidatingAdmissionWebhooks 验证 Istio 配置的时候验证失败,阻挡了业务pod的启动。

自然的,我们去追查istio的pod启动问题。结果发现,不管我们修改istio的repicas数量还是删除重建istio pod,都不能创建出isto的pod。

排查和解决

看到这个现象,自然会想到是pod调度出问题了。

我们指导controller manager是控制容器的数量符合配置的repicas数量,scheduler是给等待调度的pod计算出合适的node节点,

在这个时候看到的是pod都没有创建出来,都还没到调度。

所以将重点对准了controller manager

在api-server中看到了Rate Limited相关的日志

OpenAPI AggregationController: action for item v1beta1.metrics.k8s.io: Rate Limited Requeue.
...
loading OpenAPI spec for "v1beta1.metrics.k8s.io" failed with: failed to retrieve openAPI spec, http error: ResponseCode: 503, Body: service unavailable
, Header: map[Content-Type:[text/plain; charset=utf-8] X-Content-Type-Options:[nosniff]]

故推测是大量业务pod同时重启,导致controller-manager忙不过来了。

回想起controller-manager似乎有一些关于并发的配置参数,

查询官方文档

kube-controller-manager | Kubernetes

修改了这三个参数

 

image-20240828192755354

 

image-20240828192820462

 

image-20240828192836498

controller-manager是静态pod,直接修改master节点上的资源文件即可。

修改文件 /etc/kubernetes/manifests/kube-controller-manager.yaml

添加配置参数

--concurrent-replicaset-syncs=20

--kube-api-qps=50

--kube-api-burst=100

 

image-20240828154950220

重启之后,istiod的pod确实很快创建了出来。业务pod也得到了快速的恢复。

其实加这三个参数是有碰运气的成分在里面,我并不确定如果不修改这三个参数,只是重启controller-manager故障是不是也能解决。

但是在cpu比较富裕的情况下,将并发参数调大是合理的。

未经允许不得转载:搜云库 » 记一次K8S重大故障处理--controller manager请求并发数

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们