我在GKE上运行一个具有单个节点池的集群 . 它有3个节点,可以从1到99个节点进行扩展 . 群集使用 nginx-ingress
控制器
在此群集上,我想部署应用程序 . 应用程序由命名空间限定,包含3个 deployments
和一个 ingress
(定义从Internet访问应用程序的路径) . 每个部署都运行一个容器的副本 .
部署几个应用程序工作正常,但部署许多应用程序(要求节点池向上扩展)会破坏所有内容:
All pods start having warnings (包括之前成功部署的那些)
kubectl get pods --namespace bcd
NAME READY STATUS RESTARTS AGE
actions-664b7d79f5-7qdkw 1/1 Unknown 1 35m
actions-664b7d79f5-v8s2m 1/1 Running 1 18m
core-85cb74f89b-ns49z 1/1 Unknown 1 35m
core-85cb74f89b-qqzfp 1/1 Running 1 18m
nlu-77899ddbf-8pd7k 1/1 Running 1 27m
All nodes becomes unready :
kubectl get nodes
NAME STATUS ROLES AGE VERSION
gke-clients-projects-default-pool-f9af73d4-gzwr NotReady <none> 42m v1.9.7-gke.6
gke-clients-projects-default-pool-f9af73d4-p5l2 NotReady <none> 21m v1.9.7-gke.6
gke-clients-projects-default-pool-f9af73d4-wnxc NotReady <none> 37m v1.9.7-gke.6
删除命名空间以从群集中删除所有资源似乎也失败了,因为很长一段时间后,pod仍处于活动状态但仍处于未知状态 .
如何安全地添加更多应用并让群集自动缩放?
1 回答
原因似乎是不知道每个pod所需的资源,调度程序在任何可用节点上调度它们,可能耗尽可用资源并使Docker守护程序处于不一致状态 .
解决方案是指定资源请求和限制:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container