如何在 OpenShift 中调试崩溃循环 pods?

How to debug crash-looping pods in OpenShift?

我有一个简单的 DeploymentConfig:

apiVersion: v1
kind: DeploymentConfig
metadata:
  name: my-dc
  labels:
    app: my
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: my
    spec:
      containers:
        - name: my
          image: image-registry.openshift-image-registry.svc:5000/pc/rhel-atomic
          livenessProbe:
            exec:
              command:
                - echo
                - "I'm alive!"
              initialDelaySeconds: 10
          readinessProbe:
            exec:
              command:
                - echo
                - "I'm healthy!"
              initialDelaySeconds: 15
              periodSeconds: 15

image-registry.openshift-image-registry.svc:5000/pc/rhel-atomic 图像流指向我自己的图像,即:

FROM registry.access.redhat.com/rhel7/rhel-atomic

当我执行 oc create -f my-dc.yaml 并尝试检查发生了什么时,我发现我的 pods 正在崩溃循环。

为了调试它,我做了 oc status --suggest。它建议使用 oc logs my-dc-1-z889c -c my 列出容器日志。但是,没有任何容器的日志。

我的oc get events也没有用。它只是循环显示这些消息:

<unknown>   Normal    Scheduled                     pod/my-dc-1-vnhmp                     Successfully assigned pc/my-dc-1-vnhmp to ip-10-0-128-37.ec2.internal
31m         Normal    Pulling                       pod/my-dc-1-vnhmp                     Pulling image "image-registry.openshift-image-registry.svc:5000/pc/rhel-atomic"
31m         Normal    Pulled                        pod/my-dc-1-vnhmp                     Successfully pulled image "image-registry.openshift-image-registry.svc:5000/pc/rhel-atomic"
31m         Normal    Created                       pod/my-dc-1-vnhmp                     Created container my
31m         Normal    Started                       pod/my-dc-1-vnhmp                     Started container my
27m         Warning   BackOff                       pod/my-dc-1-vnhmp                     Back-off restarting failed container
<unknown>   Normal    Scheduled                     pod/my-dc-1-z8jgb                     Successfully assigned pc/my-dc-1-z8jgb to ip-10-0-169-70.ec2.internal
31m         Normal    Pulling                       pod/my-dc-1-z8jgb                     Pulling image "image-registry.openshift-image-registry.svc:5000/pc/rhel-atomic"
31m         Normal    Pulled                        pod/my-dc-1-z8jgb                     Successfully pulled image "image-registry.openshift-image-registry.svc:5000/pc/rhel-atomic"
31m         Normal    Created                       pod/my-dc-1-z8jgb                     Created container my
31m         Normal    Started                       pod/my-dc-1-z8jgb                     Started container my
27m         Warning   BackOff                       pod/my-dc-1-z8jgb                     Back-off restarting failed container

我该如何调试它?为什么容器会崩溃?

我正在使用 OpenShift Online。

pod中的单个容器似乎没有任何进程运行。因此,容器在启动后立即终止。

保留容器 运行 的一个选项是将这些添加到容器的 DeploymentConfig 中:

        command:
        - /bin/sh
        stdin: true

根据图像中可用的内容,将 /bin/sh 替换为不同的 shell(例如 bash)或从其他位置替换。