kubernetes之Pod中的容器共享进程Namespace
此文讲述如何配置Pod中的容器恭喜共享进程Namespace。当进程名称空间共享被激活,在同一个Pod中,一个容器的进程可以在其他容器中看到。可以使用此成果来配置协作容器,例如日志措置惩罚惩罚措施sidecar容器,或对不包罗调试实用措施(例如shell)的容器映像进行故障排除。在Kubernetes v1.17中已处于不变状态。
备注:此文档参考官方文档,并加以本身的理解。如有误导性的内容,请攻讦斧正。
配置Pod共享进程Namespace使用shareProcessNamespace激活进程Namespace共享。例如:
apiVersion: v1 kind: Pod metadata: name: nginx spec: shareProcessNamespace: true containers: - name: nginx image: nginx - name: shell image: busybox securityContext: capabilities: add: - SYS_PTRACE stdin: true tty: true1、在集群中创建nginxPod
apiVersion: v1 kind: Pod metadata: name: nginx spec: shareProcessNamespace: true containers: - name: nginx image: nginx - name: shell image: busybox securityContext: capabilities: add: - SYS_PTRACE stdin: true tty: true创建Pod
# kubectl apply -f /root/k8s-example/pods/share-process-namespace.yaml2、将 shell 容器附加到nginx容器上,运行ps命令
# kubectl attach -it nginx -c shell输出内容如下:
/ # ps ax PID USER TIME COMMAND 1 root 0:00 /pause 6 root 0:00 nginx: master process nginx -g daemon off; 11 101 0:00 nginx: worker process 12 root 0:00 sh 18 root 0:00 ps ax可以用信号通知其他容器中的进程。 例如,将SIGHUP发送到nginx以从头启动worker进程。 这需要SYS_PTRACE成果。
/ # kill -HUP 6 / # ps ax PID USER TIME COMMAND 1 root 0:00 /pause 6 root 0:00 nginx: master process nginx -g daemon off; 12 root 0:00 sh 19 101 0:00 nginx: worker process 20 root 0:00 ps ax甚至可以使用/proc/$pid/root链接访谒另一个容器映像。
/ # head /proc/6/root/etc/nginx/nginx.conf user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; 理解进程Namepsace共享Pod可以共享很多资源,例如共享进程名称空间。不过,某些容器图片可能会与其他容器断绝,因此了解这些差异很重要:
容器的进程不再有PID 1。一些容器在没有 PID 1进程或运行诸如kill -HUP 1之类的命令来发出容器进程信号拒绝启动(例如:,,容器使用 systemd)在具有共享进程名称空间的Pod中,kill -HUP 1将向Pod沙箱发出信号。 (在以上示例中为/ pause。)
进程对Pod中的其他容器可见。 这包孕/proc中所有可见的信息,例如作为参数或环境变量通报的暗码。 这些仅受通例Unix权限掩护。
容器文件系对Pod中其他容器通过/proc/$pid/root链接。这使调试越发容易,但是这也意味着文件系统奥秘仅受文件系统许可权掩护。
kubernetes之Pod中的容器共享进程Namespace
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31064.html
- 上一篇:HttpRequest测试类
- 下一篇:全选和全不选