当前位置: 首页 > news >正文

k8s 自身原理 3

前面有分享到 master 主节点上的 四个组件,etcd,ApiServer,scheduler,controller manager

接下来我们分享一波 woker 节点上的组件,xdm 还记得 worker 节点上都有什么吗

  • kubelet
  • kube-proxy
  • 实际的服务对应的容器

kubectl 前面多多少少说了一些,但是 kubectl 具体是做啥的呢?

Kubelet

kubelet 是运行在节点中的关键节点之一,主要负责运行在该节点上的所有组件,总的来说 kubelet 会做这么 3 件事情

  • 请求 ApiServer ,注册当前节点,创建一个 node 资源
  • 持续监控 ApiServer 关于需要调度到自己节点的 pod,并启动 pod 容器
  • kubelet 组件也会运行容器的存活探针

上述第二点,是否会有这样的疑问,kubelet 是自己去运行 pod 吗?

实际上是 kubelet 会去告知配置好的容器,在运行的时候去拉取特定的镜像,接下来,kubelet 还会监控运行中的容器,并和 ApiServer 通信,告知 容器的状态,事件 和 资源消耗

可以画一个图来进行展示一波:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hLLj0cPX-1691758700208)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d42b3b7fa34f4ed29978262fece33a33~tplv-k3u1fbpfcp-zoom-1.image)]

通过上图我们可以看出,对于创建 pod,资源清单在 master 节点上或者是 worker 节点的本地清单目录里,kubelet 都是可以运行,管理和监控他们的

上述的容器 B 就是通过 ApiServer 来获取的 pod 资源清单,进而创建的 pod 容器,和监控 容器 B

容器 A 就会 worker 节点自身清单目录里面的 pod 清单,kubelet 仍然可以直接使用该清单创建 pod,管理并监控容器 A

节点中另一关键组件 - kube-proxy

首先来看看 kube-proxy 这个组件具体是干啥的,还记得之前我们也分享过,分享关于证书,访问 pod 元数据的那一篇

看名字应该知道他是一个 代理,具体作用是确保客户端可以通过 k8s 的 api 连接到咱们定义的服务上,这个可以看看之前分享的文章 【k8s 系列】k8s 学习二十四,如何访问 pod 元数据

那么为什么要叫他代理呢?

我们来回顾一下,叫代理,是因为他是一个中间商,可以促进两头的人进行正常的交易

例如:

小 A 期望和 小 C 合作,但是由于某种限制,小 A 无法与小 C 搭上线,可 小 B 可以直接和小 C 合作,小 A 也可以和小 B 说上话,那么 小A 就拜托小 B 帮忙和小 C 合作,完成 小 A 需要做的事情

那么这个时候,这里的 小 B 就是一个代理,若把 小 A 看成客户端,小 C 看成服务端,那么 小 B 还是一个正向代理 , 对于 小 C 来说,小 A 是不可见的,是被隐藏的,对这一块感兴趣的可以查看一下往期文章:简单理解正向代理和反向代理

那么此处的 kube-proxy 是代理什么角色呢?

刚开始的一种代理方式是这样的, kube-proxy 代理配置 iptables, 将服务器的连接进行拦截,重定向到代理服务器,并代理给到 pod 中

向后发展的时候,就演化成了 iptables 代理模式,就逐渐演化成了给 iptables 配置规则,直接重定向数据包给到任意一个 pod 了,就不再是给代理服务器了

可以这样理解,第一种和第二种代理方式的对比

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9yqACsbP-1691758700210)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a21f3a94e4084ec68550b515e412d37d~tplv-k3u1fbpfcp-zoom-1.image)]

明眼人都看得出来上述 演变过程的区别,第一种,iptables 会将数据传递给代理服务器,但是第二种是直接将数据给到 pod,所以 第二种的性能会更好,少了一个中间商赚差价

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ucgb5BqC-1691758700211)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/84ed6ab6b83748b18a8763f30e7a57d8~tplv-k3u1fbpfcp-zoom-1.image)]

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~
更多的可以查看 零声每晚八点直播:https://ke.qq.com/course/417774

相关文章:

k8s 自身原理 3

前面有分享到 master 主节点上的 四个组件,etcd,ApiServer,scheduler,controller manager 接下来我们分享一波 woker 节点上的组件,xdm 还记得 worker 节点上都有什么吗? kubeletkube-proxy实际的服务对应…...

SpringBoot 3自带的 HTTP 客户端工具

原理 Spring的HTTP 服务接口是一个带有HttpExchange方法的 Java 接口,它支持的支持的注解类型有: HttpExchange:是用于指定 HTTP 端点的通用注释。在接口级别使用时,它适用于所有方法。GetExchange:为 HTTP GET请求指…...

Spring Boot多级缓存实现方案

1.背景 缓存,就是让数据更接近使用者,让访问速度加快,从而提升系统性能。工作机制大概是先从缓存中加载数据,如果没有,再从慢速设备(eg:数据库)中加载数据并同步到缓存中。 所谓多级缓存,是指在整个系统架…...

机器学习笔记:李宏毅chatgpt 大模型 大资料

1 大模型 1.1 大模型的顿悟时刻 Emergent Abilities of Large Language Models,Transactions on Machine Learning Research 2022 模型的效果不是随着模型参数量变多而慢慢变好,而是在某一个瞬间,模型“顿悟”了 这边举的一个例子是&#…...

2023年中国智慧公安行业发展现况及发展趋势分析:数据化建设的覆盖范围不断扩大[图]

智慧公安基于互联网、物联网、云计算、智能引擎、视频技术、数据挖掘、知识管理为技术支撑,公安信息化为核心,通过互联互通、物联化、智能方式促进公安系统各功能模块的高度集成、协同作战实现警务信息化“强度整合、高度共享、深度应用”警察发展的新概…...

Apache Dubbo概述

一、课程目标 1. 【了解】软件架构的演进过程 2. 【理解】什么是RPC 3. 【掌握】Dubbo架构 4. 【理解】注册中心Zookeeper 5. 【掌握】Zookeeper的安装和使用 6. 【掌握】Dubbo入门程序 7. 【掌握】Dubbo管理控制台的安装和使用 8. 【理解】Dubbo配置二、分布式RPC框架Apache …...

React UI组件库

1 流行的开源React UI组件库 1 material-ui(国外) 官网: Material UI: React components based on Material Design github: GitHub - mui/material-ui: MUI Core: Ready-to-use foundational React components, free forever. It includes Material UI, which implements Go…...

计算机科学的伟大变革:从机械计算到人工智能

摘要 计算机科学作为一门学科,经历了几十年的发展和演变。本论文旨在探讨计算机科学领域的伟大变革,从最早的机械计算设备到如今的人工智能系统。通过回顾历史、分析技术进步以及展望未来,我们可以清晰地看到计算机科学如何塑造了现代社会&a…...

微服务详解

微服务 什么是微服务? 微:单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来只需要两个披萨就够了 服务:一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知的最…...

Python爬虫的requests(学习于b站尚硅谷)

目录 一、requests  1. requests的基本使用  (1)文档  (2)安装  (3)响应response的属性以及类型  (4)代码演示 2.requests之get请求  3. requests之post请求  &#x…...

PHP最简单自定义自己的框架view使用引入smarty(8)--自定义的框架完成

1、实现效果。引入smarty, 实现assign和 display 2、下载smarty,创建缓存目录cache和扩展extend 点击下面查看具体下载使用,下载改名后放到extend PHP之Smarty使用以及框架display和assign原理_PHP隔壁老王邻居的博客-CSDN博客 3、当前控…...

字符串的常用操作

1.拼接字符串 使用运算符""可以对多个字符串进行拼接将几个字符串拼成一个字符串。 2.计算字符串的长度 使用len()函数计算字符串的长度 len(string) 其中string用于指定要进行长度统计的字符串。 3.截取字符串 由于字符串也属于序列,所以要截取字…...

开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用

开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用 TextGen: Implementation of Text Generation models 1.介绍 TextGen实现了多种文本生成模型,包括&a…...

文心一言 VS 讯飞星火 VS chatgpt (74)-- 算法导论7.2 2题

二、如果用go语言,当数组A的所有元素都具有相同值时,QUICKSORT的时间复杂度是什么? 文心一言: 在Go语言中,对一个所有元素都相等的数组进行快速排序(QuickSort)的时间复杂度是O(n log n)。 快速排序是一…...

大数据第二阶段测试

大数据第二阶段测试 一、简答题 Flume 采集使用上下游的好处是什么? 参考答案一 -上游和下游可以实现解耦,上游不需要关心下游的处理逻辑,下游不需要关心上游的数据源。 -上游和下游可以并行处理,提高整体处理效率。 -可以实现…...

06 为什么需要多线程;多线程的优缺点;程序 进程 线程之间的关系;进程和线程之间的区别

为什么需要多线程 CPU、内存、IO之间的性能差异巨大多核心CPU的发展线程的本质是增加一个可以执行代码工人 多线程的优点 多个执行流,并行执行。(多个工人,干不一样的活) 多线程的缺点 上下文切换慢,切换上下文典型值…...

datax-web报错收集

在查看datax时发现日志出现了如上错误,因为项目是部署在本地linux虚拟机上的,使用的是nat网络地址转换,不知道为什么虚拟机的端口号发生了变化,导致数据库根本连接不进去,更新linux虚拟机的ip地址就好...

YOLO相关原理(文件结构、视频检测等)

超参数进化(hyperparameter evolution) 超参数进化是一种使用了genetic algorithm(GA)遗传算法进行超参数优化的一种方法。 YOLOv5的文件结构 images文件夹内的文件和labels中的文件存在一一对应关系 激活函数:非线性处理单元 activation f…...

深入解析Spring Boot的核心特性与示例代码

系列文章目录 文章目录 系列文章目录前言一、自动配置(Auto-Configuration)二、起步依赖(Starter Dependencies)三、命令行界面(CLI)四、微服务支持五、内嵌Web服务器六、配置文件管理七、简化的日志配置八、健康检查与监控九、注解驱动开发十、外部化配置总结前言 Spri…...

什么是Java中的观察者模式?

Java中的观察者模式是一种设计模式,它允许一个对象在状态发生改变时通知它的所有观察者。这种模式在许多情况下都非常有用,例如在用户界面中,当用户与界面交互时,可能需要通知其他对象。 下面是一个简单的Java代码示例&#xff0…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

反射获取方法和属性

Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: ​onCreate()​​ ​调用时机​:Activity 首次创建时调用。​…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四&#xff…...

uniapp 字符包含的相关方法

在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

el-amap-bezier-curve运用及线弧度设置

文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 ‌el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。‌ 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...