![kube-api 服务器 CPU 过高](https://linux22.com/image/783615/kube-api%20%E6%9C%8D%E5%8A%A1%E5%99%A8%20CPU%20%E8%BF%87%E9%AB%98.png)
我想知道如何检查为什么我的一个 ctrl 节点和 kubernetes 比其他节点消耗更多的 CPU。
我有一个包含 3 个 ctrl 节点和 4 个工作节点的集群。
我有一个使用 least_conn 算法的 nginx 负载均衡器来将请求分发到 ctrl 节点。
使用 top 命令监控资源,我观察到在三个 ctrl 节点中,第一个 ctrl 节点中的 kube api 服务器进程始终使 CPU 使用率超过 100%,而其他 ctrl 节点中的 kube-api 服务器使用的 CPU 使用率低于 20%。
我想知道为什么?
我如何才能看到 Grafana 中相同的消费表现,无论是 pod 还是容器。节点
答案1
kubctl top node
在使用和发现集群中发生的情况后,您可以进一步诊断pod 上kubectl top pod
发生的情况。kubectl logs $pod -c $container
此时,由容器来提供有关其正在做什么的信息,因此理想情况下,您将在 pod 中收集指标,以便使用 Grafana 等快速了解集群上正在发生的事情。您还可以使用 查看分配给 pod 的资源kubectl get pod $pod -o jsonpath='{.spec.containers[].resources}'
。
就你的情况而言,kubernetes apiserver 的日志消息应该会给你一些提示。可能是有什么东西(可能是另一个容器/pod)堵塞了你的 API 服务器。