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

举报
菜鸟级攻城狮 发表于 2021/07/31 23:35:37 2021/07/31
【摘要】 华为云云原生钻石集训营 第六课: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/

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。