Kubernetes容器中的容器之间共享哪些命名空间?

Hao*_* Ge 7 namespaces kubernetes

linux中有6种名称空间:Network, UTS, Users, Mount, IPC, Pid。我知道所有容器都与Kubernetes容器中的暂停容器共享相同的网络名称空间。默认情况下,不同的容器具有不同的PID名称空间,因为它们具有不同的初始化过程。但是,其他名称空间又如何呢?

VAS*_*VAS 10

根据这篇文章

Pod中的容器在“逻辑主机”上运行;它们使用相同的网络名称空间(换句话说,相同的IP地址和端口空间)和相同的IPC名称空间。

Pod中的容器共享相同的IPC名称空间,这意味着它们还可以使用标准的进程间通信(例如SystemV信号量或POSIX共享内存)相互通信。

可以通过“ localhost”访问Pod中的容器;他们使用相同的网络名称空间。另外,对于容器,可观察的主机名是Pod的名称。由于容器共享相同的IP地址和端口空间,因此应在容器中使用不同的端口进行传入连接。换句话说,Pod中的应用程序必须协调其端口使用情况。

您还可以通过指定启用 Pod中容器之间共享Process命名空间v1.PodSpec.shareProcessNamespace: true


sha*_*359 6

  • ipc、net 和 uts 命名空间是共享的。

  • pid:默认情况下不共享。但是,可以在pod 规范中启用命名空间共享。

  • mnt:未共享。不同的容器是由不同的镜像构建的。从每个容器中,只有其自己的根目录可见。

  • user:k8s 不支持此功能,将来可以实现某种形式的用户命名空间共享,如此处所述

在此输入图像描述

图片来源