在Pod中的容器之间共享进程命名空间

在Pod中的容器之间共享进程命名空间

当启用进程命名空间的时候,容器中的进程对同一Pod中的所有其他容器都是可见的

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  shareProcessNamespace: true
  containers:
  - name: nginx
    image: nginx
  - name: shell
    image: busybox:1.28
    securityContext:
      capabilities:
        add:
        - SYS_PTRACE
    stdin: true
    tty: true

shareProcessNamespace字段设置为true时,该pod下的容器将会共享进程命名空间,这表示我们可以在其中一个容器中访问到同一个进程命名空间下的另一个容器

image-20230516142120228

Pod 共享许多资源,因此它们共享进程命名空间是很有意义的。 不过,有些容器可能希望与其他容器隔离,因此了解这些差异很重要:

  1. 容器进程不再具有 PID 1。 在没有 PID 1 的情况下,一些容器拒绝启动 (例如,使用 systemd 的容器),或者拒绝执行 kill -HUP 1 之类的命令来通知容器进程。 在具有共享进程命名空间的 Pod 中,kill -HUP 1 将通知 Pod 沙箱(在上面的例子中是 /pause)。

  2. 进程对 Pod 中的其他容器可见。 这包括 /proc 中可见的所有信息, 例如作为参数或环境变量传递的密码。这些仅受常规 Unix 权限的保护。

  3. 容器文件系统通过 /proc/$pid/root 链接对 Pod 中的其他容器可见。 这使调试更加容易, 但也意味着文件系统安全性只受文件系统权限的保护。

(没看懂,先留着)

posted @ 2023-07-24 17:23  pr1s0n  阅读(43)  评论(0编辑  收藏  举报