华为云云原生钻石集训营 第六课:Kubernetes网络架构原理深度剖析(上)

课程目标:

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/

(完)