Skip to main content

Kubernetes Networking Awesome

Ingress & Gateway

Ingress 实现情况
  1. 针对实现 Ingress API
    • 通常不暴露额外的 CDR
    • 例如 ingress-nginx
  2. 基于现有 Web 服务支持 Ingress
    • 通常支持自定义 CDR
    • 例如 traefik
  3. 基于现有 平台 支持 Ingress
    • 通常支持 接口 操作规则
    • 服务有状态
    • 例如 kong, apisix
Ingress 选择
  • 最好选择简单实用熟悉的
    • 例如 已知怎么定义一些特殊规则
  • 选择轻量,功能单一的
    • 例如 证书尽量配合 cert-manager 使用
  • 需要支持复杂 API 网关场景最好利用多 IngressClass 或 通过服务 进行继承使用
    • 例如 使用 kong 或 apisix 统一管理 API - ingress 执行 网关服务
  • 将 Ingress 看作是反向代理的替代
  • 推荐 - ingress-nginx
  • IngressClass 可配合使用
    • HAProxy 擅长 TLS、SNI、LB
    • Nginx 擅长 反向代理
    • Envoy 擅长 协议感知、定制性高
    • 自定义网关 擅长 API 管理、集成、Web 可视化管理
ingressstarsbased oningressgatewaygovernance
ingress-nginxingress-nginx-starsnginx🟢🔴
haproxy-ingresshaproxy-ingress-starshaproxy🟢🟢
haproxytech-ingresshaproxytech-ingress-starshaproxy🟢🔴haproxytech
istioenvoy🟢🟢CNCF/google
contourenvoy🟢🟢CNCF
traefiktraefik🟢🟢
glooenvoy🟢🟡
Emissary-Ingressemissary-ingress-starsenvoy🟢🟢
kongnginx/kong🟢🟡Kong
apisixnginx/apisix🟢🟡Apache
citrixCitrix ADC🟢
enrouteenvoy🟢CNCF/saarasio
easegresseasegress-starseasegress🟢megaease
voyagerhaproxy🟢AppsCode
tyktyp🟢
skipperskipper🟢
  • ingress-nginx
  • haproxy-ingress
    • 支持外部 HAProxy

CNI

vs.startsIPv6WindowsPolicy
calicocalico-stars
kube-routerkube-router-stars
flannelflannel-stars
ciliumcilium-stars
tip
  • 不支持 IPv6 也不支持 DualStack
  • NetworkPolicy 支持控制 Ingress 和 Egress 网络
  • kube-router
    • layer 3, lvs/ipvs
  • flannel
    • overlay
    • 轻量, 专注网络层
    • 后端: vxlan, host-gw, udp, ipip, ipsec, wireguard
    • 配置: etcd, k8s api
  • calico
    • layer 3, overlay, BGP,
    • 后端: vxlan, pip, eBPF, WindowsHNS
    • IPv6 不支持 IPIP/VXLAN calico#5206
  • cilium
  • weave
    • IPsec ESP
  • canal - 停止 - calico+flannel - 目前 calico 内置 vxlan

网络组件功能选项

  • Policy
  • IPAM
  • CNI
  • Overlay - VXLAN, IPIP, WG, IPIP, IPSec
  • Routing - BGP, VPC

Overlay

  • tinc
  • n2n