如何解决更改 kubernetes 工作节点的内存分配
我的设置
我有一个物理节点 K8s 集群,我在其中污染了主节点,因此它也可以充当工作节点。该节点有 Centos7,共 512 GB 内存。我将我的实验限制在一个节点集群上;找到解决方案后,我将在我的小型 k8s 集群上进行测试,其中主服务和工作服务位于不同的节点上。
我想做什么
我希望 k8s worker 开始时只使用 256GB 的内存。稍后,如果满足特定节点条件,我想将 k8s 工作线程的内存分配增加到(比如说)400GB
我现在在哪里
- 我重新启动了我的机器,节点已满 512 GB 内存。
- 我使用
chmem -d <range>
离线使用 256 GB 内存。现在操作系统只能看到 256 GB 内存可用。 - 我按照从
kubeadm init
到kubectl taint nodes --all node-role.kubernetes.io/master-
的步骤 - 我的单节点 K8s 设置已经建立,我最多可以部署 2 个 Pod。每个 pod 请求 100Gi 并限制为 200Gi 内存使用。 Pod 正在执行
sleep 100000
。所以没有记忆压力。 - 当我尝试启动第三个吊舱时; pod 处于挂起状态,因为调度程序检测到它管理的唯一工作节点没有可分配的内存资源。这是有道理的。第三个 Pod 只是永远停留在挂起状态。
- 现在过了一段时间;节点满足要求条件;此时我使用
chmem -e <range>
启用了一些内存,现在操作系统看到 400GB。 - 在这一点上,我想让 k8s 工作人员意识到这种内存资源容量的变化,以便可以部署卡在待定阶段的第三个 pod。
- 这就是我需要你帮助的地方。如何在不重新启动 k8s 的情况下更新 worker 的内存资源容量。如果我重启集群,可以看到400GB内存;但这意味着我需要杀死已经运行的 pod,而杀死已经运行的 pod 是不可接受的。
解决方法
这是一个远景,但您可以尝试通过 systemctl restart kubelet
重新启动 kubelet。容器不应该以这种方式重新启动,并且希望一旦重新启动,它会注意到增加的内存配置。
- 请提供以下命令的输出
kubectl describe nodes
- 使用以下命令重新启动 kubelet 应该可以工作,因为 kubelet 每次启动时都会重新计算可分配的 CPU 和内存
systemctl restart kubelet
- 您是否尝试在重新启动 kubelet 后删除并重新创建第三个 pod?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。