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
[root@master ~]#

 

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  的工作目錄

 

驗證可通過kubectl  get pod -A | grep  nginx-6799fc88d8-hj6kw  驗證

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM