课程目标:
1.理解kubernetes网络模型以及Service工作机制
2.理解华为云CCE Yangtse网络模型和原理
目录:
1. Kubernetes基本网络模型剖析
2. Service服务负载均衡机制剖析
3.华为云CCE yangtse网络方案原理
在前面的黄金课程中介绍了kubernetes网络和服务的概念与使用场景,Service概念及使用场景和Ingress概念及使用场景
Kubernetes工作负载POD之间的互通、负载均衡等网络功能是如何实现的呢,接下来的课程我们将为大家深入讲解kubernetes容器网络模型,Service负载均衡机制、CNI接口的实现原理以及若干实践案例。
概念厘清
前导基本概念
二层桥接VS三层路由 Underlay VS Overlay 物理网络 VS 虚拟网络 传统网络 VS SDN网络 Docker网络 VS K8S网络(CNM vS CNI)
K8S网络模型对互通性的要求
pods on a node can communicate with all pods on all nodes without NAT
译文:节点上的容器POD可以与集群内任意节点上的容器POD无需NAT实现互访
agents on a node (e.g. system daemons,kubelet) can communicate with all pods on that node
译文:节点上的代理agent(比如:系统后台进程、kubelet)可以与同节点上的容器POD互访
Note: For those platforms that support Pods running in the host network (e.g. Linux);
注解:对于支持容器POD以主机网络模式运行的平台(如:Linux)
pods in the host network of a node can communicate with all pods on all nodes without NAT
译文:主机网络模式的容器POD可以与集群内任意节点上的容器POD无需NAT互访
K8S Service 负载均衡机制实现原理(3) ---eBPF
方案说明
1.基于高内核版本eBPF机制
2.东西向采用Socket Layer LB机制实现,支持会话保持
3.南北向采用XDP/TCBPF实现负载均衡/NAT和状态表
优势:
适合容器场景·转发路径短,最大开销下降可达80%
劣势
内核版本要求社区内核5.7+
缺乏大规模的商用检验,处于快速迭代过程,社区不断有新patch合入
负载均衡算法待增强和丰富
典型方案
Cilium,Calico
华为云CCE Yangtse网络模型 (1) --VPC 路由模式
方案说明
按照创建集群时设定的节点长度为节点分配容器子网
将每个节点的容器子网路由配置到VPC路由表
优势
无隧道开销,转发性能与主机网络持平
VPC内节点与容器互通无SNAT,支持源地址保持
劣势
集群规模受限于VPC路由表规格,比如:200
互通性受限:
需要通过nodeport对接ELB后端,存在多跳损耗,负载均衡性差
访问OBS或外网等服务需要SNAT为节点地址
华为云CCE Turbo Yangtse网络模型(2) --ENI/TrunkPort
方案说明:
容器网络与VPC网络一体化融合方案,充分利用VPC网络的软硬协同和分布式架构为容器提供云原生的规模扩展、极致弹性、负载均衡和安全隔离能力。
每个容器POD具有独立的VPC子网地址,统─IPAM(节点、容器、服务子网统一管理)
BMS节点支持128个VF直通网口到容器POD
虚机节点Trunkport模式ENI,最多支持创建256个VLAN子接口直通容器POD
每个POD具有独立的安全组,支持容器粒度的网络隔离POD间互访不经过节点rootnamespace,直通模式转发0损耗
不再依赖节点内核
lPVS/IPTables实现Service负载均衡,不再需要kube-proxy组件,service负载均衡卸载到VPC分布式ELB
裸机容器支持POD级网络QoS
极简组网,运维更简单
总结:
本课程讲解重点
1: K8S容器网络模型原理
2: K8S Service负载均衡实现原理·
3:华为CCE Yangtse容器网络模型和原理
参考链接:
相关内容的华为云官网链接:
https://support.huaweicloud.com/usermanual-cce/cce 01 0249.html
https://support.huaweicloud.com/usermanual-cce/cce 01_0094.html
Kubernetes官方文档:
Service: https://kubernetes.io/docs/concepts/services-networking/service/
Ingress: https://kubernetes.io/docs/concepts/services-networking/ingress/