Loading

Kubernetes CNI 发展趋势- iptables_ipvs_bpf_ovs

前情提要

为了极致性能我们换个防火墙吧。BPF from BSD firewalld ,把它移植到 Linux 中来!

BPF

  1. BPF program 将数据发送给 K8s service; 做负载均衡决策并将数据包发送给目的 pod 节点
  2. BPF program 程序将 DNAT 转换成 Pod 的IP
  3. Pod 看到客户端真正的 IP
  4. Pod 做出响应; BPF 反向 DNAT
  5. 如果网络准许,数据包直接返回。否则将通过 Ingress Node (ingress controller Pod 所在服务器)

iptables or ipvs

  1. kube-proxy DNAT + SNAT 用自己的 IP 替换源 IP ,用 Pod IP 替换掉目的 IP
  2. 数据包转发到目标 Pod
  3. Pod 将 Ingress Node 视为源,并作出响应
  4. 源 / 目的地址在 Ingress Node 替换为客户端地址(目的) ,服务地址(Ingress Node)

ipvs 对比 iptables 的优势:

  • ipvs 基于散列表,复杂度 O(1),iptables 基于链表,复杂度 O(n)
  • ipvs 支持多种负载均衡调度算法;iptables 只有由 statistic 模块的 DNAT 支持概率轮询,

原文地址

Openvswitch

这是大家所遗忘的部分,当 IPv6 全面铺开的时候,每一个 pod 可能都会有一个 IPv6 的地址,未来可期。

posted @ 2021-05-28 11:15  尚墨  阅读(319)  评论(0编辑  收藏  举报