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
答案 0 :(得分:2)
列出Pod需要很长时间这一事实与您的节点无关,因为它们能够根据拥有此类CPU和内存的资源来处理Pod。
您看到的问题更多是关于kubeapi-server
能够查询/回复大量的pod或资源。
因此,这里的两个争用点是kube-apiserver和etcd,它们存储了Kubernetes集群中所有内容的状态。因此,您可以专注于优化这两个组件,并更快地从kubectl get pods
中获得响应(网络是另一个争论点,但这是从慢速宽带连接发出kubectl命令的情况。)
您可以尝试:
使用功能强大的计算机和快速磁盘设置HA external etcd cluster。
升级kubeapi-server
所在的计算机。
遵循here中所述的更多准则。