Kubernetes 作业失败,没有日志,没有终止原因,没有事件

And*_*son 3 kubernetes

我在一夜之间在 Kubernetes 中运行了一项工作。当我早上检查它时,它失败了。通常,我会检查 pod 日志或事件以确定原因。但是,该 pod 已被删除,并且没有任何事件。

kubectl describe job topics-etl --namespace dnc
Run Code Online (Sandbox Code Playgroud)

这是describe输出:

Name:           topics-etl
Namespace:      dnc
Selector:       controller-uid=391cb7e5-b5a0-11e9-a905-0697dd320292
Labels:         controller-uid=391cb7e5-b5a0-11e9-a905-0697dd320292
                job-name=topics-etl
Annotations:    kubectl.kubernetes.io/last-applied-configuration:
                  {"apiVersion":"batch/v1","kind":"Job","metadata":{"annotations":{},"name":"topics-etl","namespace":"dnc"},"spec":{"template":{"spec":{"con...
Parallelism:    1
Completions:    1
Start Time:     Fri, 02 Aug 2019 22:38:56 -0500
Pods Statuses:  0 Running / 0 Succeeded / 1 Failed
Pod Template:
  Labels:  controller-uid=391cb7e5-b5a0-11e9-a905-0697dd320292
           job-name=topics-etl
  Containers:
   docsund-etl:
    Image:      acarl005/docsund-topics-api:0.1.4
    Port:       <none>
    Host Port:  <none>
    Command:
      ./create-topic-data
    Requests:
      cpu:     1
      memory:  1Gi
    Environment:
      AWS_ACCESS_KEY_ID:      <set to the key 'access_key_id' in secret 'aws-secrets'>      Optional: false
      AWS_SECRET_ACCESS_KEY:  <set to the key 'secret_access_key' in secret 'aws-secrets'>  Optional: false
      AWS_S3_CSV_PATH:        <set to the key 's3_csv_path' in secret 'aws-secrets'>        Optional: false
    Mounts:
      /app/state from topics-volume (rw)
  Volumes:
   topics-volume:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  topics-volume-claim
    ReadOnly:   false
Events:         <none>
Run Code Online (Sandbox Code Playgroud)

这是作业配置 yaml。它有restartPolicy: OnFailure,但它从未重新启动。我也没有设置 TTL,所以 pod 永远不应该被清理。

apiVersion: batch/v1
kind: Job
metadata:
  name: topics-etl
spec:
  template:
    spec:
      restartPolicy: OnFailure
      containers:
        - name: docsund-etl
          image: acarl005/docsund-topics-api:0.1.6
          command: ["./create-topic-data"]
          env:
            - name: AWS_ACCESS_KEY_ID
              valueFrom:
                secretKeyRef:
                  name: aws-secrets
                  key: access_key_id
            - name: AWS_SECRET_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: aws-secrets
                  key: secret_access_key
            - name: AWS_S3_CSV_PATH
              valueFrom:
                secretKeyRef:
                  name: aws-secrets
                  key: s3_csv_path
          resources:
            requests:
              cpu: 1
              memory: 1Gi
          volumeMounts:
            - name: topics-volume
              mountPath: /app/state
      volumes:
        - name: topics-volume
          persistentVolumeClaim:
            claimName: topics-volume-claim
Run Code Online (Sandbox Code Playgroud)

我该如何调试?

Mat*_*att 7

TTL 将清理 Job 本身及其所有子对象。ttlSecondsAfterFinished未设置,因此作业尚未清理。

来自工作文档

注意:如果您的作业有restartPolicy = "OnFailure",请记住,一旦达到作业退避限制,运行作业的容器将终止。这会使调试 Job 的可执行文件更加困难。我们建议restartPolicy = "Never"在调试 Job 或使用日志系统时进行设置,以确保失败的 Job 的输出不会无意中丢失。

您发布的作业规范没有,backoffLimit因此它应该尝试运行底层任务 6 次。

如果容器进程以非零状态退出,那么它将失败,因此可以在日志中完全静默。

规范没有指定activeDeadlineSeconds定义的秒数,所以我不确定你最终会遇到什么类型的超时。我认为这将是容器中的严重故障,因此不会出现超时。