kube-apiserver:持续 5 到 10% CPU:虽然没有单个请求

gue*_*tli 3 kubernetes kubernetes-apiserver kind

我安装了kind来玩弄 Kubernetes。

如果我使用topCPU 使用率(key)并进行排序C,那么我会发现它kube-apiserver不断消耗 5% 到 10% 的 CPU。

为什么?

我到目前为止还没有安装任何东西:

guettli@p15:~$ kubectl get pods --all-namespaces
NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
kube-system          coredns-558bd4d5db-ntg7c                     1/1     Running   0          40h
kube-system          coredns-558bd4d5db-sx8w9                     1/1     Running   0          40h
kube-system          etcd-kind-control-plane                      1/1     Running   0          40h
kube-system          kindnet-9zkkg                                1/1     Running   0          40h
kube-system          kube-apiserver-kind-control-plane            1/1     Running   0          40h
kube-system          kube-controller-manager-kind-control-plane   1/1     Running   0          40h
kube-system          kube-proxy-dthwl                             1/1     Running   0          40h
kube-system          kube-scheduler-kind-control-plane            1/1     Running   0          40h
local-path-storage   local-path-provisioner-547f784dff-xntql      1/1     Running   0          40h


guettli@p15:~$ kubectl get services --all-namespaces
NAMESPACE     NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP                  40h
kube-system   kube-dns     ClusterIP   10.96.0.10   <none>        53/UDP,53/TCP,9153/TCP   40h


guettli@p15:~$ kubectl get nodes
NAME                 STATUS   ROLES                  AGE   VERSION

kind-control-plane   Ready    control-plane,master   40h   v1.21.1
guettli@p15:~$ kubectl get nodes --all-namespaces
NAME                 STATUS   ROLES                  AGE   VERSION
kind-control-plane   Ready    control-plane,master   40h   v1.21.1

Run Code Online (Sandbox Code Playgroud)

我好奇。CPU使用率从何而来?我该如何调查此事?

whi*_*s11 6

即使在只有一个主节点的空集群中,也至少有 5 个组件定期访问 API 服务器:

  • 主节点的 kubelet
  • 控制经理
  • 调度程序
  • 核心DNS
  • 库贝代理

这是因为 API Server 是 Kubernetes 中所有组件了解集群状态并在需要时采取行动的唯一入口点。

如果您对详细信息感兴趣,您可以在 API 服务器中启用审核日志,并获取包含所有发出的请求的非常详细的文件。如何做到这一点不是本答案的目标,但您可以从apiserver 文档开始。