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