k8s中的整体架构 ,pod含义,服务类型,网络通讯等

news2025/3/16 3:51:19

k8s中的整体架构 ,pod含义,服务类型,网络通讯等

  • k8s整体架构
  • pod内部和pod之间的通讯
  • k8s的组件

k8s整体架构

在这里插入图片描述
上图中,较大的红框是k8s中的master节点,负责接受请求,调度任务,管理节点等,较小的红框中的是node节点,是负责具体干活的节点;
在master节点中,
scheduler是调度器,任务过来之后,要通过scheduler把任务分散到不同的node中。它先将请求发送给api server,api server再将请求发送给etcd;
replication controller(RC)是控制器,负责控制副本数量满足期望值,一旦超出或者不足,RC会删除pod或者新建pod;
api server: 所有服务访问统一入口;scheduler和RC可以在本地生成一些缓存,这样不需要每次都和api server进行交互,环节api server的压力。
etcd是一个可信赖的分布式键值存储数据库,负责和api server进行交互,存储类似拓扑结构,服务发现等一些关键信息。它天生支持集群方式搭建,raft协议,方便扩展,
在node节点中,
kubelet会与CRI(container容器,runtime运行环境,interface接口)交互,实现容器的生命周期管理
kube proxy 实现pod与pod之间的访问,负载均衡等的功能;

以上是k8s的核心功能组件,还有一些其他插件,例如coreDNS,dashboard,ingress controller,federation,prometheus,ekl等,见下方图片的说明:
在这里插入图片描述

pod内部和pod之间的通讯

k8s网络模型假定了所有pod都在一个可以直接连通的扁平的网络空间中。这个看似简单的操作实际上需要底层网络进行复杂的布局。
同一个pod内多个容器之间的通讯是通过lo(localhost+端口号,回环网卡)
各个pod之间的通讯:overlay network
pod和service之间的通讯:各个节点的iptables规则(lvs)

flannel是CoreOS团队针对k8s设计的一个网络规划服务。它的功能是让集群中不同节点主机创建的docker容器都具有全集群唯一的虚拟ip地址,并且这些ip地址之间建立一个覆盖网络(overlay network),通过这个覆盖网络,将数据包在各个目标容器之间进行传输。

在这里插入图片描述
在k8s各个服务器上会启动一个flanneld守护进程,它会创建一个flannel0的网桥,网桥flannel0会收集网关docker0转发的数据包。docker0会把自己的ip分配到不同的pod上(web app2 ,web app1等),那么同一个服务器上的不同pod就可以通过docker0来进行网络通讯;那么不同主机的pod之间是如何通过pod的ip进行通讯的呢?

在这里插入图片描述
例如web app2要向backend进行转发,首先docker0会判断sourceIP 10.1.15.2/24和destIP 10.1.20.3/24不是同一个网段的,那么就会把数据包发送到自己的网关docker0上,docker0上会有钩子函数把数据包发送到flannel0,flannel0上面会有很多的路由表记录(从etcd获取),找到这个数据包应该发送到哪一个主机。之后会把数据包发送到flanneld守护进程中,flanneld对数据包进行封装(见上图右上角),采用udp的方式进行转发。
数据包会被相应主机截获,被flanneld进行解析,之后通过flannel0和docker0转发,最终达到目标pod backend中。

在这里插入图片描述
flannel将可分配的ip地址资源端存储在etcd中,防止为pod分配ip的时候发生重复;
维护pod节点路由表,这样才能知道podIP和真实主机IP的对应关系,实现pod之间扁平化的通讯方式。

在这里插入图片描述

下面再来说说PodIP,PodIP是k8s分配给pod的IP,每个pod各不相同,到都在一个大的网断内,各个pod可以互通互联,并且集群的节点也可以通过PodIP访问到各个pod的服务。为了理解它的原理,我们先看下面这张图:
在这里插入图片描述
上图中,cni0和flannel.1网络设备都是flannel网络插件生成的虚拟网络设备,使用cni0是一个bridge设备,flannel.1是一个vxlan设备,cni0连接着该节点上的各个pod以及flannel.1。而flannel.1的另一头连着flanneld进程,所有进入flannel.1的流量都会交给flanneld进程进行处理,而flanneld会把数据包3层(IP层)及以上的包封装到一个udp包中,然后查找系统配置,找到数据包需要发送到的节点的IP,然后发送给对端节点的指定udp端口(5678),这个技术就是vxlan,可以将非同一网段的设备通过公网组成同一网段(内网)。
在这里插入图片描述

k8s的组件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1336743.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络奇缘】——奈氏准则和香农定理从理论到实践一站式服务|计算机网络

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 失真 - 信号的变化 影响信号失真的因素: ​编辑 失真的一种现象:码间…

推广主要指标及定义

推广主要指标以直通车为例解释,如图所示 1.展示量:当消费者搜索某个词,推广计划在天猫直通车展示位上被买家看到的次数(去掉被消费者快进划过、主图未完金展现等情况产生的曝光); 2.点击量:消费者看到广告…

iPad绘画之旅:从小白到文创手账设计的萌系简笔画探索

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 iPad的出现,不仅改变了我们对电子设…

[足式机器人]Part4 南科大高等机器人控制课 CH11 Bascis of Optimization

本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 南科大高等机器人控制课 Ch11 Bascis o…

QT小技巧 - 使用QMovie进行gif切帧

简介 使用QMovie 将 gif 进行切帧&#xff0c; magick 进行合并代码 QString gifPath "E:\\workspace\\qt\\gif2imgs\\203526qre64haq3ccoobqi.gif"; // 你的图片QMovie movie(gifPath); movie.setCacheMode(QMovie::CacheNone);qDebug() << movie.frameCou…

Blender动画怎么云渲染?一分钟学会渲染速度提升数十倍

1.Blender为什么需要渲染&#xff1f; Blender是一款功能强大且备受欢迎的开源3D建模和渲染软件&#xff0c;为设计师、艺术家和动画制作人提供了无尽的创作可能。随着其视觉质量和功能的不断提高和完善&#xff0c;Blender项目的渲染时间也显著增加&#xff0c;越来越多的设计…

电子信息工程学Python C++还是Java?

电子信息工程学Python C还是Java? 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「C的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&a…

flex 属性3

order 属性定义项目的排列顺序。数值越小&#xff0c;排列越靠前&#xff0c;默认为0 。 通过align-self 属性&#xff0c;可以单独调整某个伸缩项目的对齐方式 默认值为 auto &#xff0c;表示继承父元素的 align-items 属性。

西南科技大学计算机网络实验二 (IP协议分析与以太网协议分析)

一、实验目的 通过分析由跟踪执行traceroute程序发送和接收捕获得到的IP 数据报,深入研究在IP 数据报中的各种字段,理解IP协议。基于ARP命令和Ethereal进行以太网帧捕获与分析,理解和熟悉ARP协议原理以及以太网帧格式。 二、实验环境 与因特网连接的计算机网络系统;主机操…

Bluetooth Mesh 入门学习干货,参考Nordic资料(更新中)

蓝牙网状网络&#xff08;Bluetooth mesh&#xff09;概念 概述 蓝牙Mesh Profile | Bluetooth Technology Website规范&#xff08;Mesh v1.1 后改名Mesh ProtocolMesh Protocol | Bluetooth Technology WebsiteMesh Protocol&#xff09;是由蓝牙技术联盟(Bluetooth SIG)开…

SpringBoot 3.2.0 基于SpringDoc接入OpenAPI实现接口文档

依赖版本 JDK 17 Spring Boot 3.2.0 SpringDoc 2.3.0 工程源码&#xff1a;Gitee 导入依赖 <properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEnco…

【Ubuntu无法进入系统问题原因及解决方法】

有时因为某些原因&#xff0c;导致破坏了系统使用的某些库&#xff0c;比如libc.so.6被重命名&#xff0c;新替换的库无法兼容。会导致重启后&#xff0c;系统无法启动的现象。 可以通过recovery mode&#xff0c;先进入到系统中&#xff0c;更正错误内容即可。

基于ssm演出人员与观众疫情信息管理系统论文

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

嵌入式——RTC内置实时时钟

学习目标 理解原理图RTC设计部分掌握初始化RTC掌握设置时间掌握读取时间学习内容 RTC原理图 RTC结构框图 RTC时钟 开发流程 加载依赖。gd32f4xx_rtc.c,gd32f4xx_pmu.c初始化RTC。时钟配置。获取时钟。RTC初始化 // 电池管理加载 rcu_periph_clock_enable(RCU_PMU); pmu_back…

leetcode 6. N 字形变换(medium)(优质解法)

链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 代码&#xff1a; class Solution {public String convert(String s, int numRows) {if(numRows 1) {return s;}int lengths.length();StringBuilder retnew StringBuilder();//获取…

SecuSphere:一款功能强大的一站式高效DevSecOps安全框架

关于SecuSphere SecuSphere是一款功能强大的一站式高效DevSecOps解决方案&#xff0c;DevSecOps作为一个经过针对性设计的集中式平台&#xff0c;可以帮助广大研究人员管理和优化漏洞管理、CI/CD管道集成、安全评估和DevSecOps实践。 SecuSphere是一个功能全面的DevSecOps平台…

Android Studio 如何隐藏默认标题栏

目录 前言 一、修改清单文件 二、修改代码 三、更多资源 前言 在 Android 应用中&#xff0c;通常会有一个默认的标题栏&#xff0c;用于显示应用的名称和一些操作按钮。但是&#xff0c;在某些情况下&#xff0c;我们可能需要隐藏默认的标题栏&#xff0c;例如自定义标题栏…

python三 pycharrm安装

一、PyCharm下载安装 1&#xff09;访问官网 https://www.jetbrains.com/pycharm/download/#sectionwindows 下载「社区版 Community」 安装包 跟新 官网页面变动&#xff0c;找不到社区版 2&#xff09;下载完成后&#xff0c;「双击」运行安装包&#xff0c;开始安装。 …

西南科技大学计算机网络实验四(交换机基本配置与VLAN配置)

一、实验目的 熟悉交换机的各种基本配置与VLAN配置。 二、实验环境 使用RouterSim Network Visualizer软件来模拟网络设备与网络环境。 三、实验内容 1、交换机的基础配置 2、单台交换机上的简单VLAN设置 3、多台交换机上进行VLAN设置 四、实验步骤 4.1 交换机的基础配置…