如何在 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)或从其他位置替换。
我有一个简单的 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)或从其他位置替换。