[英]How to change CPU Limit for namespace kube-system
将此作为社区 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.