Pod中的Kubernetes Docker进程

时间:2018-06-27 03:20:41

标签: docker kubernetes

我有一个带有CMD的docker映像来运行Java应用程序。

此应用程序正被部署到容器中的kubernetes中。由于我将其部署为docker映像,因此我期望它作为docker进程运行。因此,我刚登录到Pod,并尝试使用“ docker ps ”。

但是,令我感到惊讶的是,它作为Java进程而不是作为docker进程运行。我可以通过“ ps -ef

查看该过程

我很困惑,它在内部如何工作?不知道从哪里获得更多详细信息。背后的任何联系或理论...

谢谢

2 个答案:

答案 0 :(得分:3)

正如其他人所述, Kubernetes在内部使用docker来部署容器。为了详细解释,请考虑具有4个节点,1个主节点和3个从属节点的集群。

$ kubectl get nodes
NAME                           STATUS    ROLES     AGE       VERSION
******.mylabserver.com   Ready     master    13d       v1.10.5
******.mylabserver.com   Ready     <none>    13d       v1.10.5
******.mylabserver.com   Ready     <none>    13d       v1.10.5
******.mylabserver.com   Ready     <none>    13d       v1.10.5

我正在部署具有 nignx docker映像的pod。

$ cat pod-nginx.yml 
apiVersion: v1
kind: Pod
metadata:
  name: alpine
  namespace: default
spec:
  containers:
  - name: alpine
    image: alpine
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

您可以按如下所示获取广告连播的状态:

$ kubectl get pods -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP           NODE
alpine    1/1       Running   0          21s       10.244.3.4   ******.mylabserver.com

Kube-scheduler 将在可用节点之一上调度广告连播。

现在,将pod部署到服务器上,您可以在其中登录到该特定服务器并找到所需的信息。

root@******:/home/user# docker ps
CONTAINER ID        IMAGE                                                                            COMMAND                  CREATED              STATUS         
     PORTS               NAMES
6486de4410ad        alpine@sha256:e1871801d30885a610511c867de0d6baca7ed4e6a2573d506bbec7fd3b03873f   "sleep 3600"             58 seconds ago       Up 57 seconds  
                         k8s_alpine_alpine_default_2e2b3016-79c8-11e8-aaab-

在该服务器上运行docker exec命令以查看内部运行的进程。

root@******:/home/user# docker exec -it 6486de4410ad /bin/sh
/ # ps -eaf
PID   USER     TIME   COMMAND
    1 root       0:00 sleep 3600
    7 root       0:00 /bin/sh
   11 root       0:00 ps -eaf
/ # 

https://kubernetes.io/docs/home/-这可以为您提供有关Pod以及Pod /容器如何进行部署的更多信息。

希望这会有所帮助。

答案 1 :(得分:0)

Kubernetes使用用户提供的yaml文件,部署其中具有一个或多个容器的pod(Kubernetes部署的较小单位)。

您可以使用 kubectl 工具访问容器内的容器。 例如,如果您的吊舱有一个容器,则可以在其中打开一个外壳:

kubectl exec -ti <pod-name> -n <pod-namespace> bash

通过此shell,您可以运行ps命令,输出将是在容器内运行的隔离进程。

如果要观察Kubernetes已部署在节点中的Docker容器,可以连接到该节点并运行docker ps命令。