kubernetes网络整理

238 阅读2分钟

Kubernetes的三种IP

  • Node IP: Node节点的IP地址

  • Pod IP: Pod的IP地址

  • Cluster IP: Service的IP地址

kubernetes服务

  • Service

  • HeadlessService

  • Ingress

  • Endpoint

kube-proxy的代理模块三种实现方式

  • userspace: 实现在用户态

  • iptables: 实现在内核态,底层使用链表结构

  • IPVS: LVS 的负载均衡模块,实现在内核态,底层使用哈希表结构

Linux网络虚拟化

  • network namespace

  • veth pair设备

  • Linux bridge

  • tun/tap设备

  • iptables

  • linux隧道ipip

  • VXLAN

网络层次

第2层网络: 

  • OSI网络模型的"数据链路层".第2层网络会处理网络上两个相邻节点之间的帧传递.第2层网络的一个典型示例是以太网.

第3层网络:

  • OSI网络模型的"网络层".是在第2层连接之上的主机之间路由数据包.第3层网络的典型示例是IPv4,IPv6和ICMP等.

Overlay Network

在已有的宿主机网络上,再通过软件构建一个覆盖在已有宿主机网络之上的、可以把所有容器连通在一起的虚拟网络。


网络插件底层实现

  • LAN: 局域网

  • VLAN: 虚拟局域网

  • VxLAN: 基于三层网络结构来构建二层虚拟网络,属于overlay网络

  • UDP: 完成封包和解包的操作

  • host-gw(性能最好): 将主机当做网关使用,要求所有主机都同在一个局域网内,保证二层网络联通

  • GCE: 在google公有云上直接对接Google Compute Engine Network,需要为虚拟机实例启用IP Forwarding功能.

  • IPIP: 使用Linux Kernel的IPIP模块完成封包

  • IPSec: 使用Linux Kernel的IPSec模块完成封包和加密

  • eBPF:  由事件驱动,并在内核或应用程序通过某个挂钩点时运行。预定义的挂钩包括系统调用,函数进入/退出,内核跟踪点,网络事件以及其他几个

  • BPG: 读取Felix编写到内核中的路由信息,并将路由信息转发

CNI插件

  • Flannel
  • Calico
  • Weave
  • Cilium (未来重点)
  • CNI-Genie