【问题标题】:Kubernetes cluster seems to be unstableKubernetes 集群似乎不稳定
【发布时间】:2019-07-07 03:40:32
【问题描述】:

最近,我们在非生产集群和生产集群中都遇到了节点遇到“系统 OOM 遇到”问题的问题。

非生产集群中的节点似乎没有共享 pod。似乎给定节点正在运行所有 pod 并对系统施加负载。

此外,Pod 卡在以下状态:'Waiting: ContainerCreating'。

对于上述问题的任何帮助/指导将不胜感激。我们正在这个集群中构建越来越多的服务,并希望确保没有不稳定和/或环境问题,并在我们上线之前进行适当的检查/配置。

【问题讨论】:

  • 通常“kubectl describe nodes”提供了解决集群级问题的见解。如果您分享结果,也许有人可以提供帮助。
  • 是的,我尝试这样做并得到以下“无法为 pod "xxx-3615518044-6l1cf_xxx-qa(8a5d9893-230b-11e8-a943-000d3a35d8f4) 安装卷”:超时已过期等待要为 pod“xxx-service-3615518044-6l1cf”/“xxx-qa”附加/挂载的卷。未附加/卸载的卷列表=[default-token-xxxx]”
  • 最好编辑原始问题,添加命令和结果以获取更多上下文。

标签: kubernetes out-of-memory


【解决方案1】:

“我建议您在 Kubernetes 集群中正确管理容器计算资源。创建 Pod 时,您可以选择指定每个容器需要多少 CPU 和内存 (RAM) 以避免 OOM 情况。

当容器指定了资源请求时,调度程序可以更好地决定将 Pod 放置在哪些节点上。并且当容器指定了它们的限制时,可以以指定的方式处理节点上的资源争用。 CPU规格以核心为单位,内存以字节为单位。

每次调度器失败时都会产生一个事件,使用下面的命令查看事件的状态:

$ kubectl describe pod <pod-name>| grep Events

另外,请阅读有关“配置资源不足处理”的官方 Kubernetes 指南。始终确保:

为 kubelet 和 OS 内核等系统守护进程保留 10-20% 的内存容量 识别可以在90-95% 内存利用率下驱逐的 pod,以减少系统 OOM 的抖动和发生率。

为了促进这种情况,kubelet 将使用以下选项启动:

--eviction-hard=memory.available<xMi
--system-reserved=memory=yGi

用实际内存值替换 x 和 y。

拥有Heapster container monitoring 应该有助于可视化”。

阅读更多关于Kubernetes and Docker Administration的文章

【讨论】:

    【解决方案2】:

    无法为 pod 挂载卷 “xxx-3615518044-6l1cf_xxx-qa(8a5d9893-230b-11e8-a943-000d3a35d8f4)”: 等待卷为 pod 附加/挂载的超时过期 "xxx-service-3615518044-6l1cf"/"xxx-qa"

    这表明您的 pod 在安装配置中指定的卷时遇到问题。这通常是权限问题。如果您发布您的配置文件(如 gist)并删除私人信息,我们可能会更有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2012-06-02
      • 2019-09-15
      • 1970-01-01
      • 2022-06-11
      • 2020-06-19
      • 1970-01-01
      相关资源
      最近更新 更多