簡體   English   中英

Kubernetes舵圖-調試

[英]Kubernetes Helm Chart - Debugging

我找不到描述這些錯誤的好信息:

[sarah@localhost helm] helm install statefulset --name statefulset --debug
[debug] Created tunnel using local port: '33172'

[debug] SERVER: "localhost:33172"

[debug] Original chart version: ""
[debug] CHART PATH: /home/helm/statefulset/

Error: error validating "": error validating data: [field spec.template for v1beta1.StatefulSetSpec is required, field spec.serviceName for v1beta1.StatefulSetSpec is required, found invalid field containers for v1beta1.StatefulSetSpec]

我還是Helm的新手。 我建立了兩個工作表,它們與該模板相似,並且即使代碼沒有太大不同,也沒有這些錯誤。 我認為可能存在某種我不注意到的格式化錯誤。 要么是因為類型不同(其他是Pod,這是StatefulSet)。

它引用的YAML文件在這里:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: "{{.Values.PrimaryName}}"
  labels:
    name: "{{.Values.PrimaryName}}"
    app: "{{.Values.PrimaryName}}"
    chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  annotations:
    "helm.sh/created": {{.Release.Time.Seconds | quote }}
spec:
  #serviceAccount: "{{.Values.PrimaryName}}-sa"
  containers:
  - name: {{.Values.ContainerName}}
    image: "{{.Values.PostgresImage}}"
    ports:
    - containerPort: 5432
      protocol: TCP
      name: postgres
    resources:
      requests:
        cpu: {{default "100m" .Values.Cpu}}
        memory: {{default "100M" .Values.Memory}}
    env:
    - name: PGHOST
      value: /tmp
    - name: PG_PRIMARY_USER
      value: primaryuser
    - name: PG_MODE
      value: set
    - name: PG_PRIMARY_PORT
      value: "5432"
    - name: PG_PRIMARY_PASSWORD
      value: "{{.Values.PrimaryPassword}}"
    - name: PG_USER
      value: testuser
    - name: PG_PASSWORD
      value: "{{.Values.UserPassword}}"
    - name: PG_DATABASE
      value: userdb
    - name: PG_ROOT_PASSWORD
      value: "{{.Values.RootPassword}}"
    volumeMounts:
    - name: pgdata
      mountPath: "/pgdata"
      readOnly: false
    volumes:
    - name: pgdata
      persistentVolumeClaim:
       claimName: {{.Values.PVCName}}

有人能夠a)向我指出正確的方向,以找出如何實施spec.template和spec.serviceName必填字段,b)了解為何“容器”字段無效,和/或c)提及有什么工具可以幫助調試Helm圖表嗎? 我嘗試了'helm lint'和'--debug'標志,但是'helm lint'沒有顯示錯誤,並且標志輸出顯示有上面的錯誤。

錯誤是否也可能來自其他文件?

StatefulSets對象的結構與Pod不同。 您需要稍微修改yaml文件:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: "{{.Values.PrimaryName}}"
  labels:
    name: "{{.Values.PrimaryName}}"
    app: "{{.Values.PrimaryName}}"
    chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  annotations:
    "helm.sh/created": {{.Release.Time.Seconds | quote }}
spec:
  selector:
    matchLabels:
      app: "" # has to match .spec.template.metadata.labels
  serviceName: "" # put your serviceName here
  replicas: 1 # by default is 1
  template:
    metadata:
      labels:
        app: "" # has to match .spec.selector.matchLabels
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: {{.Values.ContainerName}}
        image: "{{.Values.PostgresImage}}"
        ports: 
        - containerPort: 5432
          protocol: TCP
          name: postgres
        resources:
          requests:  
            cpu: {{default "100m" .Values.Cpu}}
            memory: {{default "100M" .Values.Memory}}
        env:
        - name: PGHOST
          value: /tmp
        - name: PG_PRIMARY_USER
          value: primaryuser
        - name: PG_MODE
          value: set
        - name: PG_PRIMARY_PORT
          value: "5432"
        - name: PG_PRIMARY_PASSWORD
          value: "{{.Values.PrimaryPassword}}"
        - name: PG_USER
          value: testuser
        - name: PG_PASSWORD
          value: "{{.Values.UserPassword}}
        - name: PG_DATABASE
          value: userdb
        - name: PG_ROOT_PASSWORD
          value: "{{.Values.RootPassword}}"
        volumeMounts:
        - name: pgdata
          mountPath: "/pgdata"
          readOnly: false
      volumes:
      - name: pgdata
        persistentVolumeClaim:
          claimName: {{.Values.PVCName}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM