天天看點

K8S與Docker 如何通過K8S 查詢docker ,通過docker 查詢pod

一. 如果在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  的工作目錄

繼續閱讀