k8s:创建CronJob图表时出错

问题描述 投票:0回答:1

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

我使用apiVersion batch / v1beta1

当我尝试从values.yaml检索值时出现错误

错误:Error: error validating "": error validating data: found `invalid field requests for v1.Container

命令我运行:helm install --dry-run --debug my_chart

我的CronJob图表如下:

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 }}

将资源配置更改为时,错误消失了

    resources:
      requests:
        cpu: 300m
        memory: 1024Mi

我不喜欢上次更改,我想按照常规配置指南并将值存储在values.yaml中

集群版本

Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.4", GitCommit:"9befc2b8928a9426501d3bf62f72849d5cbcd5a3", GitTreeState:"clean", BuildDate:"2017-11-20T05:28:34Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

Server Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.4-gke.0", GitCommit:"04502ae78d522a3d410de3710e1550cfb16dad4a", GitTreeState:"clean", BuildDate:"2017-11-27T19:19:56Z", GoVersion:"go1.8.3b4", Compiler:"gc", Platform:"linux/amd64"}

helm版本是:

Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}

Server: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}

提前致谢

kubernetes kubernetes-helm
1个回答
1
投票

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


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

此外,Pod's containers attribute不需要额外的spec。有关这些对象类型的确切说明,请查看相应对象的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定义,类似于以下内容:

        spec:
          containers:
          - name: foo
            # ...
            resources:
            requests:
              cpu: 300m
              memory: 1024Mi

如您所见,requests属性(旨在成为resources属性的子属性)现在实际上是Container定义的属性。但是,Container资源没有名为requests的字段,从而导致错误消息:

错误:验证错误“”:错误验证数据:发现`对v1.Container的无效字段请求

© www.soinside.com 2019 - 2024. All rights reserved.