一. 如果在K8S 上查詢pod 對應的docker 那?
pod 是K8S 最小的計量機關,一個pod 可以對應一個容器, 也可以對應多個容器,我們怎麼知道我們pod 對應的docker 是那個?
1. 通過kubectl get pods -A | grep pod-name 将所需要的pod 過濾出來
[root@master ~]# kubectl get pods -A | grep nginx
default nginx-6799fc88d8-5m5j5 1/1 Terminating 0 24d
default nginx-6799fc88d8-hj6kw 1/1 Running 0 30m
2. 通過檢視pod詳細資訊确認pod 運作所在的實體機
[root@master ~]# kubectl get pods -n default nginx-6799fc88d8-hj6kw -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-6799fc88d8-hj6kw 1/1 Running 0 35m 192.168.1.5 node1 <none> <none>
由此可見我們的nginxi-6799 的pod 是運作在我們的node1 實體節點
2. 我們查詢pod 的yaml 檔案,過濾出他的docker 資訊。 可以擷取到docker id
[root@master ~]#
[root@master ~]# kubectl describe pod -n default nginx-6799fc88d8-hj6kw | grep docker
Container ID: docker://19e51808b28027a8a5236d22975732d954ddad2fff233c60f71e7ca25eb52eb5
Image ID: docker-pullable://nginx@sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
3. 登入到pod 所在的實體節點,檢查docker 可以檢查到我們2 步驟中的docker id
[root@master ~]# ssh node1
The authenticity of host 'node1 (192.168.0.51)' can't be established.
ECDSA key fingerprint is SHA256:xy2TbO8lBhNG95ymZ+h3qG9VYkLEGrsDJftKvt5z0Gw.
ECDSA key fingerprint is MD5:dd:b7:6d:82:76:cb:60:51:b9:6e:f9:85:b3:fe:c4:cb.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'node1' (ECDSA) to the list of known hosts.
Last login: Sun Jul 25 21:42:46 2021 from 192.168.0.104
[root@node1 ~]# docker ps --all | grep 19e51808
19e51808b280 nginx "/docker-entrypoint.…" 25 minutes ago Up 25 minutes k8s_nginx_nginx-6799fc88d8-hj6kw_default_b137fcb6-df6a-47f3-b2c3-f8bae5f07619_0
通過以上方法可以查詢到pod 對應的docker
2. 通過docker id ,或者是docker 工作目錄id 來反向查找pod 資訊
通過docker id 來找pod 資訊
[root@node1 ~]# docker inspect -f "{{.Id}} {{.State.Pid}} {{.Config.Hostname}}" 19e51808b280
19e51808b28027a8a5236d22975732d954ddad2fff233c60f71e7ca25eb52eb5 51240 nginx-6799fc88d8-hj6kw
在master 節點上 驗證通過kubectl get pod -A | grep nginx-6799fc88d8-hj6kw
[root@master ~]# kubectl get pod -A | grep nginx-6799fc88d8-hj6kw
default nginx-6799fc88d8-hj6kw 1/1 Running 0 121m
[root@node1 overlay2]# docker ps -q | xargs docker inspect --format '{{.State.Pid}},{{.Id}},{{.Name}},{{.GraphDriver.Data.WorkDir}}' | grep 0b5032594a9840968bd2a5ff6ba13232f184553879e233faed8325b3af1d5e1f
51240,19e51808b28027a8a5236d22975732d954ddad2fff233c60f71e7ca25eb52eb5,/k8s_nginx_nginx-6799fc88d8-hj6kw_default_b137fcb6-df6a-47f3-b2c3-f8bae5f07619_0,/var/lib/docker/overlay2/0b5032594a9840968bd2a5ff6ba13232f184553879e233faed8325b3af1d5e1f/work
19e51808b28027a8a5236d22975732d954ddad2fff233c60f71e7ca25eb52eb5 #docker 的id
nginx-6799fc88d8-hj6kw #pod name
/var/lib/docker/overlay2/0b5032594a9840968bd2a5ff6ba13232f184553879e233faed8325b3af1d5e1f/work #docker 的工作目錄