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 网络问题排查,值不值得做一个开源工具实现?

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
运维 Kubernetes 前端开发
如何用 eBPF 实现 Kubernetes 网络可观测性?实战指南
本文深入探讨了Kubernetes网络观测的挑战与eBPF技术的应用。首先分析了传统工具在数据碎片化、上下文缺失和性能瓶颈上的局限性,接着阐述了eBPF通过零拷贝观测、全链路关联和动态过滤等特性带来的优势。文章进一步解析了eBPF观测架构的设计与实现,包括关键数据结构、内核探针部署及生产环境拓扑。实战部分展示了如何构建全栈观测系统,并结合NetworkPolicy验证、跨节点流量分析等高级场景,提供具体代码示例。最后,通过典型案例分析和性能数据对比,验证了eBPF方案的有效性,并展望了未来演进方向,如智能诊断系统与Wasm集成。
287 0
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
374 3
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
4614 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
9月前
|
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停止抓包。
347 12
|
供应链 监控 安全
网络安全中的零信任架构:从概念到部署
网络安全中的零信任架构:从概念到部署
1038 75
|
12月前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
422 2
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
440 8
|
存储 运维 Kubernetes
K8s业务迁移最佳实践: 灵活管理资源备份与调整策略,实现高效简便的应用恢复
在当今快速变化的云原生领域,Kubernetes(K8s)集群的运维面临着诸多挑战,其中灾备与业务迁移尤为关键。ACK备份中心支持丰富的资源调整策略,在数据恢复阶段即可自动适配目标集群环境,确保业务无缝重启。
|
网络协议 网络安全 数据安全/隐私保护
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
计算机网络概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等
269 4

热门文章

最新文章

推荐镜像

更多