我有一些奇怪的行为。
运行job
时,它成功完成,但是其中一个容器表示它尚未准备就绪(或尚未准备好……):
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-******
工作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
此行为可能是什么原因?容器上没有定义准备就绪或活跃的探针。
如果我在广告连播中进行描述,则相关信息为:
...
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
...
答案 0 :(得分:1)
状态为Ready
的Pod表示“能够处理请求,应将其添加到所有匹配服务的负载平衡池中” ,请参见https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-conditions < / p>
在您的情况下,您不想服务请求,而只是执行一次php artisan migrate
并完成。因此,您不必担心此状态,重要的部分是State: Terminated
,其中包含Reason: Completed
和零退出代码:您的命令执行了所有操作,然后成功退出了。
如果命令的结果与预期的不同,则必须调查使用kubectl logs your-pod -c app
(其中app
是您所使用的容器的名称)运行此命令的容器中的日志和/或您可能期望php artisan migrate
命令不会发出零退出代码。