kubernetes - Autoscaler 未扩展,使节点处于 NotReady 状态,Pod 处于未知状态
问题描述
我在 GKE 上运行一个带有单个节点池的集群。它有 3 个节点,可以从 1 个节点扩展到 99 个节点。集群使用nginx-ingress
控制器
在这个集群上,我想部署apps。应用程序由命名空间限定,由 3deployments
和 1组成ingress
(定义从 Internet 访问应用程序的路径)。每个部署运行一个容器的单个副本。
部署几个应用程序工作正常,但部署许多应用程序(需要节点池扩展)会破坏一切:
所有 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 仍然处于活动状态但仍处于未知状态。
如何安全地添加更多应用程序并让集群自动扩展?
解决方案
原因似乎是不知道每个 pod 所需的资源,调度程序将它们安排在任何可用的节点上,可能会耗尽可用资源并使 Docker 守护进程处于不一致的状态。
推荐阅读
- optimization - 如何为特定的优化问题建模?
- sharepoint - 迁移开箱即用 SharePoint 2010 --> SharePoint 2016 网站的最佳方式
- angular - Ionic 3, angular 5 - webapp 的缓存问题
- javascript - 如何关闭 SignalR 中的客户端 JavaScript“集线器”连接?
- javascript - 尝试进行更清晰的异步 JSON 翻译调用
- javascript - 开玩笑的反应 onSubmit 不包括方法
- java - Java - 在导航到具有相同 html 模板的不同页面时断言类包含文本
- php - 使用 vsmoraes/laravel-pdf 包在 laravel 中返回带有变量的视图
- latex - 未定义的控制序列 \chapter
- sql - 在 SELECT 语句中声明和使用变量