我在一夜之间在 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)
我该如何调试?
TTL 将清理 Job 本身及其所有子对象。ttlSecondsAfterFinished
未设置,因此作业尚未清理。
来自工作文档
注意:如果您的作业有
restartPolicy = "OnFailure"
,请记住,一旦达到作业退避限制,运行作业的容器将终止。这会使调试 Job 的可执行文件更加困难。我们建议restartPolicy = "Never"
在调试 Job 或使用日志系统时进行设置,以确保失败的 Job 的输出不会无意中丢失。
您发布的作业规范没有,backoffLimit
因此它应该尝试运行底层任务 6 次。
如果容器进程以非零状态退出,那么它将失败,因此可以在日志中完全静默。
规范没有指定activeDeadlineSeconds
定义的秒数,所以我不确定你最终会遇到什么类型的超时。我认为这将是容器中的严重故障,因此不会出现超时。
归档时间: |
|
查看次数: |
1662 次 |
最近记录: |