华为云云原生钻石集训营 第六课:Kubernetes网络架构原理深度剖析(下)
课程目标:
学完本课程后,您将能够:
1.理解Ingress Controller工作机制
2.理解K8S CNI接口机制与插件实现原理
3.容器网络相关的最佳实践及问题经验分享
目录:
1. Ingress Controller机制剖析
2. CNI接口机制与插件实现原理
3. 云原生网络最佳实践与典型问题案例
共享DNS最佳实践原理 POD安全组 源地址保持问题案例 响应延时问题分析案例
前面的课程中大家了解了kubernetes容器网络和Service的基本模型
Kubernetes基本网络模型剖析
Service基本网络模型剖析
华为云CCE Yantse网络方案和架构剖析
本次课程将为你讲解Ingress和容器网络CNI在Kubernetes是如何实现的,接下来是几个最佳实践和典型问题案例。
Ingress API接口模型与演进
为K8S集群内服务提供聚合统一的访问入口。除了提供丰富的七层(HTTP)路由功能外,Ingress实现中也提供了丰富服务治理能力,但不同实现(IngressClass)在部署方式和功能特性上存在差异。
CNI接口与插件能力模型
1.JSON-based 配置
2.支持内置标准配置关键字和插件扩展关键字
3.通过标准输入stdin向插件二进制传入配置
4.配置可以保存在磁盘也可以由运行时生成
SPEC: https://github.com/containernetworking/cni
Plugins: https:/lgithub.com/containernetworking/plugins
CNI在K8S中是如何工作的
CNI调用过程:
1.CNI支持的接口命令:ADD, DEL, CHECK and VERSION
2.插件名即是可执行文件名
3.运行时根据网络操作发起相应的插件进程命令
4.通过标准输入传入JSON格式的配置
5.指定容器的特殊配置也从标准输入stdin传入
6.插件的返回结果从标准输出传回stdout
7.多种插件或能力链式调用,失败即终止,成功则继续,由将最终插件结果返回给运行时
网络/容器网络因为其本身的复杂性,以及很多侧重软件开发的童鞋并不熟悉网络,导致和网络/容器网络相关问题的定位、分析和解决都比较困难,很多时候会有无从下手之感。
1. 目标主机上没有到源主机的路由,导致ping包没有返回 - route
2. Pod可以跨节点访问docker0 IP,但是不能跨节点访问Pod IP - ip_forward
3. Flannel隧道内部payload的源地址改变为flannel0设备地址 - iptables
4. 从Docker容器内可以ping通宿主机IP,但ping不通其它主机 - iptables
5. K8s集群掉电,导致所有的服务不能访问 - flannel & docker0
6. K8s Master主机上ping不通Node节点上的docker0和容器,但在Node上可以ping通 - iptables
引起网络不通的主要原因有:
路由(route)问题。这类问题多如牛毛。常见的是目标主机到源主机的路由不通。
防火墙(iptables)问题。这类问题多如牛毛,但iptables比route更复杂。主要有:(1)防火墙filter表的规则阻止icmp包;(2)防火墙NAT表的SNAT/MASQUERADE。
系统内核参数问题。较少,更隐蔽,现象怪异得会让你怀疑自己的智商和人生。例如ip_forward,rp_filter等。
Linux设备参数设置。较少,更隐蔽,现象怪异得会让你怀疑自己的智商和人生。例如MTU等。 至于IP地址配置错误等问题就太明显了,不在讨论之列。
总结:
本课程讲解重点
1: Ingress架构原理
2:CNI架构流程和高级功能剖析
3:云原生网络最佳实践与问题分析案例
参考链接:
相关内容的华为云官网链接:
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/
- 点赞
- 收藏
- 关注作者
评论(0)