Kubernetes作业吊舱成功完成,但其中一个容器尚未准备就绪

时间:2018-11-30 09:23:55

标签: kubernetes

我有一些奇怪的行为。

运行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
...

1 个答案:

答案 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命令不会发出零退出代码。