层层推进,Kubernetes 网络原理图解,我用这招

一篇文章为你图解kubernetes网络通信原理 【本文专栏于[头条号]、[知乎]同步发布,可关注同名账号订阅相关文章,每周固定更新】 【全文6430字,阅读约需15分钟,其中涉及概念较多,建议先收藏再看。】 写在前面 在之前的文章中,我们已经对kubernetes有了一个全方位的了解。(详见我的头条号文章《一篇... 阅读详情

名词解释

1、网络的命名空间:Linux 在网络栈中引入网络命名空间,将独立的网络协议栈隔离到不同的命名空间中,彼此间无法通信;Docker 利用这一特性,实现不容器间的网络隔离。

2、Veth 设备对:也叫虚拟网络接口对。Veth设备对的引入是为了实现在不同网络命名空间的通信。

3、Iptables/Netfilter:Netfilter 负责在内核中执行各种挂接的规则(过滤、修改、丢弃等),运行在内核 模式中;Iptables模式是在用户模式下运行的进程,负责协助维护内核中 Netfilter 的各种规则表;通过二者的配合来实现整个 Linux 网络协议栈中灵活的数据包处理机制。

4、网桥:网桥是一个二层网络设备,通过网桥可以将 linux 支持的不同的端口连接起来,并实现类似交换机那样的多对多的通信。

5、路由:Linux 系统包含一个完整的路由功能,当IP层在处理数据发送或转发的时候,会使用路由表来决定发往哪里。

令人头大的网络模型

Kubernetes对集群内部的网络进行了重新抽象,以实现整个集群网络扁平化。我们可以理解网络模型时,可以完全抽离物理节点去理解,我们用图说话,先有基本印象。

其中,重点讲解以下几个关键抽象概念。

一个 Service

Service 是 Kubernetes 为屏蔽这些后端实例(Pod)的动态变化和对多实例的负载均衡而引入的资源对象。Service 通常与 deployment 绑定,定义了服务的访问入口地址,应用(Pod)可以通过这个入口地址访问其背后的一组由 Pod 副本组成的集群实例。Service 与其后端 Pod 副本集群之间则是通过 Label Selector 来实现映射。

Service的类型(Type)决定了 Service 如何对外提供服务,根据类型不同,服务可以只在Kubernetes cluster中可见,也可以暴露到集群外部。Service有三种类型,ClusterIP,NodePort 和 LoadBalancer。具体的使用场景会在下文中进行阐述。

在测试环境查看:

$ kubectl get svc --selector app=nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx ClusterIP 172.19.0.166 <none> 80/TCP 1m
$ kubectl describe svc nginx
Name: nginx
Namespace: default
Labels: app=nginx
Annotations: <none>
Selector: app=nginx
Type: ClusterIP
IP: 172.19.0.166
Port: <unset> 80/TCP
TargetPort: 80/TCP
Endpoints: 172.16.2.125:80,172.16.2.229:80
Session Affinity: None
Events: <none>

上述信息中该 svc 后端代理了2个Pod实例:172.16.2.125:80,172.16.2.229:80

二个 IP

Kubernetes 为描述其网络模型的 IP 对象,抽象出 Cluster IP和Pod IP的概念。

Pod IP 是 Kubernetes 集群中每个 Pod 的 IP 地址。它是 Docker Engine 根据 docker0网桥的IP地址段进行分配的,是一个虚拟的二层网络。Kubernetes 中 Pod 间能够彼此直接通讯,Pod 里的容器访问另外一个Pod里的容器,是通过Pod IP所在进行通信。

Cluster IP仅作用于 Service,其没有实体对象所对应,因此 Cluster IP 无法被ping通。它的作用是为 Service 后端的实例提供统一的访问入口。当访问 Cluster IP 时,请求将被转发到后端的实例上,默认是轮询方式。Cluster IP 和 Service一样由 kube-proxy 组件维护,其实现方式主要有两种,iptables 和 IPVS。在 1.8 版本后 kubeproxy 开始支持IPVS 方式。在上例中,SVC的信息中包含了Cluster IP。

这里未列出 node ip 概念,由于其本身是物理机的网卡IP。因此可理解为nodeip就是物理机IP。

三个 Port

在 Kubernetes 中,涉及容器,Pod,Service,集群各等多个层级的对象间的通信,为在网络模型中区分各层级的通信端口,这里对Port进行了抽象。

Port

该Port非一般意义上的TCP/IP中的Port概念,它是特指Kubernetes中Service的port,是Service间的访问端口,例如Mysql的Service默认3306端口。它仅对进群内容器提供访问权限,而无法从集群外部通过该端口访问服务。

nodePort

nodePort为外部机器提供了访问集群内服务的方式。比如一个Web应用需要被其他用户访问,那么需要配置type=NodePort,而且配置nodePort=30001,那么其他机器就可以通过浏览器访问scheme://node:30001访问到该服务,例如http://node:30001。

targetPort

targetPort是容器的端口(最根本的端口入口),与制作容器时暴露的端口一致(DockerFile中EXPOSE),例如 http://docker.io 官方的 nginx 暴露的是80端口。

举一个例子来看如何配置 Service 的 port:

kind: Service
apiVersion: v1
metadata:
 name: mallh5-service
 namespace: abcdocker
spec:
 selector:
 app: mallh5web
 type: NodePort
 ports:
 - protocol: TCP
 port: 3017
 targetPort: 5003
 nodePort: 31122

这里举出了一个service的yaml,其部署在abcdocker的namespace中。这里配置了nodePort,因此其类型Type就是NodePort,注意大小写。若没有配置nodePort,那这里需要填写ClusterIP,即表示只支持集群内部服务访问。

集群内部通信

单节点通信

集群单节点内的通信,主要包括两种情况,同一个 pod 内的多容器间通信以及同一节点不同 pod 间的通信。由于不涉及跨节点访问,因此流量不会经过物理网卡进行转发。

通过查看路由表,也能窥见一二:

root@node-1:/opt/bin# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.23.100.1 0.0.0.0 UG 0 0 0 eth0
10.1.0.0 0.0.0.0 255.255.0.0 U 0 0 0 flannel.1 #flannel 网络内跨节点的通信会交给 flannel.1 处理
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0 #flannel 网络内节点内的通信会走 docker0

1 Pod 内通信

如下图所示:

这种情况下,同一个pod内共享网络命名空间,容器之间通过访问 127.0.0.1:(端口)即可。图中的 veth* 即指veth对的一端(另一端未标注,但实际上是成对出现),该veth对是由 Docker Daemon 挂载在 docker0 网桥上,另一端添加到容器所属的网络命名空间,图上显示是容器中的eth0。

图中演示了 bridge 模式下的容器间通信。docker1 向 docker2 发送请求,docker1,docker2 均与 docker0 建立了 veth 对进行通讯。

当请求经过 docker0 时,由于容器和 docker0 同属于一个子网,因此请求经过 docker2与docker0的veth*对,转发到docker2,该过程并未跨节点,因此不经过eth0。

2 Pod 间通信

同节点 pod 间通信

由于 Pod 内共享网络命名空间(由 pause 容器创建),所以本质上也是同节点容器间的通信。同时,同一 Node 中 Pod 的默认路由都是 docker0 的地址,由于它们关联在同一个 docker0 网桥上,地址网段相同,所有它们之间应当是能直接通信的。来看看实际上这一过程如何实现。如上图,Pod1 中容器 1和容器 2 共享网络命名空间,因此对pod 外的请求通过 pod1 和 Docker0 网桥的 veth对(图中挂在eth0和ethx上)实现。

访问另一个pod内的容器,其请求的地址是PodIP而非容器的ip,实际上也是同一个子网间通信,直接经过veth对转发即可。

跨节点通信

CNI:容器网络接口

CNI 是一种标准,它旨在为容器平台提供网络的标准化。不同的容器平台(比如目前的 kubernetes、mesos 和 rkt)能够通过相同的接口调用不同的网络组件。

目前kubernetes支持的CNI组件种类很多,例如:bridge calico calico-ipam dhcp flannel host-local ipvlan loopback macvlan portmap ptp sample tuning vlan。在docker中,主流的跨主机通信方案主要有一下几种:

1)基于隧道的overlay网络:按隧道类型来说,不同的公司或者组织有不同的实现方案。docker原生的overlay网络就是基于vxlan隧道实现的。ovn则需要通过geneve或者stt隧道来实现的。flannel最新版本也开始默认基于vxlan实现overlay网络。

2)基于包封装的overlay网络:基于UDP封装等数据包包装方式,在docker集群上实现跨主机网络。典型实现方案有weave、flannel的早期版本。

3)基于三层实现SDN网络:基于三层协议和路由,直接在三层上实现跨主机网络,并且通过iptables实现网络的安全隔离。典型的方案为Project Calico。同时对不支持三层路由的环境,Project Calico还提供了基于IPIP封装的跨主机网络实现

通信方式

集群内跨节点通信涉及到不同的子网间通信,仅靠docker0无法实现,这里需要借助CNI网络插件来实现。图中展示了使用flannel实现跨节点通信的方式。

简单说来,flannel的用户态进程flanneld会为每个node节点创建一个flannel.1的网桥,根据etcd或apiserver的全局统一的集群信息为每个node分配全局唯一的网段,避免地址冲突。同时会为docker0和flannel.1创建veth对,docker0将报文丢给flannel.1,。

Flanneld维护了一份全局node的网络表,通过flannel.1接收到请求后,根据node表,将请求二次封装为UDP包,扔给eth0,由eth0出口进入物理网路发送给目的node。

在另一端以相反的流程。Flanneld解包并发往docker0,进而发往目的Pod中的容器。

外部访问集群

从集群外访问集群有多种方式,比如loadbalancer,Ingress,nodeport,nodeport和loadbalancer是service的两个基本类型,是将service直接对外暴露的方式,ingress则是提供了七层负载均衡,其基本原理将外部流量转发到内部的service,再转发到后端endpoints,在平时的使用中,我们可以依据具体的业务需求选用不同的方式。这里主要介绍nodeport和ingress方式。

Nodeport

通过将 Service 的类型设置为 NodePort,就可以在 Cluster 中的主机上通过一个指定端口暴露服务。注意通过 Cluster 中每台主机上的该指定端口都可以访问到该服务,发送到该主机端口的请求会被 Kubernetes 路由到提供服务的 Pod 上。采用这种服务类型,可以在 Kubernetes cluster 网络外通过主机 IP:端口的方式访问到服务。

这里给出一个 influxdb 的例子,我们也可以针对这个模板去修改成其他的类型:

kind: Service
apiVersion: v1
metadata:
 name: influxdb
spec:
 type: NodePort
 ports:
 - port: 8086
 nodePort: 31112
 selector:
 name: influxdb

Ingress

Ingress 是推荐在生产环境使用的方式,它起到了七层负载均衡器和 Http 方向代理的作用,可以根据不同的 url 把入口流量分发到不同的后端Service。外部客户端只看到 http://foo.bar.com 这个服务器,屏蔽了内部多个 Service 的实现方式。采用这种方式,简化了客户端的访问,并增加了后端实现和部署的灵活性,可以在不影响客户端的情况下对后端的服务部署进行调整。

其部署的 yaml 可以参考如下模板:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: test
 annotations:
 ingress.kubernetes.io/rewrite-target: /
spec:
 rules:
 - host: test.name.com
 http:
 paths:
 - path: /test
 backend:
 serviceName: service-1
 servicePort: 8118
 - path: /name
 backend:
 serviceName: service-2
 servicePort: 8228

这里我们定义了一个ingress模板,定义通过 http://test.name.com 来访问服务,在虚拟主机http://test.name.com下面定义了两个Path,其中/test被分发到后端服务s1,/name被分发到后端服务s2。

集群中可以定义多个ingress,来完成不同服务的转发,这里需要一个ingress controller来管理集群中的Ingress规则。Ingress Contronler 通过与 Kubernetes API 交互,动态的去感知集群中 Ingress 规则变化,然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段 Nginx 配置,再写到 Nginx-ingress-control的 Pod 里,这个 Ingress Contronler 的 pod 里面运行着一个nginx服务,控制器会把生成的nginx配置写入 /etc/nginx.conf 文件中,然后 reload使用配置生效。

Kubernetes 提供的 Ingress Controller 模板如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: test
 annotations:
 ingress.kubernetes.io/rewrite-target: /
spec:
 rules:
 - host: foo.bar.com
 http:
 paths:
 - path: /foo
 backend:
 serviceName: s1
 servicePort: 80
 - path: /bar
 backend:
 serviceName: s2
 servicePort: 80

总结及展望

本文针对 Kubernetes 的网络模型,从一个 service,二个IP,三个 port 出发进行图解。详解 Kubernetes 集群内及集群外部访问方式。

【K8S系列】深入解析k8s网络 Kubernetes 提供了多种网络插件,可以根据不同的网络需求和环境来选择适合的网络方案。需要注意的是,在进行网络插件的选择和部署时,需要考虑网络的可靠性、性能和安全性等因素。 阅读详情

相关推荐

Kubernetes网络详解

ipvs也是linux内核中集成的一个功能,实现了4层负载均衡的功能。在内核中对应的模块为ip_vs,ip_vs_rr等内核模块。在用户空间也有一个管理程序叫做ipvsadm,用来管理配置内核中虚拟服务器的工具。下面我们简单介绍一下这个命令的基本使用方法。

悦分享 1134

kubernetes之网络

一、概要 kubernetes的网络设计主要针对以下几种情况实现的: ● 同一pod下容器与容器的通信(容器之间); ● 同一节点下不同的pod之间的容器间通信(Pod之间); ● 不同节点下容器之间的通信; ● 集群外部与内部组件的通信; ● pod与service之间的通信; ● Internet与Service之间的网络; k8s对集群的网络有以下要求: ● 所有的Pods之间可以在不使用NAT网络地址转换的情况下相互通信; ● 所有的Nodes之间可以在不使用NAT网络地址转换的情况下相互通信; ●

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 2200

踩坑记录:Clawdbot 对接 Minimax 报错 “401 token is unusable (1004)“ 的终极解决方案

如果你也在配置 Clawdbot 对接 Minimax 模型时,明明 API Key 是新申请的,却死活报错 `401 Unauthorized`,错误码 `1004`,提示 `token is unusable`——那么恭喜你,来对地方了。

hampeter的博客 2001

kubernetes网络详解

kubernetes网络是Kubernetes的一个重要部分,各个pod之间或者pod与service之间的通信都是通过Kubernetes网络进行的

weixin_54279427的博客 935

DOORS需求管理实战:从汽车设计案例看模块化需求拆分技巧

本文通过一个汽车设计实战案例,深入解析了如何利用DOORS进行模块化需求拆分与管理。从捕获原始用户需求到精炼为可追踪的系统需求,再到按子系统(如自动驾驶)进行模块化拆分,文章详细展示了构建需求骨架、建立可追溯性以及实施变更控制的完整流程,帮助团队在复杂系统工程中实现从混沌到秩序的高效协同。

ww90123的博客 244

三维荧光光谱(EEM)散射干扰实战:从识别到精准切除的完整流程

本文详细解析三维荧光光谱(EEM)中散射干扰的识别与精准切除流程,涵盖瑞利散射和拉曼散射的实战处理技巧。通过drEEM工具箱的应用示例和高级场景解决方案,帮助研究者有效消除散射干扰,提升数据准确性,特别适用于环境样品和生物活体样本分析。

weixin_42554042的博客 327

层层推进!Kubernetes 网络原理图解,我用这招!

在之前的文章中,我们已经对 Kubernetes 有了一个全方位的了解。(详见我的文章《一篇文章带你了解 Kubernetes》《到底什么是 Kubernetes Pod》),接下来,我将用一个系列的文章对 Kubernetes 中的核心技术进行一一的探秘,话不多说,一起进入今天的内容吧。名词解释1、网络的命名空间:Linux 在网络栈中引入网络命名空间,将独立的网络协议...

架构师小秘圈 287

【教程4>第8章>第44节】本章整体思维导图与学习总结

本教程系列提供FPGA/MATLAB/Simulink学习资源,包含《MATLAB入门100例》、《FPGA入门100例》、《Simulink入门60例》等基础教程,以及《FPGA/MATLAB/Simulink联合开发》进阶教程和《人工智能基础应用研究》专题,适合不同层次的学习者系统掌握相关技术。

FPGA/MATLAB学习教程/源码/项目合作开发 448

kubernetes 网络

一个为Kubernetes提供叠加网络的网络插件, 它基于Linux TUN/TAP,用 UDP 封装IP报文来创建叠加网络,并借助etcd维护网络的分配情况。Pod的IP是集群可见的,即集群中的任何其他Pod和节点都可以通过IP直接与Pod通信,这种通信不需要借助任何的网络地址转换、隧道或代理技术。CNI 的插件模型支持不同组织和公司开发的第三方插件,这对运维人员来说很有吸引力,可以灵活选择适合的网络方案。由Flannel 和 caco 联合发布的一个统一网络插件,提供CNI 网络插件,并支持网络策略。

qq_41619571的博客 1038

数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

本文介绍了连续图像和数字图像直方图匹配(直方图规定化)的原理、处理过程,并提供了案例进行了讲解。可以看到,直方图均衡处理是直方图匹配的一个重要桥梁。 最后,对于直方图规定化这个翻译个人觉得很low,个人感觉叫指定直方图更好理解,但Histogram Specification怎么翻译确实不太好把握,因此还是叫Histogram Matching直方图匹配最好。

老猿Python 2880

Python OpenCV教程从入门到精通的全面指南【文末送书】

全书共分为16章,包括Python与OpenCV、搭建开发环境、图像处理的基本操作、像素的操作、色彩空间与通道、绘制图形和文字、图像的几何变换、图像的阈值处理、图像的运算、模板匹配、滤波器、腐蚀与膨胀、图形检测、视频处理、人脸检测和人脸识别以及MR智能视频打卡系统。主流技术,全面覆盖:本书内容丰富,涵盖了Open CV图像处理技术的方方面面,如图像的几何变换、阈值处理、图像运算、模板匹配、滤波器、腐蚀与膨胀、图形检测、视频处理、人脸检测和人脸识别等。此外,通过对比原图,可更直观地看到图像经过处理后的效果。

一键难忘的博客 9075

10分钟了解Kubernetes网络

CoreDNS是Kubernetes中用于服务发现和DNS解析的流行的DNS服务实现,是Kubernetes的默认DNS服务,并确保pod和服务都有FQDN(Fully Qualified Domain Name)。你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。微信公众号:DeepNoMind。

残星说梦话 502

【人工智能】RAG如何根据实际需求选择和进行文档解析(如 PDF、Word、TXT、网页等)?

文档解析的核心在于根据解析目标、文档类型和处理量选择合适工具。PDF、Word、TXT和网页各有特性:PDF需区分可编辑与扫描版,Word需处理结构化内容,TXT简单但需注意编码,网页需应对动态内容。解析场景包括提取纯文本、结构化数据、保留格式和批量处理。非技术用户可借助工具如Adobe Acrobat、WPS和在线OCR,技术用户可通过编程实现自动化。通用流程为:明确目标、分析文档属性、选择工具并测试优化。核心是“工具适配需求”,无需追求万能方案。

奶爸的编程之路,也就一周冷个三天 506

云原生系列「二」Kubernetes网络详解

前言 K8s是一个强大的平台,但它的网络比较复杂,涉及很多概念,例如Pod网络,Service网络,Cluster IPs,NodePort,LoadBalancer和Ingress等等,这么多概念足以让新手望而生畏。但是,只有深入理解K8s网络,才能为理解和用好K8s打下坚实基础。为了帮助大家理解,模仿TCP/IP协议栈,我把K8s的网络分解为四个抽象层,从0到3,除了第0层,每一层都是构建于前一层之上,如下图所示: 第0层Node节点网络比较好理解,也就是保证K8s节点(物理或虚拟机)之间能够正

qq_35789269的博客 5032

【WorkBuddy专栏09】WorkBuddy多模态能力深度揭秘

【WorkBuddy专栏09】AI不止会聊天——WorkBuddy多模态能力深度揭秘

AI人人懂 2108

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

kubernetes容器网络-全面详解

Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes 具备完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。Kubernetes 还提供完善的管理工具,涵盖开发、部署测试、运维监控等各个环节。

7B_Geek的博客 1529

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Kubernetes 网络通信详解

一、引言1.1 背景介绍在 Kubernetes 集群中,网络通信是容器编排的核心功能之一。它不仅决定了 Pod 之间的交互方式,还影响着服务的暴露、负载均衡以及集群的可扩展性。一个高效、灵活且安全的网络架构是 Kubernetes 集群成功运行的关键。二、Kubernetes 网络通信基础2.1 Kubernetes 网络模型:每个 Pod 都拥有一个独立的 IP 地址,Pod 内的容器可以通过lo相互通信。:Service 是一个虚拟 IP,用于负载均衡和对外暴露服务。

2301_78537542的博客 1054

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

k8s网络详解

cni0:他同docker网络模式不同的是,docker默认会创建一个名为docker0的网桥,而flannel会通过一个cni0来替换docker0。overlay:(覆盖网络),在现有的三层网络之下,“覆盖一层”虚拟的,由内核VXLAN模块负责维护的二层网络,使得在连接在这个VXLAN二层网络的pod之间,可以像在同一个局域网里一样,自由通讯。VXLAN:(虚拟可扩展局域网),是linux内核本身就支持的一种网络虚拟化技术。VXLAN完全就可以在内核实现封装和解封装的行为。架构图。

weixin_43539320的博客 6332

13、Kubernetes网络概念及策略控制

Kubernetes网络是指在Kubernetes集群中网络架构。本文通过一下五个层次介绍 k8s 网络。

qq_45829820的博客 1113

Kubernetes主要网络概念汇总

Kubernetes主要网络概念汇总

weixin_46619605的博客 1585

K8S系列-Kubernetes网络

一、Kubernetes网络模型 二、linux网络基础 三、Kubernetes 的网络实现

Feverasa的博客 1714

Kubernetes网络原理及方案

首先明确一点,CNM和CNI并不是网络实现,他们是网络规范和网络体系,从研发的角度他们就是一堆接口,你底层是用Flannel也好、用Calico也好,他们并不关心,CNM和CNI关心的是网络管理的问题。Kube-proxy是一个简单的网络代理和负载均衡器,它的作用主要是负责Service的实现,具体来说,就是实现了内部从Pod到Service和外部的从NodePort向Service的访问。主干网自治网络的路由协议,今天有了互联网,互联网由很多小的自治网络构成的,自治网络之间的三层路由是由BGP实现的。

justlpf的专栏 729

k8s网络模型

放在一起 效率更高 如不用记录ip 只要访问本地 pod之间 pod和node不需要经过net访问 在node上的iptable上做地址转换clustip 这样会识别不了 app 等于web的能访问mysql 去/etc** 读取配置 第一个为要执行的cni是哪个 然后去/opt执行cni ipam负责ip的分配或释放 main 容器网卡的初始化或清除 meta 负责其他技术如限速等 main类型的cni主要配置了容器内的网络打通了容器与宿主机的网络 如加网卡 配ip路由 节点与节点间的网络不管

qq_43555156的博客 1138

深入理解K8S网络原理

早期的k8s是穿kube-proxy的 考虑单点问题和性能损耗 新的版本不穿kube-proxy了。是主机上的网卡 也是流量出入的设备 也支持k8s集群节点之间做网络寻址和互通的设备。ribbon是以libary库的形式嵌入在客户端应用中的 对客户端应用是有侵入性的。1、k8s将pod集群中的pod信息自动注册到service registry。3、在Servcie发布的时候 K8s会为Service分配ClusterIP。运行的时候 K8s会把Pod集群中的Pod信息(ip和端口)注册到DNS上去。

meser88的博客 3435

一文看懂Kubernetes网络整体架构

最近老周做了这么个事情,就是我们总部云是HTTPS访问的,而边缘云是K8S的ServiceIp,协议是HTTP的,由于谷歌逐步禁止HTTPS页面加载HTTP资源,所以总部云访问不了边缘云的HTTP资源。在Pod内部,所有容器通过共享网络命名空间实现无缝通信。我们总部网络访问边缘云的网络还要开墙,可能开墙没来得及或者整条链路网络有问题,那么可以在Nginx上做文章,把HTTPS 443 端口rewrite成原先HTTP的80端口,开关配置成走旧的HTTP那套逻辑,这样的话即使有问题也能无感兼容。

riemann_的博客 2196
上一篇: Elasticsearch和MongoDB对比
下一篇: 看了这份阿里Redis笔记,以后出去redis的问题你随便问
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值