我一直在 OpenShift Developer Sandbox 中使用 POD 进行一些练习。在上一次练习中,我尝试使用 python 和 redis 创建一个 Multi-Container POD :
我使用了 Janakiramm 的这些模板: https://github.com/janakiramm/Kubernetes-multi-container-pod/tree/master/Deploy
不幸的是有两个错误:
当我将鼠标悬停在这些状态上时,我会看到简短的描述,但没有详细的描述。 如果有人暗示这两种状态的确切含义,我将非常感激。
POD 中带有 python 和 redis 容器的 imagePullBackOff
ImagePullBackOff
表示 Kubernetes 无法拉取 Pod 规范中定义的镜像。您可以通过运行 kubectl describe pod <podname>
并查看 Events:
字段,或者运行 kubectl get events
并查找与您的 Pod 关联的事件来获取有关此错误的更多详细信息。
此错误的常见原因包括:
例如,如果我故意创建一个具有无效图像名称的 Pod,我会看到它进入
ImagePullBackOff
状态:
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
demo-server 0/1 ImagePullBackOff 0 96s
运行
kubectl describe pod demo-server
显示:
.
.
.
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 49s default-scheduler Successfully assigned lars-sandbox/demo-server to wrk-89
Normal AddedInterface 48s multus Add eth0 [10.131.10.85/23] from openshift-sdn
Normal BackOff 22s (x2 over 47s) kubelet Back-off pulling image "docker.io/alpinelinux/darkhttpdz"
Warning Failed 22s (x2 over 47s) kubelet Error: ImagePullBackOff
Normal Pulling 7s (x3 over 48s) kubelet Pulling image "docker.io/alpinelinux/darkhttpdz"
Warning Failed 7s (x3 over 48s) kubelet Failed to pull image "docker.io/alpinelinux/darkhttpdz": rpc error: code = Unknown desc = reading manifest latest in docker.io/alpinelinux/darkhttpdz: requested access to the resource is denied
Warning Failed 7s (x3 over 48s) kubelet Error: ErrImagePull
带有 mysql 容器的 POD 中的 CrashLoopBackOff
CrashLoopBackOff
表示 Kubernetes 能够成功拉取镜像并启动容器,但随后容器进程因错误而退出。
您通常可以通过查看
kubectl logs <pod>
的输出来获取有关此问题的更多信息。如果您的 Pod 有多个容器,您可以指定 --all-containers=true
,也可以使用 -c <container>
指定特定容器。在某些情况下(例如,如果您的 Pod 规范尝试运行不存在的命令),您还可以在 kubectl describe
/kubectl get events
中找到有用的信息,如上一节所述。
CrashLoopBackOff
的典型原因包括: