我有一些奇怪的行为。
当 ajob运行时,它成功完成,但其中一个容器说它没有(或没有......)准备好:
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE
default **********-migration-22-20-16-29-11-2018-xnffp 1/2 Completed 0 11h 10.4.5.8 gke-******
Run Code Online (Sandbox Code Playgroud)
工作yaml:
apiVersion: batch/v1
kind: Job
metadata:
name: migration-${timestamp_hhmmssddmmyy}
labels:
jobType: database-migration
spec:
backoffLimit: 0
template:
spec:
restartPolicy: Never
containers:
- name: app
image: "${appApiImage}"
imagePullPolicy: IfNotPresent
command:
- php
- artisan
- migrate
- name: cloudsql-proxy
image: gcr.io/cloudsql-docker/gce-proxy:1.11
command: ["/cloud_sql_proxy",
"-instances=${SQL_INSTANCE_NAME}=tcp:3306",
"-credential_file=/secrets/cloudsql/credentials.json"]
securityContext:
runAsUser: 2 # non-root user
allowPrivilegeEscalation: false
volumeMounts:
- name: cloudsql-instance-credentials
mountPath: /secrets/cloudsql
readOnly: true
volumes:
- name: cloudsql-instance-credentials
secret:
secretName: cloudsql-instance-credentials
Run Code Online (Sandbox Code Playgroud)
这种行为的原因可能是什么?容器上没有定义就绪或活跃度探测器。
如果我在 pod 上做一个描述,相关信息是:
...
Command:
php
artisan
migrate
State: Terminated
Reason: Completed
Exit Code: 0
Started: Thu, 29 Nov 2018 22:20:18 +0000
Finished: Thu, 29 Nov 2018 22:20:19 +0000
Ready: False
Restart Count: 0
Requests:
cpu: 100m
...
Run Code Online (Sandbox Code Playgroud)
具有Ready状态的 Pod意味着它“能够处理请求,应该添加到所有匹配服务的负载平衡池中”,请参阅https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#豆荚条件
在您的情况下,您不想为请求提供服务,而只想执行php artisan migrate一次并完成。所以你不必担心这个状态,重要的部分是State: Terminated带有一个Reason: Completed和一个零的退出代码:你的命令做了什么然后成功退出。
如果命令的结果不是您所期望的,您必须调查运行此命令的容器的日志kubectl logs your-pod -c app(app您定义的容器的名称在哪里),和/或您希望php artisan migrate命令不会发出零退出代码。
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |