kubernetes -- 核心组件介绍以及组件的运行流程
常用组件大白话说
如果想要官方的,详细的信息,请看官方文档。
https://kubernetes.io/zh-cn/docs/concepts/overview/components/
现在介绍一些核心的概念:
- etcd:存储所有节点的信息,节点上部署的容器信息等都存在数据库,这是一个key-value的数据库,和redis差不多。
- api-server:k8s作为一个高级的容器管理平台,对每一个发来的请求都要进行校验,该请求是否被集群允许。删除集群中的一个容器组,是否被允许。k8s默认运行后,6个组件每一个组件的请求,都要经过api-server进行校验。
- controller manager:具体部署容器到目标节点,使用的控制器。容器负载均衡部署,Deployment控制器就是其中之一。
- scheduler:运维写nginx.yaml(描述信息),预期部署3个nginx容器到k8s-node2节点上。将Pod调度到相应的Node机器上。
- kubelet:管理目标节点中Pod的进程。
- kubectl:在master节点上敲打的命令。
- kube-proxy:在node节点中我们可以看到有kubectl和kube-proxy。kubectl用于和master的api-server通信决定容器创建时的信息获取,信息更新。而kube-proxy则是pod要对外提供网络访问,底层基于iptables的规则转发数据包,修改数据包。
我们来用一个例子来理解生动的理解这些东西。
Kubernetes cluster成为硅谷集团,类似于腾讯集团,阿里集团。
而Master集群就是硅谷集团的总部(Controller Plane),负责决策的。节点集群就是硅谷集团用来专门做事情的工厂(Node)。
每一个Node节点所擅长的不一样,比如有的Node内存大,有的Node存储空间大,有的Node在当前的情况下网络环境比较好等等。
加入说有一天,我准备完成一个飞机项目,那么我的硅谷总部需要做一些决策,计划的实施等,而飞机项目的具体实现就交给Node节点来做。我们首先需要一个决策者。决策者(c-m)负责这个项目的具体操作步骤,例如撰写相关的实施方案和资料。当然,我们撰写了相关的实施方案和资料之后,需要交给一个人去管理这些资料,把这些资料存放在一个地方整理起来,因此我们需要一个资料库,etcd(这个就是键值对的数据库而已)。而我的决策者可不能直接把资料给资料库,我们需要一个中间人,你看到过哪个领导没有秘书的吗,这也算是一种任务分工,一种解耦合。我们c-m需要把资料先给秘书部(API Server)。这个时候我的Controller Plane硅谷总部准备过去看一下工厂的项目执行进度,或者做一些指导,所以我们需要一个调度者(scheduler),当然调度者做这一间事情也是通过秘书去做的。当我要查看东厂的时候,一个厂(Node)里面一定是有一个门卫(kube-proxy)的,一些非法人士是无法进入我的工厂的,并且如果你假如要去西厂,但是你走错厂了,去了东厂,那么东厂的门卫大爷就会对你进行一些指导,引导你去相应的位置,引导你的网络访问。当我去一个工厂视察的时候,我不可能逐一的询问工厂里面的每一个员工,所以我们一定要有一个厂长(kubulet),厂长可以有决策权把这个厂停了,或者进行只会,Master里面也会有一个厂长。厂长对本工厂的健康情况等进行一个汇总和汇报。我们知道,一个公司,例如阿里云,它不可能是孤身一人的,它一定是会有合作伙伴,或者是一些其他帮手的,也就是Master里面的c-c-m,我们可以理解成外联部,外联部提供一些其他的支持以及合作。外联部就Cloud provider API了,为什么叫做云,云其实就是不是你自己的东西,你用的别人的东西,其实就是云。
了解了kubernetes的基本组件之后,我们来讲述一下k8s组件的工作流程。
kubernetes组件的工作流程
我们先自定义一个需求背景:
创建一个无状态的nginx引用,部署一个pod即可
流程如下:
-
在master节点写yaml描述你对容器的运行要求,创建pod的要求。install-pod.yaml
-
使用kubectl命令去创建,应用这个资源描述文件,因此k8s组件交互发出请求,我要创建一个pod去运行nginx了,那么请求应该发给谁呢?
kubectl create -f install-nginx.yaml
这个请求发给api-server。
-
api-server此时会验证kubectl命令发来的请求是否被允许。利用本地https证书,这个证书是直接写入Kubectl配置文件里面的,该请求被允许之后才会执行。
-
api-server将nginx-pod创建的信息记录到etcd数据库中(数据库记录了一些信息,例如nginx镜像版本,容器名,是否要端口暴露)。
-
api-server会通知下一个组件,调度器组件,scheduler准备pod调度。
-
scheduler调度,会去etcd里面查询,部署的pod信息到底是如何,然后判定出一个合适的node节点去部署pod(选择了好了具体的机器,但是还没有执行)
-
scheduler调度器,会告诉api-server自己决定pod要部署到哪台node节点上。
-
api-server会把这个信息再次写入到etcd中,数据更新了(nginx本身的容器信息+绑定关系,部署到哪个机器上面)
-
此时api-server会通知远程的具体机器,比如k8s-node2上的工作进程kubelet,去读取etcd里面的信息,根据这些信息创建nginx镜像,以及创建Pod(nginx容器)。
首先我们的运行环境必须是容器运行时的环境,例如Docker,因为容器具有隔离性。
我们的Master和Node之间的交互必须要通过api-server来进行转发,包括Master内部。kube-proxy是实现网络转发的,是实现负载均衡的一个重要器具。kubelet有权利让Node里面如何做事情。
现在我们来进行一些过程的描述。
假如我的的一个Node里面的应用2直接崩了,那么我的kubelet厂长会定时对Node里面的应用进行探测,kubelet会随时对工厂里面的流水线进行探测。当kubelet发现应用二崩了,那么它就有权利直接把应用2停了。如果我们的kubelet发现我们的当前的Node已经无法完成这个任务了的话,那么kubelet就会把这个情况直接发给api-server,api-server会转发给决策者controller-manager,然后决策者就可以进行决策了,决策者可以指定,那么这个任务我不搞了,或者给其他的厂去搞。然后把这个决策给api-server,api-server会把这个决策转发到ETCD数据库进行保存。如果是交给其他的厂来搞的话,那么如何知道那些厂可以完成这个任务呢?这个时候api-server就会把这个任务发送给scheduler,scheduler得知这个任务之后,我们的scheduler决策者就会去轮询的查找符合条件的节点,然后选择一个最佳的节点,scheduler把它选择的节点给api-server,然后api-server就把这一条记录存放到ETCD数据库里面了。
这次决策完成之后,kubelet和api-server会经常“通电话”进行联系,如果要换厂的话,那么他们是可以知道这个信息的。知道了这个信息之后对应的kubelet就会启动相应的应用。并且kubelet每过一段时间就要向api-server进行汇报。就跟厂长跟老板汇报工作一样。
如果这个项目跑起来了,需要别人访问怎么办?
kube-proxy是门卫大爷,而且门卫大爷都很喜欢相互打电话联系,所以知道其他的情况。例如我的应用1想要访问应用3的话,那么kube-proxy会告诉你所有的应用三的地址。
门卫大爷互相同步
所以kube-proxy是用来决定我的应用去哪里访问的,是负载均衡实现的源头。
相关文章:

kubernetes -- 核心组件介绍以及组件的运行流程
常用组件大白话说 如果想要官方的,详细的信息,请看官方文档。 https://kubernetes.io/zh-cn/docs/concepts/overview/components/ 现在介绍一些核心的概念: etcd:存储所有节点的信息,节点上部署的容器信息等都存在数…...

微信小程序Springboot短视频分享系统
3.1小程序端 用户注册页面,输入用户的个人信息点击注册即可。 注册完成后会返回到登录页面,用户输入自己注册的账号密码即可登录成功 登录成功后我们可以看到有相关的视频还有视频信息,我的信息等。 视频信息推荐是按照点击次数进行推荐的&am…...

排序算法学习
文章目录前言一、直接插入排序算法二、折半插入排序算法三、2路插入排序算法四、快速排序算法学习前言 算法是道路生涯的一个巨大阻碍。今日前来解决这其中之一:有关的排序算法,进行实现以及性能分析。 一、直接插入排序算法 插入排序算法实现主要思想…...

常见漏洞之 struts2+ jboss
数据来源 本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 01 Struts2相关介绍 》Struts2概述 》Struts2历史漏洞(1) 》…...

leetcode470 用Rand7()实现Rand10()
力扣470 第一步:根据Rand7()函数制作一个可以随机等概率生成0和1的函数rand_0and1 调用Rand7()函数,随机等概率生成1,2,3,4,5,6,7 这时我们设置:生成1,2&a…...
JSON数据解析商品详情API
大家有探讨稳定获取商品主图、jiage、标题,及sku的完整解决方案。这个引起了我技术挑战的兴趣,然后各种网上资料查询,最终还是不负努力,找到更好的解决方案,不再出现任何滑块验证码,完全绕过,实…...

服务端开发Java面试复盘篇1
上周投了一些简历,约了8-9家面试,其中完成了3家的第一轮面试,由于面试的是Java 的实习生,感觉问的题目都比较基础,不过有些问题回答的不是很好,在这里对回答的不太好的题目做一下总结和复盘。 目录 一、后…...

Android框架WiFi架构
同学,别退出呀,我可是全网最牛逼的 WIFI/BT/GPS/NFC分析博主,我写了上百篇文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。 一、wpa_supplicant:wpa_supplicant本身开源项目源码,被谷歌收购之后加入Android移…...

rt-thread 移植调试记录
rt-thread 移植调试记录 记录rt-thread移植的过程。这里移植仅仅是利用rt-thread源码目录已经移植好的文件,组建自己的工程,不需要自己编写汇编完成底层移植。 1. 搭建基础工程 这里使用的是正点原子的潘多拉开发板,MCU为stm32l475。需要先…...
红外线额温枪与红外线温度传感器的原理分析
额温枪主要针对测量人体额温基准而设计,使用也非常简单方便。测体温可以达到一秒即可准确测量。并且不需要接触人体,隔着空气即可一键测温。非常适合家庭、学校、企业等场所。 但是由于其精度原因(一般为 0.2 ℃,也有更低的&#…...
2023牛客寒假算法集训营4
目录A. [清楚姐姐学信息论](https://ac.nowcoder.com/acm/contest/46812/A)(数学)B. [清楚姐姐学构造](https://ac.nowcoder.com/acm/contest/46812/B)(数学 构造)C. [清楚姐姐学01背包(Easy Version)](https://ac.nowcoder.com/…...

vue组合式API及生命周期钩子函数
一、组合式API 什么是组合式API? vue3中支持vue2的选项式、支持新的编程模式–函数式编程(没有this指针)做了一个兼容,可以在一个组件中使用函数式编程和OOP编程(选项式) setup()函数 可以使用setup属性…...
Python|每日一练|数组|回溯|二分查找|排序和顺序统计量|.update方法 |单选记录:组合总和|寻找峰值|编程通过键盘输入每一位运动员
1、组合总和(数组、回溯) 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 t…...

minio下载文件速度很慢的原因分析与说明
文章目录1.实战背景2.问题描述3.问题分析4.问题解决1.实战背景 最近在做一个项目,需要用到minio来搭建文件系统,先简单说一下我在项目中设置的上传文件流程: 前端将分块文件逐一传给后端,后端再存储到 linux服务器的minio 当中。…...

基于comsol软件弯曲单模光纤模拟仿真
在本节中,主要基于实验室实际光纤单模圆柱光纤进行模拟,与comsol案例库文件在分析过程和建模有些差异: 模拟主要通过以下三个步骤进行:模型的几何构建、物理场的添加研究、结构处理分析来进行。 下面是第一步骤:几何…...

如何开启多个独立Chrome浏览器
一、简介 作为测试或者开发人员,有些情况下会用到 Chrome 浏览器,但有时是同一个 Chrome 浏览器无法为我们提供隔离开的不同环境。这样 我们就需要清理 cache 、切换账号等,降低了我们的工作效率。今天的主题是如何开启多个独立的 Chrome 浏…...
erp5开源制造业erp主要业务会计分录处理
erp5开源制造业erp主要业务会计分录处理 采购业务的会计分录 收到发票时 借:材料采购 (1201) 应交税费-应交增值税(进项税)(21710101) 贷:应付账款 (2121) 付款时 借:应付账款 (2121) 贷:银行存款 (1002) 入…...

技能树基础——17四平方和(拉格朗日定理,嵌套循环)
题目:四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 0^ 2 0^ 2 1^ 2 2^27 1^ 2 1^ 2 1^ 2 2^2 (^符号表…...
JPA、EJB、事物管理---相关内容整理
目录 ■前言 ■实现原理:容器管理事务 ■代码实现简单描述: 1.JPA ■定义 ■1.1.配置文件 ■1.2.OSS jar ■1.3.一些OPA的类(举例) ■1.4. jpa 框架在实体类(Entity)中添加非数据库字段的属性--…...

C语言学习笔记(一):了解C语言
什么是C语言 C语言是一种高级编程语言,最早由丹尼斯里奇在1972年开发。它是一种通用编程语言,提供了高级编程语言的方便和易用性,同时又有较低级别的编程语言的灵活性和效率。C语言在许多操作系统、编译器和应用程序开发中广泛使用ÿ…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...