You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GKE集群Kubernetes分层命名空间中应用Pod LimitRange

GKE分层命名空间(HNS)中为Pod应用LimitRange的实现方法

HNS(基于上游HNC分层命名空间控制器实现)目前没有提供和HierarchicalResourceQuota对应的专属HierarchicalLimitRange资源,找不到对应配置方式是正常的——LimitRange不需要跨层级的资源用量汇总能力,直接用HNS内置的资源对象传播能力就能实现全层级统一生效的效果,操作步骤如下:

方法一:通过HNS原生对象传播同步LimitRange(推荐)

  • 第一步:确认HNC配置允许传播LimitRange资源
    执行以下命令,将core分组下的limitranges资源加入HNC允许传播的资源列表:
    kubectl patch hncconfiguration config --type=merge -p '{"spec":{"resources":[{"group":"","resource":"limitranges"}]}}'
    
    如果之前已经配置过其他传播资源,只需要把limitranges追加到现有resources数组里即可,不要覆盖原有配置。
  • 第二步:在根父命名空间创建带传播注解的LimitRange
    直接在你要配置规则的最上层父命名空间创建标准的LimitRange对象,加上HNC识别的传播注解,控制器会自动把这个对象同步到所有下级子/孙命名空间,包括后续新建的下级命名空间。示例配置:
    apiVersion: v1
    kind: LimitRange
    metadata:
      name: default-pod-limit
      namespace: <你的父命名空间名称>
      annotations:
        hnc.x-k8s.io/propagate: "true" # 开启层级传播标记
    spec:
      limits:
      - type: Pod
        max:
          cpu: "4"
          memory: 8Gi
        min:
          cpu: "100m"
          memory: 128Mi
      - type: Container
        default:
          cpu: "500m"
          memory: 512Mi
        defaultRequest:
          cpu: "100m"
          memory: 128Mi
    
  • 验证同步结果:创建完成后等10秒左右,随便进入一个下级子命名空间执行kubectl get limitranges,就能看到自动同步过来的规则,后续修改父命名空间的LimitRange配置,所有下级副本会自动更新,删除父级对象也会同步删除所有下级副本。

方法二:通过策略引擎实现层级规则注入(适合复杂定制场景)

如果你需要根据不同层级做差异化的LimitRange规则,不想用全量同步的方式,可以部署Gatekeeper或Kyverno这类准入策略引擎,编写感知HNS层级标签的策略,在Pod创建时直接校验资源限制,或者自动给新创建的子命名空间注入对应LimitRange对象。这种方案灵活度更高,但运维复杂度也更高,没有特殊需求优先用第一种原生传播方案。

注意:不要尝试寻找第三方维护的HierarchicalLimitRange类CRD,上游HNC项目没有规划对应资源,现有第三方实现稳定性不足,生产环境不建议使用。


内容的提问来源于stack exchange,提问作者Avinash Jaiswal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:36:20