kubernetes 在大型集群中,cluster-info dump test会消耗大量内存,

lstz6jyr  于 6个月前  发布在  Kubernetes
关注(0)|答案(7)|浏览(81)

发生了什么:

在大型集群中,cluster-info dump测试消耗了大量的内存。
参考:#93506 , #93838

你预期会发生什么:

它应该消耗不到10GB的内存

如何尽可能精确地重现问题(最少和最简单):

在5k节点集群中运行cluster-info dump

我们需要了解其他信息吗?:

  • Kubernetes版本(使用kubectl version):1.19+ (可能也比较旧)
  • 云提供商或硬件配置:GCE/GKE
wydwbb8l

wydwbb8l1#

内存消耗:

NAME                                   READY   STATUS    RESTARTS   AGE    JOB
56c83012-d990-11ea-a655-36d8da38d492   1/1     Running   0          159m   ci-kubernetes-e2e-gke-1.18-5000-correctness

NAME                                   CPU(cores)   MEMORY(bytes)   
56c83012-d990-11ea-a655-36d8da38d492   90m          4463Mi          
Sat 08 Aug 2020 07:44:25 PM UTC
56c83012-d990-11ea-a655-36d8da38d492   68m          3859Mi          
Sat 08 Aug 2020 07:45:27 PM UTC
56c83012-d990-11ea-a655-36d8da38d492   1063m        18513Mi         
Sat 08 Aug 2020 07:46:29 PM UTC
56c83012-d990-11ea-a655-36d8da38d492   1065m        18575Mi         
Sat 08 Aug 2020 07:47:31 PM UTC
56c83012-d990-11ea-a655-36d8da38d492   1033m        16882Mi         
Sat 08 Aug 2020 07:48:32 PM UTC
56c83012-d990-11ea-a655-36d8da38d492   1048m        15435Mi         
Sat 08 Aug 2020 07:49:34 PM UTC
56c83012-d990-11ea-a655-36d8da38d492   1082m        12003Mi

运行日志对应内容:

I0808 19:36:21.024] 
I0808 19:44:21.253] 
I0808 19:44:23.313] [BeforeEach] [sig-cli] Kubectl client
I0808 19:44:23.313]   /workspace/louhi_ws/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/test/e2e/framework/framework.go:178
I0808 19:44:23.313]  [1mSTEP [0m: Creating a kubernetes client
I0808 19:44:23.313] Aug  8 19:26:47.867: INFO: >>> kubeConfig: /tmp/gke-kubecfg400109384
I0808 19:44:23.313]  [1mSTEP [0m: Building a namespace api object, basename kubectl
I0808 19:44:23.313]  [1mSTEP [0m: Binding the e2e-test-privileged-psp PodSecurityPolicy to the default service account in kubectl-6580
I0808 19:44:23.314]  [1mSTEP [0m: Waiting for a default service account to be provisioned in namespace
I0808 19:44:23.314] [BeforeEach] [sig-cli] Kubectl client
I0808 19:44:23.314]   /workspace/louhi_ws/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/test/e2e/kubectl/kubectl.go:219
I0808 19:44:23.314] [It] should check if cluster-info dump succeeds
I0808 19:44:23.314]   /workspace/louhi_ws/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/test/e2e/kubectl/kubectl.go:975
I0808 19:44:23.314]  [1mSTEP [0m: running cluster-info dump
I0808 19:44:23.314] Aug  8 19:26:48.098: INFO: Running '/go/src/k8s.io/kubernetes/kubernetes/platforms/linux/amd64/kubectl --server=https://34.70.3.254 --kubeconfig=/tmp/gke-kubecfg400109384 cluster-info dump'
I0808 19:44:23.314] Aug  8 19:43:45.105: INFO: stderr: ""
x7rlezfr

x7rlezfr2#

待调查:将kubectl更改为使用protobufs是否有所帮助?

yx2lnoni

yx2lnoni3#

/sig cli
/sig scalability

erhoui1w

erhoui1w4#

将kubectl更改为protobufs可能会有所帮助,但我不确定这种变化会有多大的影响。
查看这个命令:https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubectl/pkg/cmd/clusterinfo/clusterinfo_dump.go#L168
这个命令在设计上确实非常消耗资源。
在这个测试中,我们是转储整个集群还是仅转储特定的命名空间?
[另外 - 我想知道我们是否不将整个输出存储在内存中?如果是这样的话,也许我们可以在这里做一些刷新?]

fruv7luv

fruv7luv5#

问题在90天不活跃后过期。
使用 /remove-lifecycle stale 将问题标记为新鲜。
过期的问题在30天不活跃后开始腐烂并最终关闭。
如果现在可以安全地关闭此问题,请使用 /close 进行操作。
向 sig-testing, kubernetes/test-infra 和/或 fejta 发送反馈。
生命周期:过期

mzaanser

mzaanser6#

过期的问题在30天不活动后会变质。
使用 /remove-lifecycle rotten 将问题标记为新鲜。
腐烂的问题在额外的30天不活动后关闭。
如果现在可以安全地关闭此问题,请使用 /close 进行操作。
将反馈发送给sig-testing, kubernetes/test-infra 和/或 fejta
生命周期腐烂

mjqavswn

mjqavswn7#

/remove-lifecycle rotten
/lifecycle frozen

相关问题