[英]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.