Kubernetes k8s:创建作业图表时出错

Kubernetes k8s:创建作业图表时出错,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我有一个关于CronJob图表中resources字段的helm验证的问题,欢迎任何帮助 我使用apiVersion batch/v1beta1 尝试从values.yaml检索值时出错 错误:error:error validating”“:error validating data:found`v1.Container的字段请求无效 我运行的命令:helm安装--干运行--调试我的图表 我的工作表如下: apiVersion: batch/v1beta1 kind: CronJob meta

我有一个关于
CronJob
图表中
resources
字段的helm验证的问题,欢迎任何帮助

我使用apiVersion batch/v1beta1

尝试从values.yaml检索值时出错

错误:
error:error validating”“:error validating data:found`v1.Container的字段请求无效

我运行的命令:
helm安装--干运行--调试我的图表

我的工作表如下:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: {{ .Chart.Name }}
spec:
  schedule: "0 */2 * * *"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
     ...
     spec:
  containers:
    ...
     spec:
       resources:
{{ toYaml .Values.resources | indent 12 }}
        spec:
          containers:
          - name: foo
            # ...
            resources:
            requests:
              cpu: 300m
              memory: 1024Mi
将资源配置更改为时出错

    resources:
      requests:
        cpu: 300m
        memory: 1024Mi
我不喜欢最后的更改,我希望按照我的常规配置指南,将值存储在values.yaml中

群集版本为

客户端版本:Version.Info{Major:“1”,Minor:“8”,GitVersion:“v1.8.4”,GitCommit:“9befc2b8928a9426501d3bf62f72849d5cbcd5a3”,gittrestate:“clean”,BuildDate:“2017-11-20T05:28:34Z”,政府版本:“go1.8.3”,编译器:“gc”,平台:“linux/amd64”}

服务器版本:Version.Info{Major:“1”,Minor:“8+”,GitVersion:“v1.8.4-gke.0”,GitCommit:“04502ae78d522a3d410de3710e1550cfb16dad4a”,GitRestate:“clean”,BuildDate:“2017-11-27T19:19:56Z”,政府版本:“go1.8.3b4”,编译器:“gc”,平台:“linux/amd64”}

头盔版本包括:

Client:&version.version{SemVer:“v2.7.0”,GitCommit:“08c1144f5eb3e3b636d9775617287cc26e53dba4”,gittrestate:“clean”}

Server:&version.version{SemVer:“v2.7.0”,GitCommit:“08c1144f5eb3e3b636d9775617287cc26e53dba4”,gittrestate:“clean”}


提前感谢TL;DR:缩进14个空格(而不是12个空格),并删除容器定义中的附加
spec
属性


注意YAML定义中的正确缩进。例如,
containers
属性需要是CronJob的
spec.jobTemplate.spec.template
属性的子属性(其中
spec.jobTemplate
是对象(或a)的模板,
spec.jobTemplate.spec.template
然后是该作业的对象(或a)的模板)

此外,不需要额外的
规范
。请查看相应对象的API参考(如上链接),以了解这些对象类型的确切规范

对于CronJob,这就是Helm模板的外观(同样,缩进很重要!)。此外,请注意,在这种情况下,
.spec.jobTemplate.spec.template.spec.resources.requests
属性需要缩进14个空格,而不是12个

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: {{ .Chart.Name }}
spec:
  schedule: "0 */2 * * *"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
          # ...
        spec:
          containers:
          - name: foo
            # ...
            resources:
{{ toYaml .Values.resources | indent 14 }}

关于您收到的错误:使用12个空格的缩进(
indent 12
),Helm将为您的作业创建类似以下内容的YAML定义:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: {{ .Chart.Name }}
spec:
  schedule: "0 */2 * * *"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
     ...
     spec:
  containers:
    ...
     spec:
       resources:
{{ toYaml .Values.resources | indent 12 }}
        spec:
          containers:
          - name: foo
            # ...
            resources:
            requests:
              cpu: 300m
              memory: 1024Mi
如您所见,
requests
属性(打算作为
resources
属性的子属性)现在实际上是定义的属性。但是,容器资源没有名为
requests
的字段,导致错误消息:

错误:验证“”时出错:验证数据时出错:找到“v1.Container的无效字段请求”


TL;DR:缩进14个空格(而不是12个空格),并删除容器定义中附加的
spec
属性


注意YAML定义中的正确缩进。例如,
containers
属性需要是CronJob的
spec.jobTemplate.spec.template
属性的子属性(其中
spec.jobTemplate
是对象(或对象)的模板),和
spec.jobTemplate.spec.template
,然后成为该作业对象(或a)的模板

此外,不需要额外的
规范
。请查看相应对象的API参考(如上链接),以了解这些对象类型的确切规范

对于CronJob,这就是Helm模板的外观(同样,缩进很重要!)。此外,请注意,在这种情况下,
.spec.jobTemplate.spec.template.spec.resources.requests
属性需要缩进14个空格,而不是12个

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: {{ .Chart.Name }}
spec:
  schedule: "0 */2 * * *"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
          # ...
        spec:
          containers:
          - name: foo
            # ...
            resources:
{{ toYaml .Values.resources | indent 14 }}

关于您收到的错误:使用12个空格的缩进(
indent 12
),Helm将为您的作业创建类似以下内容的YAML定义:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: {{ .Chart.Name }}
spec:
  schedule: "0 */2 * * *"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
     ...
     spec:
  containers:
    ...
     spec:
       resources:
{{ toYaml .Values.resources | indent 12 }}
        spec:
          containers:
          - name: foo
            # ...
            resources:
            requests:
              cpu: 300m
              memory: 1024Mi
如您所见,
requests
属性(打算作为
resources
属性的子属性)现在实际上是定义的属性。但是,容器资源没有名为
requests
的字段,导致错误消息:

错误:验证“”时出错:验证数据时出错:找到“v1.Container的无效字段请求”