共享宿主机命名空间
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?