共享宿主机命名空间

Pod 中的容器默认情况下是与宿主机具有各自的命名空间的,在某些业务场景中,可能需要 Pod 使用宿主机中的某些资源,要求使用宿主机的命名空间。

本节将介绍 Pod 中的容器与宿主机共享 网络命名空间IPC 命名空间 以及 PID 命名空间 的情况。

网络命名空间

可以通过配置 pod.spec.hostNetwork=true,使得 Pod 中的容器使用宿主机的网络命名空间,其效果为 Pod 中的容器的网络协议栈即为宿主机的网络协议栈,IP 地址、端口使用等皆相同。举个 🌰 如下:

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-host-network
spec:
  hostNetwork: true        # 使用宿主机的网络命名空间
  containers:
  - name: main
    image: alpine
    command: ["/bin/sleep", "999999"]

IPC 命名空间

可以通过配置 pod.spec.hostIPC=true,使得 Pod 中的容器可以通过 IPC 机制与宿主机通信。举个 🌰 如下:

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-host-ipc
spec:
  hostIPC: true        # 使用宿主机的 IPC 命名空间
  containers:
  - name: main
    image: alpine
    command: ["/bin/sleep", "999999"]

PID 命名空间

可以通过配置 pod.spec.hostPID=true,使得 Pod 中的容器可以看到宿主机中的所有进程。举个 🌰 如下:

apiVersion: v1
kind: Pod
metadata:
  name: pod-with-host-pid-and-ipc
spec:
  hostPID: true        # 使用宿主机的 PID 命名空间
  containers:
  - name: main
    image: alpine
    command: ["/bin/sleep", "999999"]

Last updated

Was this helpful?