自动缩放器无法扩展,从而使节点处于“未就绪”状态,吊舱处于“未知”状态

时间:2018-10-10 18:57:38

标签: kubernetes google-cloud-platform google-kubernetes-engine

我正在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仍处于活动状态但仍处于未知状态。

如何安全添加更多应用并让群集自动扩展?

1 个答案:

答案 0 :(得分:0)

原因似乎是由于不知道每个Pod所需的资源,调度程序将它们调度在任何可用节点上,可能会耗尽可用资源并使Docker守护程序处于不一致状态。

解决方案是指定资源请求和限制:https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container