【问题标题】:How does Kubernetes kubelet resource reservation workKubernetes kubelet 资源预留是如何工作的
【发布时间】:2020-11-28 10:33:11
【问题描述】:

我最近尝试使用 kops 在 AWS 中启动 Kubernetes 集群。但是当工作节点(Ubuntu 20.04)启动时,即使它有足够的内存(~14GiB),它上面的一个docker load 进程也会不断被OOMkilled。我发现问题是我将kubelet 的内存预留设置得太小(--kube-reserved=memory=100Mi...)。

所以现在我有两个与文档中以下段落相关的问题:

kube-reserved 旨在为 kubernetes 系统守护进程(如 kubelet、容器运行时、节点问题检测器等)捕获资源预留。

https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/#kube-reserved

首先,我将“预留”解释为“保证的内存量”,类似于 Pod 的.spec.resource.requests.memory 的概念。但是,标志的行为似乎也像limit?这是否意味着 Kubernetes 打算用“保证”的 QoS 类概念来管理 Kubernetes 系统守护进程?

另外,我的容器运行时docker 似乎不在/kube-reserved cgroup 中,而是在/system.slice 中:

$ systemctl status $(pgrep dockerd) | grep CGroup
     CGroup: /system.slice/docker.service

那么为什么它会受到/kube-reserved 的限制?甚至不是kubelet 通过dockerCRI 交谈,而只是我的手动docker load 命令。

【问题讨论】:

  • 是你的容器被 oomkilled 了吗?您是否有任何日志可能表明问题来自 kube-reserved?
  • 我只是运行docker load -i /path/to/some/image/tarball,然后我的命令就被杀死了。我运行这个命令来重现 kops 引导步骤(从 gi​​thub 发布二进制文件下载 protokube 图像)。我在 github 上打开了一个问题,并与开发人员进行了一些讨论。 /kube-reserved 是问题所在:github.com/kubernetes/kops/issues/9692
  • 你能分享你的 kops 配置吗?
  • 配置和日志在 github issue 中。对不起,我的帖子有点误导。我认为kops 在这里无关紧要。我想弄清楚的是,/kube-reserved cgroup 如何影响 dockerrunc 当它们实际上在 /system.slice 中并且没有内存限制时

标签: amazon-web-services docker kubernetes kops


【解决方案1】:

kube-reserved 是一种保护 Kubernetes 系统守护进程(包括 Kubelet)在 pod 消耗过多时内存不足的方法。这是如何实现的?默认情况下,pod 被限制为一个“可分配”值,等于节点的内存容量减去the URL you posted 中定义的几个标志值,其中之一是kube-reserved。这是 AKS 中 7-GiB DS2_v2 节点的样子:

但并不总是需要保护 Kubernetes 系统守护程序免受 pod 甚至操作系统组件消耗过多内存的影响。很可能是 Kubernetes 系统守护进程会消耗过多内存并开始影响 Pod 或其他操作系统组件。为了防止这种情况,有一个additional flag defined

可选择在 kubernetes 系统守护进程上强制执行 kube-reserved, 将 kube 守护进程的父控制组指定为 --kube-reserved-cgroupkubelet 标志。

有了这个新标志,如果 Kubernetes 系统守护进程的总内存使用量超过 cgroup 限制,那么 OOM 杀手将介入并终止其中一个进程。要将其应用于上图,指定 --kube-reserved-cgroup 标志后,Kubernetes 系统守护进程将被阻止超过 1,638 MiB。

【讨论】:

    猜你喜欢
    • 2019-11-26
    • 1970-01-01
    • 2020-05-17
    • 2020-11-29
    • 2019-08-17
    • 2014-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多