Helm 抛出 Deployment.spec.strategy 验证错误

pri*_*i05 2 kubernetes kubernetes-helm

我正在尝试将部署策略添加为滚动部署。但我不确定为什么这不起作用。我们在 OpenShift 中具有相同的配置,运行时没有任何问题,但在 Kubernetes 中却失败了。

部署.yaml

spec:
  {{- if eq .Values.autoscale.enabled false}}
  replicas: {{ .Values.deployment.replicaCount }}
  {{- end }}
  {{- if eq .Values.strategy.enabled true}}
  strategy:
    activeDeadlineSeconds: {{ .Values.strategy.activeDeadlineSeconds }}
    rollingParams:
      intervalSeconds: {{ .Values.strategy.rollingParams.intervalSeconds }}
      maxSurge: {{ .Values.strategy.rollingParams.maxSurge }}
      maxUnavailable: {{ .Values.strategy.rollingParams.maxUnavailable }}
      timeoutSeconds: {{ .Values.strategy.rollingParams.timeoutSeconds }}
      updatePeriodSeconds: {{ .Values.strategy.rollingParams.updatePeriodSeconds }}
    type: {{ .Values.strategy.type }}
  {{- end}}
Run Code Online (Sandbox Code Playgroud)

值.yaml:

strategy:
  enabled: true
  activeDeadlineSeconds: 21600
  rollingParams:
    intervalSeconds: 1
    maxSurge: 25%
    maxUnavailable: 25%
    timeoutSeconds: 600
    updatePeriodSeconds: 1
  type: Rolling
Run Code Online (Sandbox Code Playgroud)

错误:

Error: UPGRADE FAILED: error validating "": error validating data: [ValidationError(Deployment.spec.strategy): unknown field "activeDeadlineSeconds" in io.k8s.api.apps.v1.DeploymentStrategy, ValidationError(Deployment.spec.strategy): unknown field "rollingParams" in io.k8s.api.apps.v1.DeploymentStrategy]
helm.go:75: [debug] error validating "": error validating data: [ValidationError(Deployment.spec.strategy): unknown field "activeDeadlineSeconds" in io.k8s.api.apps.v1.DeploymentStrategy, ValidationError(Deployment.spec.strategy): unknown field "rollingParams" in io.k8s.api.apps.v1.DeploymentStrategy]
Run Code Online (Sandbox Code Playgroud)

我不确定出了什么问题。我检查了 io.k8s.api.apps.v1.DeploymentStrategy 的文档,但无法正常工作

谢谢

pal*_*taa 7

看来您的变量名称是错误的,检查文档,它说应该按照您的尝试完成,转到一个工作生产示例,如下所示:

  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
Run Code Online (Sandbox Code Playgroud)

更改变量名称并让我知道是否有帮助。

  • 是的你是对的!相同的配置在 OpenShift 中运行良好。`activeDeadlineSeconds`、`intervalSeconds`、`timeoutSeconds`、`updatePeriodSeconds` 无法被识别。是因为某些版本不匹配吗?您能给我指出您提到的文档吗?谢谢你! (2认同)