【问题标题】:Kubernetes pods are running but docker ps does not give any outputKubernetes pod 正在运行,但 docker ps 没有提供任何输出
【发布时间】:2017-05-25 13:23:24
【问题描述】:

我一直在尝试使用 kubernetes 在集群的 5000 端口上运行 tomcat 容器。但是当我使用 kubectl create -f tmocat_pod.yaml 时,它会创建 pod 但 docker ps 没有给出任何输出。为什么会这样?

理想情况下,当它运行一个 pod 时,这意味着它正在该 pod 内运行一个容器,并且该容器在 yaml 文件中定义。 为什么 docker ps 没有显示任何正在运行的容器? 我正在关注以下网址:

我怎样才能让它运行并看到tomcat在5000端口的浏览器上运行。

【问题讨论】:

  • 只是检查:您是否有可能在 master 上执行 docker ps 并且 pod 被安排在另一个节点上?
  • 我有同样的问题,我想手动设置 kubernetes 节点,作为初始阶段,我只有一个主节点,令人惊讶的是 kubectl 显示我的 nginx pod 运行成功,但没有成功运行,调试我检查了 docker ps -a 并没有显示容器

标签: docker kubernetes


【解决方案1】:

docker 容器应该在虚拟机上运行。由于我只在本地机器上安装了 minikube,因此我确认以下内容会带来您想要的:

minikub ssh
...
docker ps

只需尝试与 minikube ssh 等效的 kubernetes。

【讨论】:

    【解决方案2】:

    在 Kubernetes 中,Docker 容器运行在 Pod 上,Pod 运行在 Node 上,Node 运行在你的机器上(minikube/GKE)

    当您运行kubectl create -f tmocat_pod.yaml 时,您基本上会创建一个 pod,它会在该 pod 上运行 docker 容器。

    持有这个 pod 的节点基本上是一个虚拟实例,如果你可以“SSH”到那个节点,docker ps 就可以了。

    您需要的是: kubectl get pods

    kubectl get nodes

    kubectl describe pods <pod-name> 系统日志。

    kubectl logs <pod-name>

    【讨论】:

      【解决方案3】:

      您可以将终端与运行在节点/VM 中的 docker 服务器连接。

      在您的终端中使用此命令eval $(minikube docker-env)

      【讨论】:

        【解决方案4】:

        可能你没有使用 docker 作为容器运行时。 我遇到了同样的问题,我忘记了我以runsc 作为处理程序切换到gVisor。

        cat /etc/default/kubelet 
        
        KUBELET_EXTRA_ARGS="--container-runtime remote --container-runtime-endpoint unix:///run/containerd/containerd.sock"
        

        如果是这样,你需要使用runsc命令而不是docker。

        【讨论】:

          【解决方案5】:

          我不确定您在哪里运行docker ps 命令,但如果您尝试从主机执行此操作并且 k8s 集群位于其他位置,即您的计算机不是集群中的节点,@ 987654323@ 不会返回任何内容,因为容器未绑定到您的 docker 主机。

          假设您的 pod 正在运行,kubectl get pods 将显示您所有正在运行的 pod。要查看更多详细信息,您可以使用kubectl describe pod <yourpodname> 检查每个容器的状态(非常详细)。要获取 pod 名称,您应该能够在 kubernetes cli 中使用 tab-complete。此外,如果您的 pod 包含多个容器,您还需要提供容器名称,您可以在选择 pod 后使用 tab-complete。

          输出将类似于:

          kubectl describe pod comparison-api-dply-reborn-6ffb88b46b-s2mtx
          Name:           comparison-api-dply-reborn-6ffb88b46b-s2mtx
          Namespace:      default
          Node:           aks-nodepool1-99697518-0/10.240.0.5
          Start Time:     Fri, 20 Apr 2018 14:08:21 -0400
          Labels:         app=comparison-pod-reborn
                          pod-template-hash=2996446026
          ...
          Status:         Running
          IP:             *.*.*.*
          Controlled By:  ReplicaSet/comparison-api-dply-reborn-6ffb88b46b
          Containers:
            rabbit-mq:
              ...
              Port:           5672/TCP
              State:          Running
              ...
          

          如果您的容器和 pod 已经在运行,那么您不需要过多地对它们进行故障排除。要使它们能够从公共 Internet 访问,请查看服务 (https://kubernetes.io/docs/concepts/services-networking/service/) 以使您的 API 的 IP 地址固定且易于访问。

          【讨论】:

            【解决方案6】:

            您是否尝试过“docker ps -a”来查看容器是否已死?如果它在那里,您可以使用“docker logs”查看它的日志,也许这会给您一个提示。

            【讨论】:

            • 它也没有列出。如何从浏览器访问我在 pod 内运行的 tomcat 容器?
            【解决方案7】:

            如果您的 pod 运行成功,并且您正在寻找调度 pod 的节点上的容器,则问题可能是 kubernetes 正在使用不同的容器运行时。

            例子

            root@renjith-laptop:/home/renjith/raspbery-k8s# kubectl exec -it nginx-8586cf59-h92ct bash
            root@nginx-8586cf59-h92ct:/# exit
            exit
            root@renjith-laptop:/home/renjith/raspbery-k8s# kubectl get po -o wide
            NAME                   READY     STATUS    RESTARTS   AGE       IP         NODE
            nginx-8586cf59-h92ct   1/1       Running   0          47s      10.20.0.3   renjith-laptop
            root@renjith-laptop:/home/renjith/raspbery-k8s# docker ps
            CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
            root@renjith-laptop:/home/renjith/raspbery-k8s#
            

            在这里我可以执行到 pod,并且我在调度 pod 的同一节点中,但 docker ps 没有显示容器。在我的例子中,kubelet 使用不同的容器运行时,kubelet 服务的参数之一是--container-runtime-endpoint=unix:///var/run/cri-containerd.sock

            【讨论】:

              猜你喜欢
              • 2018-12-28
              • 1970-01-01
              • 2021-11-04
              • 1970-01-01
              • 2018-10-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2023-03-15
              相关资源
              最近更新 更多