微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改 kubernetes 工作节点的内存分配

如何解决更改 kubernetes 工作节点的内存分配

我的设置

我有一个物理节点 K8s 集群,我在其中污染了主节点,因此它也可以充当工作节点。该节点有 Centos7,共 512 GB 内存。我将我的实验限制在一个节点集群上;找到解决方案后,我将在我的小型 k8s 集群上进行测试,其中主服务和工作服务位于不同的节点上。

我想做什么

我希望 k8s worker 开始时只使用 256GB 的内存。稍后,如果满足特定节点条件,我想将 k8s 工作线程的内存分配增加到(比如说)400GB

我现在在哪里

  1. 我重新启动了我的机器,节点已满 512 GB 内存。
  2. 我使用 chmem -d <range> 离线使用 256 GB 内存。现在操作系统只能看到 256 GB 内存可用。
  3. 我按照从 kubeadm initkubectl taint nodes --all node-role.kubernetes.io/master- 的步骤
  4. 我的单节点 K8s 设置已经建立,我最多可以部署 2 个 Pod。每个 pod 请求 100Gi 并限制为 200Gi 内存使用。 Pod 正在执行 sleep 100000。所以没有记忆压力。
  5. 当我尝试启动第三个吊舱时; pod 处于挂起状态,因为调度程序检测到它管理的唯一工作节点没有可分配的内存资源。这是有道理的。第三个 Pod 只是永远停留在挂起状态。
  6. 现在过了一段时间;节点满足要求条件;此时我使用 chmem -e <range> 启用了一些内存,现在操作系统看到 400GB。
  7. 在这一点上,我想让 k8s 工作人员意识到这种内存资源容量的变化,以便可以部署卡在待定阶段的第三个 pod。
  8. 这就是我需要你帮助的地方。如何在不重新启动 k8s 的情况下更新 worker 的内存资源容量。如果我重启集群,可以看到400GB内存;但这意味着我需要杀死已经运行的 pod,而杀死已经运行的 pod 是不可接受的。

解决方法

这是一个远景,但您可以尝试通过 systemctl restart kubelet 重新启动 kubelet。容器不应该以这种方式重新启动,并且希望一旦重新启动,它会注意到增加的内存配置。

,
  • 请提供以下命令的输出
kubectl describe nodes
  • 使用以下命令重新启动 kubelet 应该可以工作,因为 kubelet 每次启动时都会重新计算可分配的 CPU 和内存
systemctl restart kubelet
  • 您是否尝试在重新启动 kubelet 后删除并重新创建第三个 pod?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。