K8S原理剖析:网络模型原理剖析和实践

本文涉及的产品
公网NAT网关,每月750个小时 15CU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: K8S原理剖析:网络模型原理剖析和实践

大纲


  • 网络模型与CNI
  • Service
  • Ingress
  • DNS
  • Network Policy


网络模型与CNI

一个Pod一个IP

  • - 每个Pod独立IP, Pod内所有容器共享网络namespace(同一个IP)
  • - 容器之间直接通信,不需要NAT
  • - Node和容器直接通信,不需要NAT
  • - 其他容器和容器自身看到的IP是一样的

集群内访问走Service,集群外访问走Ingress

CNI( container network interface)用于配置Pod网络 -不支持docker网络


Bridge网络


Overlay网络


CNI:Container Network Interface

容器网络的标准化

使用JSON来描述网络配置

两类接口:

  • - 配置网络 -- 创建容器时调用
  • AddNetwork(net NetworkConfig, rt RuntimeConf) (types.Result, error)
  • - 清理网络 -- 删除容器时调用
  • DelNetwork(net NetworkConfig, rt RuntimeConf)


Service


Service类型

ClusterIP

  • - 默认类型,自动分配集群内部可以访问的虚IP——Cluster IP。

NodePort

  • - 为Service在Kubernetes集群的每个Node上分配一个端口,即NodePort, 集群内/外部可基于任何一个NodeIP:NodePort的形式来访问Service。

LoadBalancer

  • - 需要跑在特定的cloud provider上
  • - Service Controller自动创建一个外部LB并配置安全组
  • - 对集群内访问, kube-proxy用iptables或ipvs实现了云服务提供商LB的部分功能: L4转发,安全组规则等


kubernetes服务发现


Service实现之iptables

Iptables是用户空间应用程序,通过配置Netfilter规则表( Xtables )来构建linux内核防火墙

DNAT 的全称为Destination Network Address Translation目的地址转换,常用于防火墙中。

iptables的规则表和链(忽略centos中的第5个表SECURITY,常用的只是filter, nat)

表(tables):提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理

链(chains):是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。

规则链:

  • 1)INPUT——进来的数据包应用此规则链中的策略
  • 2)OUTPUT——外出的数据包应用此规则链中的策略
  • 3)FORWARD——转发数据包时应用此规则链中的策略
  • 4)PREROUTING——对数据包作路由选择前应用此链中的规则(记住!所有的数据包进来的时侯都先由这个链处理)
  • 5)POSTROUTING——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

链可以说是数据包流动的链条,只分两条路,转发出去和到本机的;链条里嵌着表,每个结点的表不一样,可以实现的规则功能和特定结点结合在一起;也可以从表考虑,nat表只影响PREROUTING,POSTROUTING,OUTPUT结点,在链条的前后;filter表只影响FORWARD,INPUT,OUTPUT结点,在链条的中间部分;


Service实现之ipvs

IPVS是LVS的负载均衡模块,亦基于netfilter,但比iptables性能更高。

ipvs长连接,默认时间15min,可以最大调整到31天


iptables和ipvs对比


如何从集群外访问kubernetes的service

使用NodePort类型的Service

  • - 要求Node有对外可访问IP

使用LoadBalancer类型的Service

  • - 要求在特定的云服务上跑K8S

Service只提供L4负载均衡功能,而没有L7功能


Ingress

Ingress是授权入站连接到达集群服务的规则集合

  • - 支持通过URL方式将Service暴露到K8S集群外, Service之上的L7访问入口
  • - 支持自定义Service的访问策略
  • - 提供按域名访问的虚拟主机功能
  • - 支持TLS


Ingress DIY

需要自己实现Ingress Controller

  • - List/Watch K8S的Service, Endpoints, Ingress对象,刷新外部LB的规则和配置
  • - 官方提供Nginx和GCE的Ingress Controller示例

想通过域名访问Ingress?

  • - 需要自己配置域名和Ingress IP的映射: host文件,自己的DNS(不是Kube-dns)


DNS


kube-dns

  • kubedns: List/Watch K8S Service和Endpoints变化。接入SkyDNS,在内存中维护DNS记录,是dnsmasq的上游。
  • dnsmasq: DNS配置工具,监听53端口,为集群提供DNS查询服务。提供DNS缓存,降低kubedns压力。
  • sidecar:健康检查,检查kube-dns和dnsmasq的健康


Network Policy


Network Policy是什么

基于源IP的访问控制列表

  • - 限制Pod的进/出流量
  • - 白名单

Pod网络隔离的一层抽象

  • - label selector
  • - namespace selector
  • - port
  • - CIDR

没有Network Policy意味着:“全网通”

网络插件实现Policy Controller


默认Network Policy


拒绝所有流量进入


限制部分流量进入

允许所有流量进入


限制流量从指定端口进入


支持Network Policy的网络插件

 

  • Calico
  • Cilium
  • Weave Net
  • Kube-router
  • Romana

注意: flannel和kubenet不支持network policy

 


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
13天前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
120 0
|
2月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
66 2
|
2月前
|
JSON 监控 网络协议
干货分享“对接的 API 总是不稳定,网络分层模型” 看电商 API 故障的本质
本文从 OSI 七层网络模型出发,深入剖析电商 API 不稳定的根本原因,涵盖物理层到应用层的典型故障与解决方案,结合阿里、京东等大厂架构,详解如何构建高稳定性的电商 API 通信体系。
|
10天前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
186 11
|
13天前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
23天前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
107 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
1月前
|
算法 安全 网络安全
【多智能体系统】遭受DoS攻击的网络物理多智能体系统的弹性模型预测控制MPC研究(Simulink仿真实现)
【多智能体系统】遭受DoS攻击的网络物理多智能体系统的弹性模型预测控制MPC研究(Simulink仿真实现)
|
2月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
174 7
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
225 17
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
177 10

热门文章

最新文章

推荐镜像

更多