当Pod过多时,防止Kubernetes中断(kubectl不响应)

时间:2018-11-13 03:46:35

标签: amazon-ec2 kubernetes kops

当我集群中有太多的豆荚(1000个豆荚)运行时,

Kubernetes中断(kubectl没有响应)。

足够的资源(CPU和内存),所以在我看来某种控制器坏了并且无法处理大量Pod。

我需要运行的工作负载可以进行大规模并行处理,因此我的Pod数量很多。

实际上,我希望能够多次运行1000个Pod。甚至 100,000个豆荚

我的Kubernetes主节点是一个AWS EC2 m4.xlarge实例。

我的直觉告诉我,是阻止群集的主节点的网络性能?

有什么想法吗?

详细信息:
我正在部署中运行1000个Pod。
当我做kubectl get deploy
它显示:

DESIRED  CURRENT  UP-TO-DATE  AVAILABLE  
1000     1000     1000        458  

和通过我的应用程序侧数据库,我可以看到只有458个Pod在工作。

当我做kops validate cluster
时 我收到警告:

VALIDATION ERRORS
KIND            NAME                                                                    MESSAGE
ComponentStatus controller-manager                                                      component is unhealthy
ComponentStatus scheduler                                                               component is unhealthy
Pod             kube-system/kube-controller-manager-<ip>.ec2.internal        
kube-system pod 
"kube-controller-manager-<ip>.ec2.internal" is not healthy
Pod             
kube-system/kube-scheduler-<ip>.ec2.internal                 
kube-system pod "kube-scheduler-<ip>.ec2.internal" is not healthy

1 个答案:

答案 0 :(得分:2)

列出Pod需要很长时间这一事实与您的节点无关,因为它们能够根据拥有此类CPU和内存的资源来处理Pod。

您看到的问题更多是关于kubeapi-server能够查询/回复大量的pod或资源。

因此,这里的两个争用点是kube-apiserver和etcd,它们存储了Kubernetes集群中所有内容的状态。因此,您可以专注于优化这两个组件,并更快地从kubectl get pods中获得响应(网络是另一个争论点,但这是从慢速宽带连接发出kubectl命令的情况。)

您可以尝试:

  • 使用功能强大的计算机和快速磁盘设置HA external etcd cluster

  • 升级kubeapi-server所在的计算机。

  • 遵循here中所述的更多准则。