簡體   English   中英

Pod 內的 Kubernetes Docker 進程

[英]Kubernetes Docker process inside pod

我有一個帶有 CMD 的 Docker 映像來運行 Java 應用程序。

此應用程序正在部署到 Kubernetes 的容器中。 因為,我將它部署為 Docker 映像,所以我期望它像 Docker 進程一樣運行。 所以,我剛剛登錄到 pod 並嘗試使用“ docker ps ”。

但是,令我驚訝的是它作為 Java 進程而不是 docker 進程運行。 我可以通過“ ps -ef ”看到這個過程

我很困惑,它如何在內部工作?

正如其他人所說, 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 image的 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

您可以獲取 pod 的狀態,如下所示:

$ 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。

現在 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/容器進行部署的更多信息。

希望這可以幫助。

Kubernetes 使用用戶提供的 yaml 文件部署一個 pod(Kubernetes 部署的較小單元),其中包含一個或多個容器。

您可以使用kubectl工具訪問 pod 內的容器。 例如,如果您的 pod 有一個容器,您可以在其中打開一個 shell:

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

通過這個 shell,你可以運行ps命令,你的輸出將是在你的容器內運行的隔離進程。

如果您想觀察 Kubernetes 部署在節點中的 Docker 容器,您可以連接到該節點並運行docker ps命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM