k8s:创建 CronJob 图表时出错
k8s: Error when creating CronJob chart
我对 CronJob
图表中 resources
字段的 helm 验证有疑问,欢迎任何帮助。
我使用 apiVersion batch/v1beta1
当我尝试从 values.yaml
中检索值时出现错误
错误:Error: error validating "": error validating data: found `invalid field requests for v1.Container
命令 I 运行: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"}
提前致谢
TL;DR:缩进 14 个空格(而不是 12 个)并删除容器定义中的附加 spec
属性。
注意 YAML 定义中的正确缩进。例如,containers
属性 需要是 CronJob 的 spec.jobTemplate.spec.template
属性 的子 属性(spec.jobTemplate
是 模板 Job object (or a JobTemplate), and spec.jobTemplate.spec.template
then being the template for that Job's Pod object (or a 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
的字段,导致错误消息:
Error: error validating "": error validating data: found `invalid field requests for v1.Container
我对 CronJob
图表中 resources
字段的 helm 验证有疑问,欢迎任何帮助。
我使用 apiVersion batch/v1beta1
当我尝试从 values.yaml
中检索值时出现错误错误:Error: error validating "": error validating data: found `invalid field requests for v1.Container
命令 I 运行: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"}
提前致谢
TL;DR:缩进 14 个空格(而不是 12 个)并删除容器定义中的附加 spec
属性。
注意 YAML 定义中的正确缩进。例如,containers
属性 需要是 CronJob 的 spec.jobTemplate.spec.template
属性 的子 属性(spec.jobTemplate
是 模板 Job object (or a JobTemplate), and spec.jobTemplate.spec.template
then being the template for that Job's Pod object (or a 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
的字段,导致错误消息:
Error: error validating "": error validating data: found `invalid field requests for v1.Container