k8s基础架构介绍
k8s基础架构介绍
k8s 是对容器进行编排的一种工具。通过k8s可以实现对容器的编排、部署、更新等
学习k8s之前,先了解相关的一些使用和配置k8s的一些工具。
k8s的常用工具
在 kubernetes 中,主要有三个日常使用的工具,这些工具使用 kube 前缀命名,这三个工具如下:
kubeadm
用来初始化集群的指令,能够创建集群,并且添加新的节点。可用其它部署工具替代。
具体功能有:
-
初始化集群:在控制平面节点(Master 节点)上运行
kubeadm init,自动生成集群所需的证书、配置文件和核心组件(如 API Server、Controller Manager、Scheduler 等)。 -
加入节点:生成
kubeadm join命令,将工作节点(Worker 节点)添加到集群。 -
升级集群:支持 Kubernetes 版本的升级(如
kubeadm upgrade)。 -
重置集群:通过
kubeadm reset清理集群状态。
kubelet:
运行在每个节点(Master 和 Worker)上的代理,直接与容器运行时(如 Docker、containerd)交互,负责与API-server通信,管理节点上的 Pod 和容器生命周期。具体功能包括
-
启动/停止容器:根据 Kubernetes API Server 的指令,创建或终止 Pod 中的容器。
-
监控容器的运行状态,并向 API Server 报告节点和 Pod 的健康状态。
-
挂载存储卷:按需挂载 Pod 所需的存储卷(如 Persistent Volume)。
-
执行探针:运行
livenessProbe和readinessProbe检查容器状态。
kubectl
kubectl:用k8s中的命令行工具,与 kubernetes API-Server 通讯,是我们操作集群的客户端。具体功能有
-
创建、删除、更新、查看集群中的资源(如
kubectl create,kubectl delete) -
调试集群:查看 Pod 日志(
kubectl logs)、进入容器终端(kubectl exec)、检查资源状态(kubectl describe)。 -
通过 YAML 文件声明式管理资源(如
kubectl apply -f deployment.yaml)。
那么我们操纵集群中的节点是怎么办到的呢,其实就是用户通过 kubectl 向 API Server 发送指令,API Server 再将指令传递给 kubelet 执行。
讲完常用的工具,接下来,我们就可以一起看一下k8s的架构了。
k8s 架构
一个 kubernetes 集群是由一组被称为节点的机器或虚拟机组成,节点有 master、worker 两种类型。一个集群中至少有一个 master 节点,在没有 worker 节点的情况下, Pod 也可以部署到 master 节点上。如果集群中的节点数量非常多,则可考虑扩展 master 节点,使用多个 master 节点控制集群。
k8s中的master节点组成了控制平面,worker节点组成了数据平面。
控制平面
控制平面由master节点组成。一个maser节点中通常由5个组件,包括
-
kube-apiserver:集群的“入口”,提供 REST API,接收用户请求(如 kubectl 命令)。
-
etcd:分布式键值存储数据库,保存集群的所有配置和状态数据。
-
kube-scheduler:调度 Pod 到合适的节点上运行。
-
kube-controller-manager:运行各种控制器(如 Deployment、Node 控制器),确保集群处于期望状态。
-
cloud-controller-manager(可选):与云平台(如 AWS、GCP)交互,实现云原生功能。
数据平面
数据平面是 Kubernetes 集群中实际承载工作负载的核心层,由一组 工作节点(Worker Node) 构成,负责运行用户应用(Pod)并处理计算、存储、网络等实际任务。
每个worker节点中,都必须有:
kubelet:节点代理,管理本节点上 Pod 的生命周期(创建、终止、重启容器)、监控容器状态(如 CPU/内存使用率),并向控制平面报告节点和 Pod 的健康状态、挂载存储卷(Volume)、执行容器探针(Liveness/Readiness Probe)等。
kube-proxy:节点网络代理,维护 Kubernetes 服务的网络规则,确保 Pod 跨节点通信时,流量能正确转发到目标端点(Endpoint)、实现 Service 的负载均衡和网络流量路由(通过 iptables 或 IPVS 规则)。
k8s部署一个pod的完整流程
当用户通过 kubectl create 或 kubectl apply 提交资源声明(如 Deployment、Pod)时,集群会按以下步骤协调资源:
-
用户提交指令
kubectl 将 YAML 文件内容转换为 API 请求,发送至 API Server。
-
API Server 处理请求
API Server 对请求进行身份认证(Authentication)、权限校验(Authorization)并将资源定义(如 Pod 规格)持久化到 etcd 数据库。
-
调度决策(Scheduler)
调度器监听 API Server 的未调度 Pod 事件,执行以下逻辑:
过滤满足 Pod 资源需求的节点(如 CPU/内存/GPU)。
根据策略(亲和性、污点容忍、拓扑分布等)为 Pod 选择最优节点。 -
节点执行(kubelet)
目标节点的 kubelet 检测到新 Pod 调度到本节点后:
- 从镜像仓库拉取容器镜像(若本地不存在)。
- 调用容器运行时创建容器,挂载存储卷。
- 启动容器并执行探针检查。
- 持续监控容器状态,并上报至 API Server。
-
状态反馈与协调(Controller Manager)
控制器(如 Deployment Controller) 持续监听 Pod 状态,若Pod 异常终止,触发重启或重建(根据重启策略),若期望副本数与实际不符,触发扩缩容操作。
相关文章:
k8s基础架构介绍
k8s基础架构介绍 k8s 是对容器进行编排的一种工具。通过k8s可以实现对容器的编排、部署、更新等 学习k8s之前,先了解相关的一些使用和配置k8s的一些工具。 k8s的常用工具 在 kubernetes 中,主要有三个日常使用的工具,这些工具使用 kube 前…...
VSCode C/C++ 开发环境完整配置及常见问题(自用)
这里主要记录了一些与配置相关的内容。由于网上教程众多,部分解决方法并不能完全契合我遇到的问题,因此我选择以自己偏好的方式,对 VSCode 进行完整的配置,并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…...
QGraphicsDropShadowEffect 的效果不能同时被多个控件使用
问题的原因是 QGraphicsDropShadowEffect 不能同时被多个控件共享。每个 QGraphicsDropShadowEffect 实例只能绑定到一个控件上。如果你将同一个 taskbarShadow 同时设置给 ui->filemanager_memeryArea 和 ui->workspaceWidget,只有最后一个设置会生效。 解决…...
实用小工具——快速获取数据库时间写法
最近我遇到了一个比较棘手的问题:在工作中,各个项目所使用的数据库类型各不相同。这导致我习惯性地使用Oracle的SQL语句进行编写,但每次完成后都会遇到报错,最终才意识到项目的数据库并非Oracle。为了避免这种情况,我需…...
回文字串(信息学奥赛一本通-2044)
【题目描述】 输入一串字符,字符个数不超过100,且以“.”结束。 判断它们是否构成回文。 【输入】 一行字符串。 【输出】 是否为回文串。是输出“Yes”,否输出“No。” 【输入样例】 abccb 【输出样例】 No 【题解代码】 #include<bits/stdc.h> using names…...
用Maven创建只有POM文件的项目
使用 mvn 创建一个仅包含 pom.xml 文件的父项目,可以借助 maven-archetype-quickstart 原型,然后移除不必要的文件,或者直接通过命令生成最简的 pom.xml 文件。以下是具体操作步骤: 一、方法一:使用原型创建后清理 1…...
基于ssm的宠物医院信息管理系统(全套)
一、系统架构 前端:html | layui | vue | element-ui 后端:spring | springmvc | mybatis 环境:jdk1.8 | mysql | maven | tomcat | idea | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页1 02. web端-首页…...
从 YOLOv1 到 YOLOv2:目标检测的进化之路
引言 你有没有想过,当你用手机拍一张照片,里面的人、车、狗是怎么被自动识别出来的?这背后靠的就是目标检测技术。目标检测是计算机视觉中的一个重要领域,它不仅要回答“图片里有什么”,还要告诉你“这些东西在哪里”…...
RTDETR融合[CVPR205]ARConv中的自适应矩阵卷积
RT-DETR使用教程: RT-DETR使用教程 RT-DETR改进汇总贴:RT-DETR更新汇总贴 《Adaptive Rectangular Convolution for Remote Sensing Pansharpening》 一、 模块介绍 论文链接:https://arxiv.org/pdf/2503.00467 代码链接:https:/…...
【linux】使用 crontab 新增定时任务
目录 1. 打开 crontab 编辑器2. 添加定时任务3. 保存并退出4. 确认定时任务 1. 打开 crontab 编辑器 1.在终端中输入以下命令: crontab -e2. 添加定时任务 1.在打开的 crontab 文件中,添加你的定时任务。2.假设我们希望每天的 5 点 30 分执行一个脚本…...
项目-个人博客测试报告
目录 一、项目背景 二、项目功能 三、测试计划 (1)功能测试 (2)自动化测试 (3)性能测试 一、项目背景 1、个人博客系统是一个操作简单的基于Spring前后端分离的项目,同时使用MySQL数据库来进…...
软考计算机知识-流水线
计算机流水线类似工业生产过程的流水线,在同一时间,m个部件进行不同的操作,完成对不同对象的处理。 理解重叠:让不同的指令在时间上重叠地解释。在解释第k条指令的操作完成之前,就可以开始解释第k1条指令。 题1&#…...
Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!)
Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!) 文章目录 Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!)前…...
前端登录鉴权全解析:主流方案对比与实现指南
文章目录 一、常见登录鉴权方式概览1.1 主流方案对比1.2 技术特性对比 二、Session/Cookie方案2.1 实现原理2.2 代码实现2.3 优缺点分析 三、JWT方案3.1 实现原理3.2 代码实现3.3 优缺点分析 四、OAuth方案4.1 实现原理4.2 代码实现4.3 优缺点分析 五、SSO方案5.1 实现原理5.2 …...
【C++】每日一练(链表的中间结点)
本篇博客给大家带来的是用C语言来解答找中间结点! 🐟🐟文章专栏:每日一练 🚀🚀若有问题评论区下讨论,我会及时回答 ❤❤欢迎大家点赞、收藏、分享! 今日思想:不服输的…...
『大模型笔记』什么是MCP?将AI智能体与数据库和API集成
什么是MCP?将AI智能体与数据库和API集成 文章目录 MCP 由多个组件组成,最重要的有以下三个:MCP 体系结构MCP 的实际应用示例为什么要关注 MCP?官方MCP架构图总结如果你正在构建 AI 智能体,可能听说过 MCP(Model Context Protocol,模型上下文协议)。MCP 是一个开源标准…...
使用Redis如何实现分布式锁?(超卖)
分布式锁概念 在多线程环境下,为了保证数据的线程安全,锁保证同一时刻,只有一个可以访问和更新共享数据。在单机系统我们可以使用 synchronized 锁、Lock 锁保证线程安全。 synchronized 锁是 Java 提供的一种内置锁,在单个 JVM …...
【雅思播客07】I‘m in debt.负债
Hey guys! Welcome to my channel, I’m Mavis. Good morning! 欢迎来到我的频道,我是Mavis老师,早上好呀! Today we’re gonna learn a dialogue about recession, a period of temporary economic decline during which trade and indu…...
实现悬浮按钮拖动,兼容h5和微信小程序
h5用js写,微信小程序用 代码里面没有完全实现吸附边缘的功能,需要吸附边缘的话还得自己再完善下(h5的吸附边缘是可以的,小程序的还有点问题) 主要功能是:图片上写文字的悬浮按钮,文字使用的是…...
JavaScript 模块 vs C# 类:封装逻辑的两种哲学
引言 在现代软件开发中,模块化和面向对象设计是代码组织的核心课题。本文通过对比 JavaScript 模块(ES6 Module)与 C# 类(Class)的实现方式,探讨两种语言在封装逻辑时的不同哲学,并给出实际应用…...
Java面向对象编程进阶:深入理解static、单例模式与继承
在面向对象编程(OOP)中,掌握高级特性是提升代码质量和设计能力的关键。本文基于Java语言,深入探讨static关键字、单例设计模式、继承等核心概念,并结合实际应用场景与深度思考,帮助读者构建系统化的知识体系…...
【6】拓扑排序学习笔记
前言 有向无环图和拓扑排序直接关联到中后期的图论建模思想,是很重要的基础知识。这个如果不彻底弄懂,以后图论会很困难。 有向无环图 正如其名,一个边有向,没有环的图,也叫DAG。 DAG图实际运用:描述含…...
珠算之加减法中出现负数情况
在珠算加减法过程中出现负数情况的处理 如果数字 A 小于 B,要求计算 A-B,此时出现了小数减大数的情况,其结果应该是负数。 在平时,计算 A-B 时,如果发现 A 小于 B,则计算时只要计算 B-A,结果记…...
使用Python在Word中生成多种不同类型的图表
目录 工具与环境配置 在 Word 中创建图表的步骤 在Word中创建柱形图 在Word中创建条形图 在Word中创建折线图 在Word中创建饼图 在Word中创建散点图 在Word中创建气泡图 在 Word 文档中插入图表不仅能更直观地呈现数据,还能提升文档的可读性和专业性。常见的…...
pycharm + anaconda + yolo11(ultralytics) 的视频流实时检测,保存推流简单实现
目录 背景pycharm安装配置代码实现创建本地视频配置 和 推流配置视频帧的处理和检测框绘制主要流程遇到的一些问题 背景 首先这个基于完整安装配置了anaconda和yolo11的环境,如果需要配置开始的话,先看下专栏里另一个文章。 这次的目的是实现拉取视频流…...
Netty基础—5.Netty的使用简介
大纲 1.Netty服务端的启动流程 2.服务端IO事件的处理类 3.Netty客户端的启动流程 4.客户端IO事件的处理类 5.启动Netty服务端和客户端的方法说明 6.Netty服务端和客户端使用总结 7.什么是TCP粘包拆包 8.TCP粘包拆包的几种情况 9.TCP粘包拆包的原因 10.粘包问题的解决…...
C++初阶——类和对象(一)
C初阶——类和对象(一) 一、面向过程和面向对象 1.面向过程 面向过程的程序设计(Procedure-Oriented Programming),简称POP,是一种是以程序执行流程为核心的编程范式。它是先分析出解决问题所需要的的步…...
1141. 【贪心算法】排队打水
题目描述 有n(n<1000)个人在一个水龙头前排队接水,假如每个人接水的时间为Ti, 请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。输入 输入文件共两行,第一行为n; 第二行分别…...
RabbitMQ入门:从安装到高级消息模式
文章目录 一. RabbitMQ概述1.1 同步/异步1.1.1 同步调用1.1.2 异步调用 1.2 消息中间件1.2.1 概念1.2.2 作用1.2.3 常见的消息中间件1.2.4 其他中间件 1.3 RabbitMQ1.3.1 简介1.3.2 特点1.3.3 方式1.3.4 架构1.3.5 运行流程 二. 安装2.1 Docker 安装 RabbitMQ 三. 简单队列&…...
Linux应用:进程的回收
进程的诞生和消亡 程的诞生通常是通过系统调用(如fork、exec等)来创建新进程。当一个进程完成其任务或者出现错误时,它会进入消亡阶段。进程可以通过exit函数主动结束自身,也可能由于操作系统的调度策略(如资源耗尽、…...
