跟踪Kubernetes中的网络流量路径


在深入了解数据包如何在 Kubernetes 集群中流动的细节之前,让我们首先明确 Kubernetes 网络的要求。
Kubernetes 网络模型定义了一组基本规则:

  • 集群中的 pod 应该能够在不使用网络地址转换 (NAT) 的情况下与任何其他 pod 自由通信。
  • 在集群节点上运行的任何程序都应该与同一节点上的任何 pod 进行通信,而无需使用 NAT。
  • 每个 pod 都有自己的 IP 地址(IP-per-Pod),并且每个其他 pod 都可以通过相同的地址访问它。

这些要求不会将实施限制为单一解决方案。
相反,它们笼统地描述了集群网络的属性。
为了满足这些限制,您必须解决以下挑战:
  1. 你如何确保同一个 pod 中的容器的行为就像它们在同一个主机上一样?
  2. pod 能否到达集群中的其他 pod?
  3. pod 可以访问服务吗?服务是负载平衡请求吗?
  4. pod 可以接收集群外部的流量吗?

在本文中,您将重点关注前三点,从 Pod 内网络或容器到容器的通信开始。