更改 Kubernetes 中的 CPU 管理器策略

2024-04-21

我正在尝试更改我管理的 Kubernetes 集群的 CPU 管理器策略,如上所述here https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/然而,我在这样做时遇到了很多问题。

该集群正在 DigitalOcean 中运行,这是我到目前为止所尝试的。

  • 1.既然文章提到了--cpu-manager-policy是一个 kubelet 选项,我假设我无法通过 API 服务器更改它,并且必须在每个节点上手动更改它。 (顺便说一句,这是假设吗?)
  • 2. I ssh进入其中一个节点(DigitalOcean 行话中的 Droplet)并运行kubelet --cpu-manager-policy=static命令如中所述kubelet CLI 参考在这里 https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/。它给了我消息Flag --cpu-manager-policy has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.
  • 3.所以我通过运行来检查 --config 标志指向的文件ps aux | grep kubelet并发现其/etc/kubernetes/kubelet.conf.
  • 4.我编辑文件并添加一行cpuManagerPolicy: static对它,还有kubeReserved and systemReserved因为如果指定,它们将成为必填字段cpuManagerPolicy.
  • 5.然后我终止正在运行该进程的进程并重新启动它。还出现了一些其他问题(删除此文件并耗尽节点等),我能够解决这些问题并最终重新启动 kubelet

我对以下事情有点迷失

  • 我需要如何为所有节点执行此操作?我的集群有 12 个,为每个集群执行所有这些步骤似乎效率非常低。
  • 有什么方法可以从全局(即集群范围)设置这些参数,而不是逐个节点设置这些参数?
  • 我怎样才能确认我所做的确实改变了 CPU 管理器策略?

动态配置的一个问题是,如果节点无法重新启动,API 不会给出合理的响应来告诉您做错了什么,您必须ssh进入节点并尾部 kubelet 日志。另外,你必须ssh到每个节点并设置--dynamic-config-dir无论如何,国旗。

以下最适合我

  1. 通过 SSH 进入节点。编辑
vim /etc/systemd/system/kubelet.service
  1. 添加以下行
  --cpu-manager-policy=static \
  --kube-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi \
  --system-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi \

我们需要设置--kube-reserved and --system-reserved标志,因为它们是设置的先决条件--cpu-manager-policy flag

  1. 然后清空节点并删除以下文件夹
rm -rf /var/lib/kubelet/cpu_manager_state
  1. 重启 kubelet
sudo systemctl daemon-reload
sudo systemctl stop kubelet
sudo systemctl start kubelet
  1. 解除节点封锁并检查策略。这假设你正在运行kubectl proxy在端口 8001 上。
curl -sSL "http://localhost:8001/api/v1/nodes/${NODE_NAME}/proxy/configz" | grep cpuManager
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改 Kubernetes 中的 CPU 管理器策略 的相关文章

  • Istio 直接 Pod 到 Pod 通信

    我在使用 Istio 部署的 Pod 与 Pod 进行通信时遇到问题 我实际上需要它与 Istio 合作进行 Hazelcast 发现 https github com hazelcast hazelcast kubernetes issu
  • 不同命名空间中 k8s 的入口配置

    我需要在 azure k8s 上配置 Ingress Nginx 我的问题是是否可以在一个命名空间等中配置 ingress ingress nginx 和其他命名空间中的一些服务 例如 资源 我的文件看起来像这样 ingress nginx
  • 从 Helm stable/cert-manager 升级到 jetstack/cert-manager

    我们有一个生产 AKS 集群 其中包含stable cert manager安装 helm 图表以允许使用 Let s Encrypt 证书 当前安装的版本是cert manager v0 6 0 in the kube system命名空
  • Pod 清单写入 Deployment Manifest

    在 Kubernetes 中 将正在运行的 pod 清单转换为具有 x 个副本的部署的简单方法是什么 我尝试获取清单 k get po xyz o yaml gt po1 yaml 然后编辑 yaml 并与部署清单匹配 但这似乎并不容易 我
  • 通过流式传输将分段文件上传到 Amazon S3 时内存使用率过高?

    我的 Java Spring 应用程序中的以下方法直接将文件流式传输并上传到 Amazon S3 存储桶 我研究过 使用流将使上传大文件 对于我的用例 gt 100MB 视频 更加内存有效 当使用 25MB 文件测试该方法时 Kuberne
  • Terraform 规划自动化中人类可读的输出

    我已经通过 github jenkins 设置了自动化 以通过 jenkins 发布 repo 的 terraform plan 的输出 作为对 github 中拉取请求的评论 整个编排工作得很好 除了 terraform plan 的输出
  • kubernetes POD IP什么时候会改变?

    我正在尝试将一个整体应用程序移植到 k8s pod 理论上 Pod 被认为是短暂的 建议使用服务概念来提供静态 IP 但到目前为止 在我的测试中 我还没有看到 POD IP 被更改 那么现在的问题是 k8s 什么时候会为我的 POD 分配一
  • Kubernetes:无法创建存储库

    我正在跟进Kubernetes 入门指南 http kubernetes io docs hellonode 一切都很顺利 直到我跑步 gcloud docker push gcr io
  • 在 Kubernetes API 中启用 CORS

    有没有办法在 Kubernetes API 上启用 CORS 以便我可以使用不同的域向 Kubernetes API 发送 ajax 请求 通过将 cors allowed origins http 参数添加到 etc default ku
  • 通过 nginx 入口控制器进行基本身份验证

    我正在使用 nginx 入口控制器 https kubernetes github io ingress nginx deploy https kubernetes github io ingress nginx deploy 在 AWS
  • 从头开始使用映像部署无法启动

    我正在使用以下内容构建图像Dockerfile FROM golang 1 19 2 bullseye as builder COPY src src WORKDIR src RUN CGO ENABLED 1 go build race
  • Kubernetes nginx 入口控制器返回 502,但仅适用于 AJAX/XmlHttpRequest 请求

    我有一个在 nginx 入口控制器后面运行 Kubernetes 的 Web 应用程序 它对于请求浏览工作正常 但来自浏览器的任何 AJAX XMLHTTPRequest 都会从 nginx 收到 502 错误 我捕获了常规请求和 AJAX
  • 使大型静态数据文件可供 kubernetes pod 使用

    我有一些相当大的 UTF 8 数据文件 pod 需要在启动时加载到内存中 从几百 KB 到大约 50 MB 该项目 包括 helm 图表 是开源的 但其中一些文件不是开源的 否则我可能只会将它们包含在图像中 我最初的想法是创建配置映射 但我
  • kubernetes nginx ingress 无法将 HTTP 重定向到 HTTPS

    我有一个托管在 Google Cloud 平台中的网络应用程序 该应用程序位于负载均衡器后面 而负载均衡器本身位于入口后面 入口设置了 SSL 证书 并按预期接受 HTTPS 连接 但有一个问题 我无法让它将非 HTTPS 连接重定向到 H
  • 从 App Engine 连接到 Kubernetes 引擎

    我们希望使用应用程序引擎灵活的流程来更新位于 Google Kubernetes Engine 上的 ElasticSearch 索引 我们需要通过 http s 地址连接到 ElasticSearch 推荐的方法是什么 我们不想将集群暴露
  • Kubernetes Pod 动态环境变量

    我需要能够将自定义环境变量分配给 Pod 的每个副本 一个变量应该是一些随机的 uuid 另一个唯一的数字 怎么可能实现呢 我更愿意继续使用带有副本的 部署 如果这不是开箱即用的 如何通过自定义复制控制器 控制器管理器来实现 有没有可用的钩
  • 在容器中运行多个相似的进程有意义吗?

    提供有关该问题的背景的简要背景 目前 我和我的团队正在将微服务迁移到 k8s 以减少维护多个部署工具和管道的工作量 我们计划迁移的微服务之一是 ETL Worker 它监听 SQS 上的消息并执行多阶段处理 它是使用 PHP Laravel
  • 如何为容器设置正确的 cpu 毫核?

    我想要优化配置 CPU 核心 而不会分配过多或不足 如何测量给定容器所需的 CPU 毫核 它还带来了一个问题 即代理将根据 CPU 消耗将多少流量发送到任何给定的 Pod 以便我们可以最佳地使用计算 目前我发送请求并进行监控 kubectl
  • Spring OAuth2 Keycloak Kubernetes 内部/外部访问

    我在 Kubernetes 集群内配置了 Keycloak 10 0 3 服务器 keycloak 服务器必须处理外部用户的身份验证 使用外部 url 并处理用于 Spring 微服务通信的 oauth2 令牌 然后Web应用程序Sprin
  • 如何将新的 Kubernetes Minion 添加到当前集群

    我有一个运行在 3 台服务器上的 Kubernetes 集群 一台主服务器和 2 台服务器 我想添加另一个小黄人 是否可以添加 Minion 而无需再次进行完整安装 到目前为止 在寻找执行此操作的指南时 我只能找到有关建立整个集群的优秀指南

随机推荐