防止 Kubernetes 在太多时中断(kubectl 不响应)Pods
Prevent Kubernetes breaking (kubectl does not respond) when too many Pods
当我在集群中 Pods 运行ning 太多时
Kubernetes 中断(kubectl
没有响应)(1000 pods).
资源绰绰有余(CPU 和内存),所以在我看来,某种控制器正在崩溃,无法处理大量资源Pods。
我需要 运行 的工作量可以大规模并行处理,因此我有很多 Pods。
实际上,我希望能够 运行 多次 1000 Pods。甚至 100,000 Pods。
我的 Kubernetes 主节点是一个 AWS EC2 m4.xlarge
实例。
我的直觉告诉我,是主节点的网络性能阻碍了集群?
有什么想法吗?
详情:
我在部署中 运行ning 1000 Pods。
当我做 kubectl get deploy
它显示:
DESIRED CURRENT UP-TO-DATE AVAILABLE
1000 1000 1000 458
并且通过我的应用程序端数据库,我可以看到只有 458 Pods 个在工作。
当我做 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
列出您的 pods 需要很长时间的事实与您的节点无关,因为它们能够处理 pods 尽可能多,具体取决于它们拥有的资源,例如 CPU 和内存.
您看到的问题更多是关于 kubeapi-server
能够 query/reply 大量 pods 或资源。
所以这里的两个争论点是 kube-apiserver 和 etcd,其中存储了 Kubernetes 集群中所有内容的状态。因此,您可以专注于优化这两个组件,并更快地从 kubectl get pods
获得响应(网络是另一个争论点,但如果您从慢速宽带连接发出 kubectl 命令)。
你可以试试:
设置 HA external etcd cluster 具有相当强大的机器和快速磁盘。
升级您的 kubeapi-server
(s) 所在的机器。
遵循 here.
中描述的更多指南
当我在集群中 Pods 运行ning 太多时
Kubernetes 中断(kubectl
没有响应)(1000 pods).
资源绰绰有余(CPU 和内存),所以在我看来,某种控制器正在崩溃,无法处理大量资源Pods。
我需要 运行 的工作量可以大规模并行处理,因此我有很多 Pods。
实际上,我希望能够 运行 多次 1000 Pods。甚至 100,000 Pods。
我的 Kubernetes 主节点是一个 AWS EC2 m4.xlarge
实例。
我的直觉告诉我,是主节点的网络性能阻碍了集群?
有什么想法吗?
详情:
我在部署中 运行ning 1000 Pods。
当我做 kubectl get deploy
它显示:
DESIRED CURRENT UP-TO-DATE AVAILABLE
1000 1000 1000 458
并且通过我的应用程序端数据库,我可以看到只有 458 Pods 个在工作。
当我做 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
列出您的 pods 需要很长时间的事实与您的节点无关,因为它们能够处理 pods 尽可能多,具体取决于它们拥有的资源,例如 CPU 和内存.
您看到的问题更多是关于 kubeapi-server
能够 query/reply 大量 pods 或资源。
所以这里的两个争论点是 kube-apiserver 和 etcd,其中存储了 Kubernetes 集群中所有内容的状态。因此,您可以专注于优化这两个组件,并更快地从 kubectl get pods
获得响应(网络是另一个争论点,但如果您从慢速宽带连接发出 kubectl 命令)。
你可以试试:
设置 HA external etcd cluster 具有相当强大的机器和快速磁盘。
升级您的
kubeapi-server
(s) 所在的机器。遵循 here.
中描述的更多指南