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

如何绕过Jsonnet模板默认值?移除Deployment.spec.replicas字段

如何在Jsonnet生成的Kubernetes Deployment中移除默认的replicas字段

你遇到的问题是因为所用的deployment.new封装函数(常见于ksonnet或jsonnet-libs)会自动给Deployment的spec添加replicas: 1的默认值,哪怕你没主动传入这个参数。下面是两种解决办法:

方法一:用Jsonnet对象减法移除字段

直接在生成的deployment对象上减去spec.replicas字段即可,Jsonnet中通过指定键为null的对象做减法,就能删除对应字段:

'app-deployment':
  deployment.new(
    name=app,
    containers=[
      container1,
      container2,
    ],
  ) - { spec: { replicas: null } }

方法二:手动构造Deployment对象

如果不想依赖封装函数的默认逻辑,可以完全手动构建Deployment结构,这样能精准控制所有字段,不会出现默认的replicas:

'app-deployment': {
  apiVersion: 'apps/v1',
  kind: 'Deployment',
  metadata: {
    name: app,
    namespace: 'ns',
  },
  spec: {
    selector: {
      matchLabels: { app: app }, // 注意需要手动添加selector,这是Deployment必需的字段
    },
    template: {
      metadata: {
        labels: { app: app },
      },
      spec: {
        containers: [
          container1,
          container2,
        ],
      },
    },
  },
}

第一种方法更简洁,适合继续使用封装函数的场景;第二种方法适合需要完全自定义Deployment结构的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:42:39