繁体   English   中英

如何更改命名空间 kube-system 的 CPU 限制

[英]How to change CPU Limit for namespace kube-system

如何更改 Azure Kube.netes 中命名空间kube-system的 CPU 限制? 由于命名空间kube-system中的一些 pod 使用了大量资源,我的 pod 无法成功部署。

在此处输入图像描述

将此作为社区 Wiki 发布,不发表评论,请随意编辑和扩展


简而言之,这不可能更改位于kube-system命名空间内的coreDNS和其他关键资源的限制。 (从技术上讲,可以设置自定义值,但它们很快就会被覆盖,初始 state 将恢复为预定义的值,下面是微软对其工作原理的回答)。


microsoft question platform上有一个非常相似的问题,这就是答案:

部署 coredns 使用 CoreDNS 项目运行系统关键工作负载,用于集群 DNS 管理和解析所有 1.12.x 及更高版本的集群。 [参考]。

如果你执行 kubectl describe deployment -n kube-system coredns,你会发现一个非常有趣的 label addonmanager.kube.netes.io/mode=Reconcile

现在,带有 label addonmanager.kube.netes.io/mode=Reconcile 的插件将被定期协调。 不鼓励通过 apiserver 直接操作这些插件,因为插件管理器会将它们恢复到原始 state。特别是:

  • 如果删除插件,将重新创建插件。

  • 插件将定期重新配置为模板文件中提供的字段给出的 state。

  • 当从 $ADDON_PATH 中删除其清单文件时,插件将被删除。

$ADDON_PATH 在控制平面节点上默认设置为 /etc/kube.netes/addons/。

有关更多信息,请查看此文档。

由于 AKS 是托管的 Kube.netes 服务,您将无法访问 $ADDON_PATH。 我们强烈建议不要强制更改 kube-system 资源,因为这些资源对于集群的正常运行至关重要。

OP 在评论中也证实了这一点:

刚刚联系了 MS 支持,我们无法更改 kube-system 命名空间的限制。

您可以检查命名空间的资源配额

kubectl describe quota

kubectl get quota

当多个用户或团队共享一个具有固定数量节点的集群时,就会担心一个团队可能会使用超过其公平份额的资源。

资源配额是管理员解决此问题的工具。

由 ResourceQuota object 定义的资源配额提供限制每个命名空间的总资源消耗的约束。 它可以按类型限制可以在命名空间中创建的对象的数量,以及该命名空间中的资源可能消耗的计算资源总量。

apiVersion: v1
kind: List
items:
- apiVersion: v1
  kind: ResourceQuota
  metadata:
    name: pods-high
  spec:
    hard:
      cpu: "1000"
      memory: 200Gi
      pods: "10"
    scopeSelector:
      matchExpressions:
      - operator : In
        scopeName: PriorityClass
        values: ["high"]

https://kube.netes.io/docs/concepts/policy/resource-quotas/

我还建议检查LimitRange

如果集群支持LimitRange ,它可能会将默认资源分配给 POD,但编辑Resourcequote将解决您的问题。

https://kube.netes.io/docs/tasks/administer-cluster/manage-resources/memory-default-namespace/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM