Kubernetes 网络概念及策略控制|学习笔记

简介: 快速学习 Kubernetes 网络概念及策略控制

开发者学堂课程【Kubernetes 入门  Kubernetes 网络概念及策略控制】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/51/detail/1019


Kubernetes 网络概念及策略控制


内容介绍:

一、Kubernetes 基本网络模型

二、Netns 探秘

三、主流网络方案简介

四、Network Policy 的用处

五、思考时间

 

一、Kubernetes 基本网络模型

1、基本法:约法三章+四大目标

l Kubernetes 对于 Pod 间的网络没有任何限制,只需满足如下「三个基本条件」:

l 所有 Pod 可以与其他 Pod 直接通信,无需显式使用 NAT

l 所有 Node 可以与所有 Pod 直接通信,无需显式使用 NAT

l Pod 可见的IP地址确为其他 Pod 与其通信时所用,无需显式转换

l 基于以上准入条件,我们在审视一个网络方案的时候,需要考虑如下

「四大目标」︰

l 容器与容器间的通信

l pod 与 Pod 之间的通信

l Pod 与 Service 间的通信

l 外部世界与 Service 间的通信

2、对基本约束的解释

容器与其宿主存在寄生关系,从而在实现上,容器网络方案可分为Underlay/Overlay 两大派别,其主要的差异在于是否与 Host 网络同层,这样对于微服务发现及治理,容器可访问方式都造成很大的差异,所以社区的同学以 perPodperIP 这种简单武断的模型,摈弃了显示端口映射等 NAT 配置,统一了容器网络对外服务的视角。

 

二、Netns 探秘

1、Netns 究竟实现了什么

Network namespace 是实现网络虚拟化的内核基础,创建了隔离的网络空间

l 拥有独立的附属网络设备( lo、veth 等虚设备/物理网卡)

l 独立的协议栈,IP 地址和路由表

l iptables 规则

l ipvs 等

nsproxy 相当于运行环境

image.png

2、Pod 与 Netns 的关系

每个 Pod 拥有独立的 Netns 空间,Pod 内的 Container 共享该空间,可通过 Loopback 接口 实现通信,或通过共享的 Pod-IP 对外提供服务。别忘记,宿主上还有个 Root Netns,可以看做一个特殊的容器空间。

 

三、主流网络方案简介

1、典型容器网络实现方案

l 容器网络可能是 Kubernetes 领域最为百花齐放的一个领域,依照 IaaS 层的配置、外部物理网络的设备、性能 or 灵活优先,可以有不同的实现︰

l Flannel,最为普遍的实现,提供多种网络 backend 实现,覆盖多种场景

l Calico,采用 BGP 提供网络直连,功能丰富,对底层网络有要求

l Canal (Flannel for network + Calico for firewalling),嫁接型创新项目

l Cilium,基于 eBPF 和 XDP 的高性能 Overlay 网络方案

l Kube-router,同样采用 BGP 提供网络直连,集成基于 LVS 的负载均衡能力

l Romana,采用 BGP or OSPF 提供网络直连能力的方案

l WeaveNet,采用 UDP 封装实现 L2Overlav,支持用户态(慢,可加密)/内核态(快,不能加宓)两种实现

2、Flannel 方案

Flannel 是目前使用最为普遍的方案,通过将 backend 机制独立,它目前已经支持多种数据路径,也可以适用于 overlay/underlay 等多种场景,封装可以选用用户态 udp(纯用户态实现),内核 Vxlan(性能好),如集群规模不大,处于同一二层域,也可以选择 host-gw 方式。

 

四、Network Policy 的用处

1、Network Policy 基本概念

Network Policy 提供了基于策略的网络控制,用于隔离应用并减少攻击面。它使用标签选择器模拟传统的分段网络,并通过策略控制它们之间的流量以及来自外部的流量。

在使用 Network Policy 之前,需要注意︰

.apiserver 开启 extensions/v1beta1/networkpolicies

·网络插件要支持 Network Policy,如 Calico、Romana、Weave Net 和 trireme 等

2、配置实例

功能∶通过使用标签选择器(包括 namespaceSelector 和 podSelector )来控制 Pod 之间的流量。

要决定三件事:

l 控制对象︰通过 spec 字段,podSelector 等条件筛选;

l 流方向:Ingress (入 Pod 流量)+from ,

Egress(出 Pod 流量)+to ;

l 流特征︰对端(通过 name/pod Selector ) ,

IP 段( ibBlock ) ,

协议(protocol ),端口( port )

3、小节总结

l Pod 在容器网络中的核心概念是 IP,每个 Pod 必须有内外视角一致的独立 IP 地址

l 影响容器网络性能的关键是拓扑设计,也就数据包端到端的路径设计

l 牢记 Overlay/Underlay 下各种网络方案的设计选择,如果不知道,可以这样选∶普适性最强——Flannel-VxLan,2层可直连——Calico/Flannel-Hostgw

l Network Policy 是个强大的工具,可以实现 I/Engress 的流量精确控制,关键是选择好 PodSelector,定义好流特征


五、思考时间

思考一下

l 为什么网络接口标准化了(CNI ),而网络方案没有标准化?

l 为什么 Network Policy 没有交给一个标准 Controller 来实现,而是交给方案提供方?

l 能不能完全不用 Net-dev 型的设备,实现一个容器网络?

l 网络问题排查,值不值得做一个开源工具实现?

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
编解码 异构计算
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
77 9
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
|
1月前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【Neck】| ASF-YOLO 注意力尺度序列融合模块改进颈部网络,提高小目标检测精度
RT-DETR改进策略【Neck】| ASF-YOLO 注意力尺度序列融合模块改进颈部网络,提高小目标检测精度
61 3
RT-DETR改进策略【Neck】| ASF-YOLO 注意力尺度序列融合模块改进颈部网络,提高小目标检测精度
|
1月前
|
机器学习/深度学习 编解码 自动驾驶
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
44 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
1月前
|
机器学习/深度学习 移动开发 测试技术
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤
47 1
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤
|
16天前
|
人工智能 安全 网络安全
网络安全领导者有效缓解团队倦怠的四步策略
网络安全领导者有效缓解团队倦怠的四步策略
|
3天前
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
31 12
|
1月前
|
计算机视觉
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
56 12
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
|
1月前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【Neck】| ECCV-2024 RCM 矩形自校准模块 优化颈部网络
RT-DETR改进策略【Neck】| ECCV-2024 RCM 矩形自校准模块 优化颈部网络
68 10
RT-DETR改进策略【Neck】| ECCV-2024 RCM 矩形自校准模块 优化颈部网络
|
1月前
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型
51 2
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型
|
1月前
|
机器学习/深度学习
RT-DETR改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
RT-DETR改进策略【Neck】| GSConv+Slim Neck:混合深度可分离卷积和标准卷积的轻量化网络设计
62 11

热门文章

最新文章