kubernetes 入门篇之架构介绍

经过前段时间的学习和实践,对k8s的架构有了一个大致的理解

1. k8s 分层架构

在这里插入图片描述

架构层级核心组件
控制平面层etcd、API Server、Scheduler、Controller Manager
工作节点层Kubelet、Kube-proxy、CRI(容器运行时接口)、CNI(网络插件)、CSI(存储插件)
资源对象层Pod、Deployment、StatefulSet、HPA、VPA
扩展插件层CoreDNS、Ingress Controller、KEDA(事件驱动自动扩缩)、Argo Rollouts

2. 组件

2.1. kube-apiserver

作用:Kubernetes 集群的核心入口,提供 RESTful API 服务。

功能:
接收所有来自客户端(如 kubectl)或集群内部组件的请求。

验证和校验请求的合法性(如权限、资源配额等)。

作为唯一直接与 etcd 交互的组件,负责集群状态的读写。

充当其他组件之间通信的枢纽(如 kube-scheduler、kube-controller-manager 等)。

2.2. kube-controller-manager

作用:运行一系列控制器(Controller),确保集群的实际状态与期望状态一致。

核心控制器:

Node Controller:监控节点状态(如节点宕机时触发处理)。

Replication Controller:确保 Pod 副本数符合预期(如 Deployment 的副本数)。

Endpoint Controller:维护 ServicePod 的映射关系(Endpoints)。

Service Account & Token Controller:管理服务账户和访问令牌。

2.3. kube-scheduler

作用:负责将新创建的 Pod 调度到合适的节点上运行。

调度流程:

过滤:排除不满足 Pod 需求的节点(如资源不足、标签不匹配)。

打分:对剩余节点按优先级排序(如资源利用率、亲和性等)。

绑定:将 Pod 绑定到最优节点,由对应节点的 kubelet 执行创建。

可扩展性:支持自定义调度策略。

2.4. kubelet

作用:运行在每个节点上的“节点代理”,负责管理本节点上的 Pod 生命周期。

功能:

监听 API Server 或本地 Pod 清单(如静态 Pod),确保 Pod 按预期运行。

执行 Pod 的创建、启动、停止、监控等操作。

定期向 API Server 汇报节点状态(如资源使用情况、Pod 状态)。

与容器运行时(如 Docker、containerd、CRI-O)交互,管理容器。

2.5. kube-proxy

作用:实现 Kubernetes Service 的网络代理和负载均衡。

功能:

维护节点上的网络规则(如 iptables/IPVS),将访问 Service 的请求转发到后端 Pod

实现 ServiceClusterIP、NodePort、LoadBalancer 等类型的网络暴露。

确保 Pod 之间的网络通信和负载均衡。

2.6. etcd

作用:Kubernetes 集群的分布式键值存储数据库,保存所有集群状态和数据。

功能:

存储集群的配置信息、节点信息、Pod 状态、Secrets、ConfigMaps 等。

提供高可用和强一致性的数据存储(基于 Raft 共识算法)。

仅通过 kube-apiserver 进行读写,其他组件不直接操作。

3. CRI

kubernetesv1.5 版本开始引入了CRI规范,通过插件接口模式,kubernetes无须重新编译就可以使用多种不同类型的容器运行时。kubernetesv1.23 及之前的版本可以将 docker 作为容器运行时,从v1.24 版本开始不再支持 docker 作为容器运行时,采用containerd 、CRI-O作为容器运行时。

kubelet 基于gRPC框架通过UNIX Socket 与容器运行时通信。在该过程中,kubelet 作为客户端,CRI 是服务端。
在这里插入图片描述
CRI 主要包括两个gRPC服务:ImageServiceRuntimeService,实现对容器镜像和容器实例的管理功能。

  • ImageService:负责容器镜像的拉取,查看和移除镜像等。
  • RuntimeService: 负责pod 和容器的生命周期管理,以及与容器的交互(如 exec、attac、 port-forward等)。

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

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

相关文章

Flink CDC 出现错误码 1236 和 SQL 状态 HY000 的原因及解决方法

Flink CDC 出现错误码 1236 和 SQL 状态 HY000 的原因及解决方法 常见原因 server-id 冲突:当多个 Flink CDC 任务连接同一个 MySQL 实例,且使用了相同的 server-id 时,会导致该冲突。因为 MySQL 服务器通过 server-id 来区分不同的从服务器,如果多个 Flink CDC 任务使用相…

从PPT到PNG:Python实现的高效PPT转图工具

从PPT到PNG:Python实现的高效PPT转图工具 在日常工作中,PPT(PowerPoint)文件是我们常用的演示工具。然而,有时候我们需要将PPT的内容提取为图片格式(如PNG)以便于展示或保存。手动将每一页PPT保…

【开发语言】悬空指针问题

悬空指针(Dangling Pointer)是编程中常见的内存管理问题,尤其在C/C这类手动管理内存的语言中。以下是详细解释: 什么是悬空指针? 悬空指针是指向已经被释放(或失效)内存的指针。这段内存可能已…

【持续更新中】常用docker服务部署指北

前言 docker是个好东西,小树莓派上也能快速部署,方便管理环境。用这篇笔记来记录下各种软件的快速部署方式 准备环境 docker安装 curl -fsSL https://get.docker.com -o get-docker.sh sh ./get-docker.shdocker镜像源配置 一种方法是设置proxy&…

Godot学习-创建简单动画

文章目录 1、准备工作Godot资源 2、创建项目3、创建结点4、创建动画1、创建动画2、添加轨道3、创建关键帧3.1 第一个关键帧3.2 第二个关键帧 5、加载后自动播放6、动画循环7、轨道设置1、轨道更新模式2、轨迹插值3、其他属性的关键帧4、编辑关键帧5、使用 RESET 轨道6、洋葱皮 …

Python 爬虫解决 GBK乱码问题

文章目录 前言爬取初尝试与乱码问题编码知识科普UTF - 8GBKUnicode Python中的编码转换其他编码补充知识GBKGB18030GB2312UTF(UCS Transfer Format)Unicode 总结 前言 在Python爬虫的过程中,我尝试爬取一本小说,遇到GBK乱码问题&a…

B站搜索关键词机制深度解析:算法逻辑与优化策略

在拥有超过5亿用户的B站生态系统中,每天都有海量的视频内容被上传和消费。对于创作者而言,如何让自己的视频在茫茫内容海洋中被目标受众发现,是至关重要的课题。而关键词,正是连接内容与用户的关键桥梁。理解B站的搜索关键词机制&…

宝塔面板中解锁Laravel日志查看的奥秘

目录 一、前言二、Laravel 日志基础认知2.1 日志的作用2.2 Laravel 日志的默认配置 三、查找 Laravel 日志文件位置3.1 常规存储路径3.2 自定义路径查找 四、查看 Laravel 日志内容4.1 宝塔面板文件管理器查看4.2 使用命令行查看 五、常见问题及解决方法5.1 权限不足无法查看5.…

Matlab Add Legend To Graph-图例添加到图

Add Legeng To Graph: Matlab的legend()函数-图例添加到图 将图例添加到图 ,图例是标记绘制在图上的数据序列的有用方法。 下列示例说明如何创建图例并进行一些常见修改,例如更改位置、设置字体大小以及添加标题。您还可以创建具有多列的图…

K8S+Prometheus+Consul+alertWebhook实现全链路服务自动发现与监控、告警配置实战

系列文章目录 k8s服务注册到consul prometheus监控标签 文章目录 系列文章目录前言一、环境二、Prometheus部署1.下载2.部署3.验证 三、kube-prometheus添加自定义监控项1.准备yaml文件2.创建新的secret并应用到prometheus3.将yaml文件应用到集群4.重启prometheus-k8s pod5.访…

基于YOLO11的车牌识别分析系统

【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】系统数据统计与可视化分析支持 【技术栈】 ①:系统环境:Windows/macOS/Linux ②:开发环境:Python 3.8 ③:技术栈&#x…

每天记录一道Java面试题---day39

GC如何判断对象可以被回收了 回答重点 引用计数法: - 每个对象由一个引用计数属性,新增一个引用时计数器加1,引用释放时计数减1,计数为0时可以回收。可达性分析法: - 从GC Roots开始向下搜索,搜索所走过的…

机器学习(5)——支持向量机

1. 支持向量机(SVM)是什么? 支持向量机(SVM,Support Vector Machine)是一种监督学习算法,广泛应用于分类和回归问题,尤其适用于高维数据的分类。其核心思想是寻找最优分类超平面&am…

从零到一:网站设计新手如何快速上手?

从零到一:网站设计新手如何快速上手? 在当今数字化时代,网站已成为企业、个人展示信息、提供服务的重要窗口。对于想要涉足网站设计领域的新手而言,如何快速上手并掌握必要的技能成为首要任务。本文将从基础知识、软件工具、设计…

蓝桥杯2024国B数星星

小明正在一棵树上数星星,这棵树有 n 个结点 1,2,⋯,n。他定义树上的一个子图 G 是一颗星星,当且仅当 G 同时满足: G 是一棵树。G 中存在某个结点,其度数为 ∣VG​∣−1。其中 ∣VG​∣ 表示这个子图含有的结点数。 两颗星星不相…

Django从零搭建卖家中心登陆与注册实战

在电商系统开发中,卖家中心是一个重要的组成部分,而用户注册与登陆则是卖家中心的第一步。本文将详细介绍如何使用Django框架从零开始搭建一个功能完善的卖家注册页面,包括前端界面设计和后端逻辑实现。 一、项目概述 我们将创建一个名为sel…

Opencv使用cuda实现图像处理

main.py import os import cv2 print(fOpenCV: {cv2.__version__} for python installed and working) image cv2.imread(bus.jpg) if image is None:print("无法加载图像1") print(cv2.cuda.getCudaEnabledDeviceCount()) cv2.cuda.setDevice(0) cv2.cuda.printCu…

如何编制实施项目管理章程

本文档概述了一个项目管理系统的实施计划,旨在通过统一的业务规范和技术架构,加强集团公司的业务管控,并规范业务管理。系统建设将遵循集团统一模板,确保各单位项目系统建设的标准化和一致性。 实施范围涵盖投资管理、立项管理、设计管理、进度管理等多个方面,支持项目全生…

B端可视化方案,如何助力企业精准决策,抢占市场先机

在当今竞争激烈的商业环境中,企业需要快速、准确地做出决策以抢占市场先机。B端可视化方案通过将复杂的企业数据转化为直观的图表和仪表盘,帮助企业管理层和业务人员快速理解数据背后的业务逻辑,从而做出精准决策。本文将深入探讨B端可视化方…

基于FPGA的一维时间序列idct变换verilog实现,包含testbench和matlab辅助验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 DCT离散余弦变换 4.2 IDCT逆离散余弦变换 4.3 树结构实现1024点IDCT的原理 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) matlab仿真结果 FPGA仿真结果 由于FP…