一. 如果在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 验证