【K8S系列】第六讲:Kubernetes的网络模型

简介: 【K8S系列】第六讲:Kubernetes的网络模型

一、k8s的三种网络

Node Network: 与外部网络接口

Service Network: ipvs规则当中的网络、路由提供调度

Pod Network: 节点当中pod的内部网络无法与外界通信

其中:

Node Network: 集群节点所在的网络,这个网络就是你的主机所在的网络,通常情况下是你的网络基础设施提供。

如果node处于不同的网段,那么你需要保证路由可达。如上图中的 192.168.10.0/24和10.0.0.0/8这两个网络

Service Network:第二个是K8S服务网络, service_cluster_ip_range(如图,默认的配置是的10.0.0.1/24)

在上图中,扩充的节点(基础网络是10.0.0.0/8)和 服务网络(10.0.0.1/24)冲突,会造网络问题。

Pod Network:第三个网络是Pod的网络, K8s中一个Pod由多个容器组成,但是一个pod只有一个IP地址,Pod中所有的容器共享同一个IP。

      这个IP启动pod时从一个IP池中分配的, 叫做 pod CIDR, 或者叫network_cidr(如图,默认配置是10.1.0.0/16)。 可以在配置文件中配置。


kubernetes对于pod的网络定制了下列三个要求,所有网络插件支持这几个要求即可:


所有节点上所有的pod可以互相通信,并且不依赖NAT

节点上的进程可以和该节点上的所有pod通信

运行在主机网络空间下的pod可以和所有节点上的所有pod互相通信,并且不依赖NAT

注意: 一个Pod会包含多个container, 但是这些containers共享一个网路IP,也就是说,Container A如果占了80, Container B就不能用80 了。


用一个pod

优点:

  • 在同一个pod,将关系紧密的容器放在一起,通过挂载同一数据卷来共享数据
  • 共享网络,内部相互调用访问更高效

缺点:

  • 共享网络,每个容器的端口需要规划
  • 一个容器需要升级,会影响到整个pod滚动升级


二、service网络

为了解决Pod IP地址不是持久性的,可能会进行更改,k8s采用service对pod进行抽象

service为pod组提供虚拟ip,任何路由到这个虚拟ip的,都将转发到对应关联的pod上,而且service还提供高可用与负载均衡

2.1 netfilter

为了在群集内执行负载平衡,Kubernetes依赖于Linux内置的网络框架netfilter;

Netfilter是Linux提供的框架,它允许以自定义处理程序的形式实现与网络相关的各种操作。数据包筛选,网络地址转换和端口转换的操作,提供了通过网络引导数据包所需的功能,并提供了禁止数据包到达计算机网络内敏感位置的功能。


2.2 iptables

默认采用iptables,其是一个用户空间程序,它提供了一个基于表的系统,用于定义netfilter模块的处理和转换数据包的规则;

iptables规则监视发往服务虚拟的流量IP,并从一组可用的Pod中随机选择一个Pod IP地址,并且iptables规则将数据包的目标IP地址从服务的虚拟IP更改为所选Pod的IP。


2.3 clustip

nodeport,在node上面开启一个监听端口,负责将service暴露给外面访问,通过访问这个service的这个端口可以确认访问这个service,会有iptables做地址转换

pod去访问service是需要通过宿主机的,不然没法通过宿主机的内核net_filter模块做nat地址转换


如上图:

  • 数据包通过eth0离开pod1
  • 数据包来到网桥,arp协议不了解服务,发往默认路由eth0
  • 在到达eth0前,iptables改写目标ip为特点的pod ip,并记录下来这次的pod选择,以便将来的相同事件

基于 IP-per-Pod 的基本网络原则,Kubernetes 设计出了 Pod - Deployment - Service 这样经典的 3 层服务访问机制,极大地方便开发者在 Kubernetes 部署自己的服务。在生产实践中,可以根据自己的业务需要选择合适的 CNI 插件。


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6天前
|
机器学习/深度学习 数据可视化 算法
R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究
R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究
|
6天前
|
机器学习/深度学习 数据可视化 数据挖掘
R语言神经网络模型金融应用预测上证指数时间序列可视化
R语言神经网络模型金融应用预测上证指数时间序列可视化
|
6天前
|
机器学习/深度学习 数据可视化 算法
SPSS Modeler决策树和神经网络模型对淘宝店铺服装销量数据预测可视化|数据分享
SPSS Modeler决策树和神经网络模型对淘宝店铺服装销量数据预测可视化|数据分享
|
6天前
|
监控 网络协议 安全
计算机网络概述及 参考模型
计算机网络概述及 参考模型
|
12天前
|
机器学习/深度学习 PyTorch 算法框架/工具
Python用GAN生成对抗性神经网络判别模型拟合多维数组、分类识别手写数字图像可视化
Python用GAN生成对抗性神经网络判别模型拟合多维数组、分类识别手写数字图像可视化
|
12天前
|
Kubernetes API 调度
|
13天前
|
机器学习/深度学习 算法 数据可视化
数据报告分享|WEKA贝叶斯网络挖掘学校在校人数影响因素数据分类模型
数据报告分享|WEKA贝叶斯网络挖掘学校在校人数影响因素数据分类模型
|
13天前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的策略与实践云端防御:融合云计算与网络安全的未来策略
【4月更文挑战第29天】 在数据驱动的时代,构建一个高效的机器学习模型对于解决复杂问题至关重要。本文将探讨一系列策略和最佳实践,旨在提高机器学习模型的性能和泛化能力。我们将从数据处理的重要性入手,进而讨论模型选择、训练技巧、超参数调优以及模型评估方法。通过这些策略的实施,读者将能够构建出更加健壮、准确的模型,并有效地避免过拟合和欠拟合问题。
|
1天前
|
网络协议 Linux 网络架构
|
4天前
|
域名解析 网络协议 Linux
linux网络配置详解
linux网络配置详解
14 0