高级 Kubernetes 网络技术全解析
1. 基础 Linux 网络知识
Linux 默认具有单一的共享网络空间,在这个命名空间中,所有物理网络接口都是可访问的。不过,物理命名空间可以划分为多个逻辑命名空间,这与容器网络密切相关。
- IP 地址和端口:网络实体通过其 IP 地址进行标识。服务器可以监听多个端口上的传入连接,客户端可以通过 TCP 连接或 UDP 发送数据到网络内的服务器。
- 网络命名空间:命名空间将一组网络设备分组,使得它们可以访问同一命名空间内的其他服务器,但无法访问即使物理上处于同一网络的其他命名空间内的服务器。可以通过网桥、交换机、网关和路由来连接网络或网段。
- 虚拟以太网设备:虚拟以太网(veth)设备代表物理网络设备。当创建一个与物理设备相连的 veth 时,可将该 veth(以及扩展的物理设备)分配到一个命名空间中,即使物理上处于同一本地网络,其他命名空间的设备也无法直接访问它。
- 网桥:网桥将多个网段连接到一个聚合网络,使所有节点能够相互通信。网桥操作在 OSI 网络模型的 L1(物理层)和 L2(数据链路层)进行。
- 路由:路由用于连接独立的网络,通常基于路由表,该表指示网络设备如何将数据包转发到目的地。路由通过各种网络设备实现,如路由器、网桥、网关、交换机和防火墙,包括普通的 Linux 主机。