网络核心 - CNI、Service 与 Ingress/Gateway API 解析

网络核心 - CNI、Service 与 Ingress/Gateway API 解析


Kubernetes 的强大之处在于它极大地简化了容器化应用的部署和管理,但其网络模型的灵活性和复杂性也常常让初学者感到困惑。作为 SRE,我们需要拨开迷雾,理解流量在 K8s 集群内部以及进出集群时,到底是如何流转的。

Pod 网络基础:谁给 Pod 分配 IP?(CNI)

我们知道,在 K8s 中,每个 Pod 都拥有自己唯一的 IP 地址。这是实现“一个 Pod一个 IP”模型的关键,它简化了应用的网络配置(应用可以直接监听自己的端口,无需担心端口冲突)。但这个 IP 地址是谁分配的?Pod 之间的网络是如何打通的?

答案是 CNI (Container Network Interface) 插件。

  • CNI 是什么? 它不是一个具体的软件,而是一套接口规范(由 CNCF 维护)。它定义了容器运行时(如 Docker, containerd)与网络插件之间的标准交互方式,用于配置容器(Pod)的网络。Kubernetes 本身不负责具体的 Pod 网络实现,而是委托给符合 CNI 规范的网络插件来完成。
  • CNI 插件如何工作(简化流程)
    1. 当一个 Pod 被调度到某个 Node 上时,该 Node 上的 kubelet 进程会调用配置好的 CNI 插件。
    2. CNI 插件负责为这个 Pod 分配一个 IP 地址(通常从该 Node 分到的一个 Pod CIDR 网段中获取)。
    3. 插件会在 Node 上创建必要的网络设备(例如,一对 veth 设备,一端连接 Pod 的网络命名空间,另一端连接 Node 的根网络命名空间),并配置相应的 IP 地址、路由规则、网桥等,从而将 Pod 连接到集群网络中。
    4. 不同的 CNI 插件使用不同的技术来实现 Pod 间的通信(可能是 Overlay

你可能感兴趣的:(云原生,网络,gateway,php)