IPC 与 UTS 命名空间

IPC 与 UTS 命名空间

我正在学习 Kubernetes,它们似乎在容器实现中扮演着至关重要的角色。它们允许我们在独立的进程之间隔离全局系统资源。但我仍然不了解整个情况。我的 pod

kubectl get pods -o wide
NAME          READY     STATUS    RESTARTS   AGE       IP          NODE
kubia-bzp4j   1/1       Running   0          17h       10.44.1.5   gke-kubia-default-pool-98519add-5kfr
kubia-hzd8b   1/1       Running   0          1h        10.44.0.7   gke-kubia-default-pool-98519add-hsrc
kubia-kgbtb   1/1       Running   0          1h        10.44.2.5   gke-kubia-default-pool-98519add-25c1

Kubernetes in Action 表示

all containers of a pod run under the same IPC namespace
and can communicate through IPC

这是否意味着同一 pod 之外的容器无法通过 IPC 进行通信?它们如何通信?我们为什么需要 IPC?

答案1

UTS 命名空间仅包含两个标识符:系统主机名和(很少使用的)NIS 域名。

IPC 命名空间包含一种特定类型的 IPC 对象,称为“POSIX IPC”和“SysV IPC”——共享内存区域、消息队列和信号量。它们不包括 TCP/IP、Unix 域套接字或其他通信方法。

(TCP/IP 通过使用命名空间,尽管通常容器会特意指定一个虚拟接口,以便通过该接口访问主网络。Unix 域套接字通过使用命名空间,因为它们遵循与文件路径相同的规则。)

查看命名空间(7)手册页以获取更详细的解释。

相关内容