Kubernetes pod正在运行,但docker ps不提供任何输出

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

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

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

如何让它运行并在端口5000上看到tomcat在浏览器上运行。

docker kubernetes
5个回答
3
投票

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

minikub ssh
...
docker ps

试试相当于minikube ssh的kubernetes。


1
投票

我不确定你在哪里运行docker ps命令,但如果你试图从你的主机上做到这一点并且k8s集群位于其他地方,即你的机器不是集群中的节点,docker ps将不会返回任何内容容器未绑定到docker主机。

假设您的pod正在运行,kubectl get pods将显示所有正在运行的pod。要查看更多详细信息,您可以使用kubectl describe pod <yourpodname>检查每个容器的状态(非常详细)。要获取pod名称,您应该能够使用tab-complete和kubernetes cli。此外,如果您的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
    ...

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


1
投票

在Kubernetes中,Docker容器在Pod上运行,Pod在节点上运行,节点在您的机器上运行(minikube / GKE)

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

保存此pod的节点基本上是一个虚拟实例,如果你可以“SSH”进入该节点,docker ps就可以了。

你需要的是:kubectl get pods

kubectl get nodes

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

kubectl logs <pod-name>


0
投票

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


0
投票

如果您的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

© www.soinside.com 2019 - 2024. All rights reserved.