一、docker容器的结构

containerd 是老大,新建一个容器会先新建 containerd-shim,containerd-shim 会建出来最终的docker容器。

1、 查看containerd的pid

pidof containerd == 2841

2、 查看 父进程是containerd的进程,全是 containerd-shim

ps -A -ostat,pid,ppid,user,cmd|grep 2841


Ssl   2841     1 root     /usr/bin/containerd
Sl    7320  2841 root     containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/52eeb71ffa22cd8020a6214fa1a556c2e22c3012858a75aa5799b021502916e1 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

Sl    7342  2841 root     containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/08bcf4df1a2072dc69f825517c6c1ace3ed81886d420fe974fc0683ae61aa7fb -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

Sl    8087  2841 root     containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/c3d3530cf2f5dddff0d1a37c5cd6791ffb15cf21d5e1096d96ca36269e077136 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

Sl   19039  2841 root     containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/63ee2df4c255110248842e885fb0b9dafca9791dda6a00499bbc3fc99e153743 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

Sl   19338  2841 root     containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

Sl   19407  2841 root     containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

3、 查看一个containerd-shim 和子进程

# 这是一个 nginx容器
ps -A -opid,ppid,user,cmd |grep 7320

 7320  2841  root     containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/52eeb71ffa22cd8020a6214fa1a556c2e22c3012858a75aa5799b021502916e1 -address /run/containerd/containerd.sock -containerd-binary /usr/bin/containerd -runtime-root /var/run/docker/runtime-runc

 7337  7320  root     nginx: master process nginx -g daemon off;

4、查看这个nginx的容器

# docker ps |grep 52eeb71ffa
52eeb71ffa22        xxxx/xxxx/safe-nginx            "nginx -g 'daemon of…"   41 hours ago        Up 41 hours                             k8s_safe-nginx_668c459d6-pp7bxxx-xxxx_4e11582d-aeea-11ea-8af4-0050569e47b9_0

二、 pod与容器,cgroup

1、systemctl status && systemd-cgls

在不加最后的unit参数的时候,这个命名变得很陌生了。主要是查看 cgroup状态。

[root@my-node1 ~]# systemctl status
● my-node1
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: 一 2020-06-15 16:48:44 CST; 1 day 17h ago
   CGroup: /
           ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
           ├─kubepods
           │ ├─besteffort
           │ │ └─podf86494f1-aeea-11ea-8af4-0050569e47b9
           │ │   ├─167e38f31f6f225fe7e53a6fc31a1aebb85628531b6b3b438a3591fffefca93c
           │ │   │ └─kube-proxy
           │ │   │   └─6227 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf --hostname-override=my-node1
           │ │   └─1ff0ae01463af951a16ac8e7006ec99333e8a42578118791529755b5704de4cb
           │ │     └─5982 /pause
           │ └─burstable
           │   ├─podf5f16f15-af9e-11ea-8af4-0050569e47b9
           │   │ ├─d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
           │   │ │ ├─19431 nginx: master process nginx -g daemon off
           │   │ │ ├─19453 nginx: worker proces
           │   │ │ ├─19454 nginx: worker proces
           │   │ │ ├─19455 nginx: worker proces
           │   │ │ ├─19456 nginx: worker proces
           │   │ │ ├─19457 nginx: worker proces
           │   │ │ ├─19458 nginx: worker proces
           │   │ │ ├─19459 nginx: worker proces
           │   │ │ └─19460 nginx: worker proces
           │   │ ├─9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
           │   │ │ └─19356 redis-server
           │   │ └─63ee2df4c255110248842e885fb0b9dafca9791dda6a00499bbc3fc99e153743
           │   │   └─19057 /pause
          │   ├─pod4e11582d-aeea-11ea-8af4-0050569e47b9
           │   │ ├─52eeb71ffa22cd8020a6214fa1a556c2e22c3012858a75aa5799b021502916e1
           │   │ │ ├─7337 nginx: master process nginx -g daemon off
           │   │ │ ├─7380 nginx: worker proces
           │   │ │ ├─7381 nginx: worker proces
           │   │ │ ├─7382 nginx: worker proces
           │   │ │ ├─7383 nginx: worker proces
           │   │ │ ├─7384 nginx: worker proces
           │   │ │ ├─7385 nginx: worker proces
           │   │ │ ├─7386 nginx: worker proces
           │   │ │ └─7387 nginx: worker proces
           │   │ └─0a5529d9b0fcb544630ea2722c8a82feaa8c3d2efd7ea4118bc5713ffa604437
           │   │   └─7175 /pause
           │   ├─podf8697bea-aeea-11ea-8af4-0050569e47b9
           │   │ ├─99e0fbfa76ad0141bce359555fa343380a0c27b8a441609b9fe41beed954eda4
           │   │ │ ├─6962 /bin/sh /install-cni.sh
           │   │ │ └─7233 sleep 3600
           │   │ ├─1ac5b03e0a9683313a409330a0c7390ea908d963ec9955ff71d2739882924c2d
           │   │ │ └─6593 /opt/bin/flanneld --ip-masq --kube-subnet-mgr
           │   │ └─dcbc2486a119dac68cb6bb2b90941411927c27a0a58c9027475026d02b83e224
           │   │   └─5967 /pause
           │   └─podf8662a28-aeea-11ea-8af4-0050569e47b9
           │     ├─599b533be6646195bc24f5d32bf2551a131a207fd469522608fe7916b187c7cc
           │     │ └─7049 ./kube-rbac-proxy --logtostderr --secure-listen-address=11.11.176.68:9100 --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_
           │     ├─a18a4606e095579037d4e7f10276b64ab020abf76472598c39acfa67cd16b0f2
           │     │ └─6715 /bin/node_exporter --web.listen-address=127.0.0.1:9100 --path.procfs=/host/proc --path.sysfs=/host/sys --path.rootfs=/host/root --collector.textfile.directory=/host/key --collector
           │     └─aa8c844c2907348c09244c240927964494ab1a43181c1e2cd1e8154e4451bb78
           │       └─5974 /pause
           ├─user.slice
           │ └─user-0.slice
           │   ├─session-290.scope
           │   │ ├─11908 systemctl status
           │   │ ├─11909 less
           │   │ ├─31551 sshd: root@pts/1
           │   │ └─31579 -bash
           │   ├─session-175.scope
           │   │ ├─30428 sshd: root@pts/0
           │   │ └─30430 -bash
           │   └─session-1.scope
           │     ├─1348 login -- root
           │     ├─1352 -bash
           │     └─1448 bash
           └─system.slice
             ├─rpc-statd.service
             │ └─7519 /usr/sbin/rpc.statd
             ├─kubelet.service
             │ └─5773 /usr/local/sbin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --pod-manifest-path=/etc/kubernetes/manifests --allow-pr
             ├─docker.service
             │ └─2842 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
             ├─containerd.service
             │ ├─ 2841 /usr/bin/containerd
             │ ├─ 5914 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/dcbc2486a119dac68cb6bb2b90941411927c27a0a58c9027475026d02b83e224 -address /run/contain
             │ ├─ 5918 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/aa8c844c2907348c09244c240927964494ab1a43181c1e2cd1e8154e4451bb78 -address /run/contain
             │ ├─ 5929 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/1ff0ae01463af951a16ac8e7006ec99333e8a42578118791529755b5704de4cb -address /run/contain
             │ ├─ 6210 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/167e38f31f6f225fe7e53a6fc31a1aebb85628531b6b3b438a3591fffefca93c -address /run/contain
             │ ├─ 6575 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/1ac5b03e0a9683313a409330a0c7390ea908d963ec9955ff71d2739882924c2d -address /run/contain
             │ ├─ 6698 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/a18a4606e095579037d4e7f10276b64ab020abf76472598c39acfa67cd16b0f2 -address /run/contain
             │ ├─ 6944 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/99e0fbfa76ad0141bce359555fa343380a0c27b8a441609b9fe41beed954eda4 -address /run/contain
             │ ├─ 7031 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/599b533be6646195bc24f5d32bf2551a131a207fd469522608fe7916b187c7cc -address /run/contain
             │ ├─ 7156 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/0a5529d9b0fcb544630ea2722c8a82feaa8c3d2efd7ea4118bc5713ffa604437 -address /run/contain
             │ ├─ 7320 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/52eeb71ffa22cd8020a6214fa1a556c2e22c3012858a75aa5799b021502916e1 -address /run/contain
             │ ├─ 7342 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/08bcf4df1a2072dc69f825517c6c1ace3ed81886d420fe974fc0683ae61aa7fb -address /run/contain
             │ ├─ 8087 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/c3d3530cf2f5dddff0d1a37c5cd6791ffb15cf21d5e1096d96ca36269e077136 -address /run/contain
             │ ├─19039 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/63ee2df4c255110248842e885fb0b9dafca9791dda6a00499bbc3fc99e153743 -address /run/contain
             │ ├─19338 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94 -address /run/contain
             │ └─19407 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a -address /run/contain
             ├─nkucsd.service
             │ └─1042 nkucsd
             ├─sshd.service
             │ └─1025 /usr/sbin/sshd -D
             ├─postfix.service
             │ ├─1272 /usr/libexec/postfix/master -w
             │ ├─1274 qmgr -l -t unix -u
             │ └─5409 pickup -l -t unix -u
             ├─tuned.service
             │ └─1023 /usr/bin/python -Es /usr/sbin/tuned -l -P
             ├─crond.service
             │ └─731 /usr/sbin/crond -n
             ├─NetworkManager.service
             │ └─717 /usr/sbin/NetworkManager --no-daemon
             ├─vmtoolsd.service
             │ └─716 /usr/bin/vmtoolsd
             ├─vgauthd.service
             │ └─715 /usr/bin/VGAuthService -s
             ├─rsyslog.service
             │ └─710 /usr/sbin/rsyslogd -n
             ├─gssproxy.service
             │ └─719 /usr/sbin/gssproxy -D
             ├─polkit.service
             │ └─707 /usr/lib/polkit-1/polkitd --no-debug
             ├─chronyd.service
             │ └─713 /usr/sbin/chronyd
             ├─dbus.service
             │ └─700 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
             ├─irqbalance.service
             │ └─699 /usr/sbin/irqbalance --foreground
             ├─systemd-logind.service
             │ └─697 /usr/lib/systemd/systemd-logind
             ├─rpcbind.service
             │ └─703 /sbin/rpcbind -w
             ├─auditd.service
             │ └─673 /sbin/auditd
             ├─systemd-udevd.service
             │ └─541 /usr/lib/systemd/systemd-udevd
             ├─lvm2-lvmetad.service
             │ └─531 /usr/sbin/lvmetad -f
             └─systemd-journald.service
               └─513 /usr/lib/systemd/systemd-journald

2、从目录里看 cgroup

# ll /sys/fs/cgroup
总用量 0
drwxr-xr-x 6 root root  0 4月  25 2019 blkio
lrwxrwxrwx 1 root root 11 4月  25 2019 cpu -> cpu,cpuacct
lrwxrwxrwx 1 root root 11 4月  25 2019 cpuacct -> cpu,cpuacct
drwxr-xr-x 6 root root  0 4月  25 2019 cpu,cpuacct
drwxr-xr-x 4 root root  0 4月  25 2019 cpuset
drwxr-xr-x 6 root root  0 4月  25 2019 devices
drwxr-xr-x 4 root root  0 4月  25 2019 freezer
drwxr-xr-x 4 root root  0 4月  25 2019 hugetlb
drwxr-xr-x 6 root root  0 4月  25 2019 memory
lrwxrwxrwx 1 root root 16 4月  25 2019 net_cls -> net_cls,net_prio
drwxr-xr-x 4 root root  0 4月  25 2019 net_cls,net_prio
lrwxrwxrwx 1 root root 16 4月  25 2019 net_prio -> net_cls,net_prio
drwxr-xr-x 4 root root  0 4月  25 2019 perf_event
drwxr-xr-x 4 root root  0 4月  25 2019 pids
drwxr-xr-x 6 root root  0 4月  25 2019 systemd

## 在 /sys/fs/cgroup/systemd 这个目录就是 systemd-cgls 展示的根。

3、只看我这一个pod

我起了一个 pod 里边有一个nginx和一个redis,还有一个pause。

   CGroup: /
           ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
           ├─kubepods      ### pod的根cgroup
           │ └─burstable     ### pod根据request和limit分为3个保证稳定性的QoS服务质量级别:BestEffort,Burstable,Guaranteed;参考:https://blog.csdn.net/horsefoot/article/details/52091077
           │   ├─podf5f16f15-af9e-11ea-8af4-0050569e47b9          ### 对应于 /var/lib/kubelet/pods/xxxx ,其下的目录: containers  etc-hosts  plugins  volumes
           │   │ ├─d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a      ### nginx 容器的id
           │   │ │ ├─19431 nginx: master process nginx -g daemon off
           │   │ │ ├─19453 nginx: worker proces
           │   │ │ ├─19454 nginx: worker proces
           │   │ │ ├─19455 nginx: worker proces
           │   │ │ ├─19456 nginx: worker proces
           │   │ │ ├─19457 nginx: worker proces
           │   │ │ ├─19458 nginx: worker proces
           │   │ │ ├─19459 nginx: worker proces
           │   │ │ └─19460 nginx: worker proces
           │   │ ├─9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94    ### redis 容器的id
           │   │ │ └─19356 redis-server
           │   │ └─63ee2df4c255110248842e885fb0b9dafca9791dda6a00499bbc3fc99e153743    ### pause 容器的id
           │   │   └─19057 /pause


# cat /proc/`pidof nginx`/cgroup
11:memory:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
10:cpuset:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
9:devices:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
8:blkio:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
7:net_prio,net_cls:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
6:perf_event:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
5:pids:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
4:cpuacct,cpu:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
3:hugetlb:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
2:freezer:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a
1:name=systemd:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/d62b4a22abd21d47636a1c84e970ad7e76d8fe633232715f74606ee93c71291a

# cat /proc/`pidof redis-server`/cgroup
# cat /proc/19356/cgroup
11:memory:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
10:cpuset:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
9:devices:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
8:blkio:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
7:net_prio,net_cls:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
6:perf_event:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
5:pids:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
4:cpuacct,cpu:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
3:hugetlb:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
2:freezer:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94
1:name=systemd:/kubepods/burstable/podf5f16f15-af9e-11ea-8af4-0050569e47b9/9934ac36efade11bde691c12729a1dfa7483b8864ae4ded7a77a03f3b6e84d94

三、 pod和容器,namespace

就是pause和容器,查看pause进程和容器进程的namespace关系
首先要从容器 id 获得其进程在宿主机上的进程号:

1、查看pause容器的进程号: 19057

# docker top  63ee2df4

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                19057            19039               0                   Jun16               ?                   00:00:00            /pause

2、 查看 redis容器的进程号:19356

# docker top 9934ac36
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
100                 19356            19338               0                   Jun16               ?                   00:03:21            redis-server


3、 查看 nginx容器的进程号:19431

# docker top d62b4a2
UID                 PID                   PPID                C                   STIME               TTY                 TIME                CMD
root                19431               19407               0                   Jun16               ?                   00:00:00            nginx: master process nginx -g daemon off;
100                 19453               19431               0                   Jun16               ?                   00:00:00            nginx: worker process
100                 19454               19431               0                   Jun16               ?                   00:00:00            nginx: worker process
100                 19455               19431               0                   Jun16               ?                   00:00:00            nginx: worker process
100                 19456               19431               0                   Jun16               ?                   00:00:00            nginx: worker process
100                 19457               19431               0                   Jun16               ?                   00:00:00            nginx: worker process
100                 19458               19431               0                   Jun16               ?                   00:00:00            nginx: worker process
100                 19459               19431               0                   Jun16               ?                   00:00:00            nginx: worker process
100                 19460               19431               0                   Jun16               ?                   00:00:00            nginx: worker process

4、 查看 pod里进程们到底共享什么namespace

## 查看 pause进程的 namespace信息
#  ll /proc/19057/ns
总用量 0
lrwxrwxrwx 1 root root 0 6月  16 14:59 ipc -> ipc:[4026532659]  ## same ;ipc namespace
lrwxrwxrwx 1 root root 0 6月  17 10:28 mnt -> mnt:[4026532657] 
lrwxrwxrwx 1 root root 0 6月  16 14:59 net -> net:[4026532662] ## same ;net namespace
lrwxrwxrwx 1 root root 0 6月  17 10:28 pid -> pid:[4026532660]
lrwxrwxrwx 1 root root 0 6月  17 10:28 user -> user:[4026531837] ## same ;user namespace
lrwxrwxrwx 1 root root 0 6月  17 10:28 uts -> uts:[4026532658]

## 查看 redis进程的 namespace信息
# ll /proc/19356/ns
总用量 0
lrwxrwxrwx 1 100 101 0 6月  16 15:13 ipc -> ipc:[4026532659]  ## same
lrwxrwxrwx 1 100 101 0 6月  16 15:13 mnt -> mnt:[4026532654]
lrwxrwxrwx 1 100 101 0 6月  16 15:13 net -> net:[4026532662]  ## same
lrwxrwxrwx 1 100 101 0 6月  16 15:13 pid -> pid:[4026532656]
lrwxrwxrwx 1 100 101 0 6月  16 15:13 user -> user:[4026531837]  ## same
lrwxrwxrwx 1 100 101 0 6月  16 15:13 uts -> uts:[4026532655]

## 查看 nginx进程的 namespace信息
# ll /proc/19431/ns
总用量 0
lrwxrwxrwx 1 root root 0 6月  16 15:13 ipc -> ipc:[4026532659]  ## same
lrwxrwxrwx 1 root root 0 6月  16 15:13 mnt -> mnt:[4026532849]
lrwxrwxrwx 1 root root 0 6月  16 15:13 net -> net:[4026532662]  ## same
lrwxrwxrwx 1 root root 0 6月  16 15:13 pid -> pid:[4026532851]
lrwxrwxrwx 1 root root 0 6月  16 15:13 user -> user:[4026531837]  ## same
lrwxrwxrwx 1 root root 0 6月  16 15:13 uts -> uts:[4026532850]

四、总结pod和容器的关系

pod是k8s抽象出来的资源类型,是k8s调度的最小单位。这是事实,但是为什么会有pod呢?直接用容器不好吗?
-- 不好!首先容器里只启动一个进程这基本是共识了,那联系紧密的几个进程怎么办,pod维持多个容器紧密联系,他们共享ipc,net和user namespace,他们属于同一组 cgroup,作为一个整体来参与调度;
-- 二、容器技术不只是containerd 这一种引擎,还有 rkt,cri-o等,k8s需要pod这一层更高级的抽象。