1、在 Pod 中的容器之间共享进程命名空间
kubernetes官网链接
进程命名空间共享使用 v1.PodSpec 中的 ShareProcessNamespace 字段启用。例如:
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
- 容器进程不再具有
PID 1
。 在没有PID 1
的情况下,一些容器镜像拒绝启动(例如,使用 systemd 的容器),或者拒绝执行kill -HUP 1
之类的命令来通知容器进程。在具有共享进程命名空间的pod
中,kill -HUP 1
将通知pod
沙箱(在上面的例子中是/pause
)。 - 进程对
pod
中的其他容器可见。 这包括/proc
中可见的所有信息,例如作为参数或环境变量传递的密码。这些仅受常规Unix
权限的保护。 - 容器文件系统通过
/proc/$pid/root
链接对pod
中的其他容器可见。 这使调试更加容易,但也意味着文件系统安全性只受文件系统权限的保护。