【问题标题】:How do I diagnose a Kubernetes cluster that never becomes ready?如何诊断从未准备好的 Kubernetes 集群?
【发布时间】:2018-08-08 14:06:35
【问题描述】:

我向 Kubernetes 部署了一个映像,但它从未准备好,即使在几个小时之后也是如此。

$ kubectl get pods

NAME                            READY     STATUS             RESTARTS   AGE
myapp-b8dd974db-9jbsl    0/1       ImagePullBackOff   0          21m

这一切都发生在快速入门 Hello app 以及我自己的 Docker 映像中。

尝试附加失败。

$ kubectl attach -it  myapp-b8dd974db-9jbs

Unable to use a TTY - container myapp did not allocate one
If you don't see a command prompt, try pressing enter.
error: unable to upgrade connection: container 
   myapp not found in pod myapp-b8dd974db-9jbsl_default

尝试通过 HTTP 访问它失败。

在 Stackdriver Logging 中,我看到类似

的消息
skipping: failed to "StartContainer" for "myapp"
with ImagePullBackOff: "Back-off pulling image 
\"gcr.io/myproject/myapp-image:1.0\""

和No such image

但我确实部署了这些映像,并且 Cloud Console 显示这些 pod 是“绿色的”。

而kubectl 似乎告诉我集群没问题。

$ kubectl get service myapp
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE
myapp   LoadBalancer   10.43.248.78   35.193.107.141   8222:31840/TCP   29m

我该如何诊断?

【问题讨论】:

    标签: docker kubernetes google-kubernetes-engine


    【解决方案1】:

    您可以使用kubectl describe myapp-b8dd974db-9jbsl 获取有关您的 pod 的更多信息。

    但从状态消息“ImagePullBackOff”来看,它可能正在尝试下载 docker 映像并失败。

    这可能是由于多种原因,您将通过kubectl describe 获得更多信息,但可能是您没有该 docker 存储库的权限或 image/image:tag 不存在。

    【讨论】:

    • 有趣——我刚刚重新部署了 Hello 示例,现在一个运行在旧的有 ImagePullBackOff 的地方。
    • 那么它现在工作了吗?你用过describe命令吗?在它运行之后你也可以使用kubectl logs myapp-b8dd974db-9jbsl来获取容器的输出
    • 我重做了构建序列并成功了。可能我在某些情况下省略了 docker push,但在其他情况下做得正确。谢谢。
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    相关资源
    最近更新 更多