【发布时间】:2025-12-06 19:20:06
【问题描述】:
我的设置
我有一个物理节点 K8s 集群,我在其中污染了主节点,因此它也可以充当工作人员。该节点具有 Centos7,总共 512 GB 内存。我将我的实验限制在一个节点集群;一旦找到解决方案,我将在我的小型 k8s 集群上对其进行测试,其中 master 和 worker 服务位于不同的节点上。
我要做什么
我希望 k8s worker 一开始只使用 256GB 的内存。稍后,如果满足特定节点条件,我想将 k8s worker 的内存分配增加到(比如说)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 卡在挂起状态,因为调度程序检测到它管理的唯一工作节点超出了可分配的内存资源。这是有道理的。第三个 pod 只是永远停留在挂起状态。
- 现在过了一段时间;节点满足要求的条件;此时我使用
chmem -e <range>启用了一些内存,现在操作系统看到 400GB。 - 此时我想让 k8s 工作人员了解此内存资源容量变化,以便可以部署停留在挂起阶段的第三个 pod。
- 这是我需要你帮助的地方。如何在不重新启动 k8s 的情况下更新工作人员的内存资源容量。如果我重新启动集群,它可以看到 400GB 内存;但这意味着我需要杀死已经运行的 pod,而杀死已经运行的 pod 是不可接受的。
【问题讨论】:
-
您好,请告知您是否尝试过 Bernard Halas 在 cmets 中与您关联的内容,即:kubernetes.io/docs/tasks/administer-cluster/…?
标签: kubernetes memory-management kubelet