Kubernetes 不接受新的作业定义

Kubernetes not accepting new job definition

我正在 运行EKS 上工作。在尝试使用无效的 yaml 开始工作后,它似乎并没有放弃错误的 yaml,并且即使在更正文件后也一直给我同样的错误信息。

  1. 我成功运行了一份工作。
  2. 我在 env 部分添加了一个布尔值的环境变量,这引发了这个错误:
    • Error from server (BadRequest): error when creating "k8s/jobs/create_csv.yaml": Job in version "v1" cannot be handled as a Job: v1.Job: Spec: v1.JobSpec: Template: v1.PodTemplateSpec: Spec: v1.PodSpec: Containers: []v1.Container: v1.Container: Env: []v1.EnvVar: v1.EnvVar: Value: ReadString: expects " or n, but found t, error found in #10 byte of ...|,"value":true},{"nam|..., bigger context ...|oduction"},{"name":"RAILS_LOG_TO_STDOUT","value":true},{"name":"AWS_REGION","value":"us-east-1"},{"n|...
  3. 我将值更改为字符串 yes,但错误消息继续显示原始的错误 yaml。
  4. kubectl get jobs --all-namespaces 中没有工作
    • 所以我不知道这个旧的 yaml 会藏在哪里。

我认为这可能是因为我没有将 imagePullPolicy 设置为 Always,但即使我在本地 运行 命令 kubectl 也会发生这种情况。

以下是我的作业定义文件:

apiVersion: batch/v1
kind: Job
metadata:
  generateName: create-csv-
  labels:
    transformer: AR
spec:
  template:
    spec:
      containers:
      - name: create-csv
        image: my-image:latest
        imagePullPolicy: Always
        command: ["bin/rails",  "create_csv"]
        env:
          - name: RAILS_ENV
            value: production
          - name: RAILS_LOG_TO_STDOUT
            value: yes
          - name: AWS_REGION
            value: us-east-1
          - name: AWS_ACCESS_KEY_ID
            valueFrom:
              secretKeyRef:
                name: aws
                key: aws_access_key_id
          - name: AWS_SECRET_ACCESS_KEY
            valueFrom:
              secretKeyRef:
                name: aws
                key: aws_secret_access_key
      restartPolicy: OnFailure
  backoffLimit: 6

"yes" 必须在 yaml 中引用,否则它会被视为表示布尔值 true

的关键字

试试这个:

value: "yes"

单引号对我不起作用,但下面的引号对我有用:

value: "'true'"