POD状态CrashLoopBackOff和imagePullBackOff是什么意思?

问题描述 投票:0回答:1

我一直在 OpenShift Developer Sandbox 中使用 POD 进行一些练习。在上一次练习中,我尝试使用 python 和 redis 创建一个 Multi-Container POD :

我使用了 Janakiramm 的这些模板: https://github.com/janakiramm/Kubernetes-multi-container-pod/tree/master/Deploy

不幸的是有两个错误:

  • 带有 mysql 容器的 POD 中的 CrashLoopBackOff
  • POD 中带有 python 和 redis 容器的 imagePullBackOff

当我将鼠标悬停在这些状态上时,我会看到简短的描述,但没有详细的描述。 如果有人暗示这两种状态的确切含义,我将非常感激。

openshift
1个回答
0
投票

POD 中带有 python 和 redis 容器的 imagePullBackOff

ImagePullBackOff
表示 Kubernetes 无法拉取 Pod 规范中定义的镜像。您可以通过运行
kubectl describe pod <podname>
并查看
Events:
字段,或者运行
kubectl get events
并查找与您的 Pod 关联的事件来获取有关此错误的更多详细信息。

此错误的常见原因包括:

  • 图像名称无效
  • 达到 Docker Hub 速率限制
  • 无法通过远程注册表进行身份验证

例如,如果我故意创建一个具有无效图像名称的 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
的典型原因包括:

  • 将无效配置传递给您的应用程序
  • 在 Pod 规范中指定无效命令
© www.soinside.com 2019 - 2024. All rights reserved.