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