最近コンテナ触ってると、どのプロセスがどのネームスペースで動いているのか確認したくなります。コンテナのネームスペースをコンテナ毎に調べてもいいですが、実はpsコマンドで見ることができます。
具体的には、-o オプション使って以下のように実行すれば、ネットワークネームスペースとPID,コマンド等を見ることができます。ちなみにNETNSの数字はinode番号を意味しています。
# ps -e -o netns,pid,cmd NETNS PID PPID CMD 4026531957 1 0 /sbin/init splash 4026531957 2 0 [kthreadd] 4026531957 3 2 [ksoftirqd/0] 4026531957 5 2 [kworker/0:0H] 4026531957 7 2 [rcu_sched] 4026531957 8 2 [rcu_bh] 4026531957 9 2 [migration/0] 4026531957 10 2 [watchdog/0] 4026531957 11 2 [watchdog/1] 4026531957 12 2 [migration/1] 4026531957 13 2 [ksoftirqd/1] 4026531957 15 2 [kworker/1:0H] 4026531957 16 2 [kdevtmpfs] 4026531957 17 2 [netns] 4026531957 18 2 [perf] 4026531957 19 2 [khungtaskd] 4026531957 20 2 [writeback] 4026531957 21 2 [ksmd] ~以下略~
プロセスツリーみたければ、pstree でも見ることができます。以下はKubernetesが動いている環境で実行した時の例ですが、このようにネームスペース毎にプロセスツリーを表示してくれます。
# pstree -N net ~ 略 ~ [4026532229] dashboard───7*[{dashboard}] pause [4026532441] pause bash [4026532514] pause server───6*[{server}] [4026532580] pause dumb-init───nginx-ingress-c─┬─nginx───2*[nginx───32*[{nginx}]] └─10*[{nginx-ingress-c}] [4026532359] pause kube-dns───8*[{kube-dns}] dnsmasq-nanny─┬─dnsmasq └─8*[{dnsmasq-nanny}]