2017-12-27 172 views
0

我有一個關於resources字段的舵驗證的問題CronJob圖表,歡迎任何幫助。k8s:創建CronJob圖表時出錯

我用apiVersion批/ v1beta1

我得到的錯誤,當我嘗試從values.yaml

錯誤retrive值: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 }} 

錯誤disapierd當我改變了資源配置,以

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

掌舵版本是:

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

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

預先感謝

回答

1

TL; DR:由14位(而不是12)縮進,並刪除在容器中定義的附加spec屬性。


請注意您的YAML定義中的正確縮進。例如,containers屬性需要是的cronjob的spec.jobTemplate.spec.template屬性(的子屬性與spec.jobTemplate是用於一個Job對象模板(或JobTemplate),並spec.jobTemplate.spec.template然後是用於該工作的Pod對象模板(或PodTemplate)。

此外,Pod's containers attribute不需要額外spec。看一看用於各個對象對這些對象類型的確切規格的API參考(上面鏈接)。

對於CronJob,這是頭盔模板應該是什麼樣子的(同樣,縮進很重要!)。此外,請注意,在這種情況下,.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)的壓痕,頭盔會爲你的工作類似於下面的一個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