我正在GKE上使用单个节点池运行集群。它有3个节点,可以从1扩展到99个节点。群集使用nginx-ingress
控制器
在此群集上,我想部署 apps 。一个 app 受一个命名空间限制,由3个deployments
和一个ingress
(定义从Internet访问应用程序的路径)组成。每个部署运行一个容器的单个副本。
部署几个应用程序可以正常工作,但是部署很多应用程序(要求节点池扩大规模)会破坏一切:
所有Pod开始发出警告(包括之前成功部署的Pod)
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
所有节点都准备就绪 :
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仍处于活动状态但仍处于未知状态。
如何安全添加更多应用并让群集自动扩展?
答案 0 :(得分:0)
原因似乎是由于不知道每个Pod所需的资源,调度程序将它们调度在任何可用节点上,可能会耗尽可用资源并使Docker守护程序处于不一致状态。
解决方案是指定资源请求和限制:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container