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

k8s基础架构介绍

k8s基础架构介绍

k8s 是对容器进行编排的一种工具。通过k8s可以实现对容器的编排、部署、更新等

学习k8s之前,先了解相关的一些使用和配置k8s的一些工具。

k8s的常用工具

在 kubernetes 中,主要有三个日常使用的工具,这些工具使用 kube 前缀命名,这三个工具如下:

kubeadm

用来初始化集群的指令,能够创建集群,并且添加新的节点。可用其它部署工具替代。

具体功能有:

  1. 初始化集群:在控制平面节点(Master 节点)上运行 kubeadm init,自动生成集群所需的证书、配置文件和核心组件(如 API Server、Controller Manager、Scheduler 等)。

  2. ​加入节点:生成 kubeadm join 命令,将工作节点(Worker 节点)添加到集群。

  3. 升级集群:支持 Kubernetes 版本的升级(如 kubeadm upgrade)。

  4. 重置集群:通过 kubeadm reset 清理集群状态。

kubelet:

​运行在每个节点(Master 和 Worker)上的代理,直接与容器运行时(如 Docker、containerd)交互,负责与API-server通信,管理节点上的 Pod 和容器生命周期。具体功能包括

  1. ​启动/停止容器:根据 Kubernetes API Server 的指令,创建或终止 Pod 中的容器。

  2. 监控容器的运行状态,并向 API Server 报告节点和 Pod 的健康状态。

  3. 挂载存储卷:按需挂载 Pod 所需的存储卷(如 Persistent Volume)。

  4. ​执行探针:运行 livenessProbereadinessProbe 检查容器状态。

kubectl

kubectl:用k8s中的命令行工具,与 kubernetes API-Server 通讯,是我们操作集群的客户端。具体功能有

  1. 创建、删除、更新、查看集群中的资源(如 kubectl create, kubectl delete

  2. ​调试集群:查看 Pod 日志(kubectl logs)、进入容器终端(kubectl exec)、检查资源状态(kubectl describe)。

  3. 通过 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个组件,包括

  1. ​kube-apiserver:集群的“入口”,提供 REST API,接收用户请求(如 kubectl 命令)。

  2. etcd:分布式键值存储数据库,保存集群的所有配置和状态数据。

  3. kube-scheduler:调度 Pod 到合适的节点上运行。

  4. kube-controller-manager:运行各种控制器(如 Deployment、Node 控制器),确保集群处于期望状态。

  5. ​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 createkubectl apply 提交资源声明(如 Deployment、Pod)时,集群会按以下步骤协调资源:

  1. 用户提交指令

    kubectl 将 YAML 文件内容转换为 API 请求,发送至 ​API Server。

  2. ​API Server 处理请求

    API Server 对请求进行身份认证(Authentication)、权限校验(Authorization)并将资源定义(如 Pod 规格)持久化到 ​etcd 数据库。

  3. ​调度决策(Scheduler)

    调度器监听 API Server 的未调度 Pod 事件,执行以下逻辑:
    过滤满足 Pod 资源需求的节点(如 CPU/内存/GPU)。
    根据策略(亲和性、污点容忍、拓扑分布等)为 Pod 选择最优节点。

  4. 节点执行(kubelet)

    目标节点的 ​kubelet 检测到新 Pod 调度到本节点后:

    • 从镜像仓库拉取容器镜像(若本地不存在)。
    • 调用容器运行时创建容器,挂载存储卷。
    • 启动容器并执行探针检查。
    • 持续监控容器状态,并上报至 API Server。
  5. ​状态反馈与协调(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”&#xff0c;否输出“No。” 【输入样例】 abccb 【输出样例】 No 【题解代码】 #include<bits/stdc.h> using names…...

用Maven创建只有POM文件的项目

使用 mvn 创建一个仅包含 pom.xml 文件的父项目&#xff0c;可以借助 maven-archetype-quickstart 原型&#xff0c;然后移除不必要的文件&#xff0c;或者直接通过命令生成最简的 pom.xml 文件。以下是具体操作步骤&#xff1a; 一、方法一&#xff1a;使用原型创建后清理 1…...

基于ssm的宠物医院信息管理系统(全套)

一、系统架构 前端&#xff1a;html | layui | vue | element-ui 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.8 | mysql | maven | tomcat | idea | nodejs 二、代码及数据库 三、功能介绍 01. web端-首页1 02. web端-首页…...

从 YOLOv1 到 YOLOv2:目标检测的进化之路

引言 你有没有想过&#xff0c;当你用手机拍一张照片&#xff0c;里面的人、车、狗是怎么被自动识别出来的&#xff1f;这背后靠的就是目标检测技术。目标检测是计算机视觉中的一个重要领域&#xff0c;它不仅要回答“图片里有什么”&#xff0c;还要告诉你“这些东西在哪里”…...

RTDETR融合[CVPR205]ARConv中的自适应矩阵卷积

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《Adaptive Rectangular Convolution for Remote Sensing Pansharpening》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/pdf/2503.00467 代码链接&#xff1a;https:/…...

【linux】使用 crontab 新增定时任务

目录 1. 打开 crontab 编辑器2. 添加定时任务3. 保存并退出4. 确认定时任务 1. 打开 crontab 编辑器 1.在终端中输入以下命令&#xff1a; crontab -e2. 添加定时任务 1.在打开的 crontab 文件中&#xff0c;添加你的定时任务。2.假设我们希望每天的 5 点 30 分执行一个脚本…...

项目-个人博客测试报告

目录 一、项目背景 二、项目功能 三、测试计划 &#xff08;1&#xff09;功能测试 &#xff08;2&#xff09;自动化测试 &#xff08;3&#xff09;性能测试 一、项目背景 1、个人博客系统是一个操作简单的基于Spring前后端分离的项目&#xff0c;同时使用MySQL数据库来进…...

软考计算机知识-流水线

计算机流水线类似工业生产过程的流水线&#xff0c;在同一时间&#xff0c;m个部件进行不同的操作&#xff0c;完成对不同对象的处理。 理解重叠&#xff1a;让不同的指令在时间上重叠地解释。在解释第k条指令的操作完成之前&#xff0c;就可以开始解释第k1条指令。 题1&#…...

Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!)

Linux驱动开发实战&#xff08;五&#xff09;&#xff1a;Qt应用程序点RGB灯&#xff08;保姆级快速入门&#xff01;&#xff09; 文章目录 Linux驱动开发实战&#xff08;五&#xff09;&#xff1a;Qt应用程序点RGB灯&#xff08;保姆级快速入门&#xff01;&#xff09;前…...

前端登录鉴权全解析:主流方案对比与实现指南

文章目录 一、常见登录鉴权方式概览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语言来解答找中间结点&#xff01; &#x1f41f;&#x1f41f;文章专栏&#xff1a;每日一练 &#x1f680;&#x1f680;若有问题评论区下讨论&#xff0c;我会及时回答 ❤❤欢迎大家点赞、收藏、分享&#xff01; 今日思想&#xff1a;不服输的…...

『大模型笔记』什么是MCP?将AI智能体与数据库和API集成

什么是MCP?将AI智能体与数据库和API集成 文章目录 MCP 由多个组件组成,最重要的有以下三个:MCP 体系结构MCP 的实际应用示例为什么要关注 MCP?官方MCP架构图总结如果你正在构建 AI 智能体,可能听说过 MCP(Model Context Protocol,模型上下文协议)。MCP 是一个开源标准…...

使用Redis如何实现分布式锁?(超卖)

分布式锁概念 在多线程环境下&#xff0c;为了保证数据的线程安全&#xff0c;锁保证同一时刻&#xff0c;只有一个可以访问和更新共享数据。在单机系统我们可以使用 synchronized 锁、Lock 锁保证线程安全。 synchronized 锁是 Java 提供的一种内置锁&#xff0c;在单个 JVM …...

【雅思播客07】I‘m in debt.负债

Hey guys! Welcome to my channel, I’m Mavis. Good morning! 欢迎来到我的频道&#xff0c;我是Mavis老师&#xff0c;早上好呀&#xff01; Today we’re gonna learn a dialogue about recession, a period of temporary economic decline during which trade and indu…...

实现悬浮按钮拖动,兼容h5和微信小程序

h5用js写&#xff0c;微信小程序用 代码里面没有完全实现吸附边缘的功能&#xff0c;需要吸附边缘的话还得自己再完善下&#xff08;h5的吸附边缘是可以的&#xff0c;小程序的还有点问题&#xff09; 主要功能是&#xff1a;图片上写文字的悬浮按钮&#xff0c;文字使用的是…...

JavaScript 模块 vs C# 类:封装逻辑的两种哲学

引言 在现代软件开发中&#xff0c;模块化和面向对象设计是代码组织的核心课题。本文通过对比 JavaScript 模块&#xff08;ES6 Module&#xff09;与 C# 类&#xff08;Class&#xff09;的实现方式&#xff0c;探讨两种语言在封装逻辑时的不同哲学&#xff0c;并给出实际应用…...

Java面向对象编程进阶:深入理解static、单例模式与继承

在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;掌握高级特性是提升代码质量和设计能力的关键。本文基于Java语言&#xff0c;深入探讨static关键字、单例设计模式、继承等核心概念&#xff0c;并结合实际应用场景与深度思考&#xff0c;帮助读者构建系统化的知识体系…...

【6】拓扑排序学习笔记

前言 有向无环图和拓扑排序直接关联到中后期的图论建模思想&#xff0c;是很重要的基础知识。这个如果不彻底弄懂&#xff0c;以后图论会很困难。 有向无环图 正如其名&#xff0c;一个边有向&#xff0c;没有环的图&#xff0c;也叫DAG。 DAG图实际运用&#xff1a;描述含…...

珠算之加减法中出现负数情况

在珠算加减法过程中出现负数情况的处理 如果数字 A 小于 B&#xff0c;要求计算 A-B&#xff0c;此时出现了小数减大数的情况&#xff0c;其结果应该是负数。 在平时&#xff0c;计算 A-B 时&#xff0c;如果发现 A 小于 B&#xff0c;则计算时只要计算 B-A&#xff0c;结果记…...

使用Python在Word中生成多种不同类型的图表

目录 工具与环境配置 在 Word 中创建图表的步骤 在Word中创建柱形图 在Word中创建条形图 在Word中创建折线图 在Word中创建饼图 在Word中创建散点图 在Word中创建气泡图 在 Word 文档中插入图表不仅能更直观地呈现数据&#xff0c;还能提升文档的可读性和专业性。常见的…...

pycharm + anaconda + yolo11(ultralytics) 的视频流实时检测,保存推流简单实现

目录 背景pycharm安装配置代码实现创建本地视频配置 和 推流配置视频帧的处理和检测框绘制主要流程遇到的一些问题 背景 首先这个基于完整安装配置了anaconda和yolo11的环境&#xff0c;如果需要配置开始的话&#xff0c;先看下专栏里另一个文章。 这次的目的是实现拉取视频流…...

Netty基础—5.Netty的使用简介

大纲 1.Netty服务端的启动流程 2.服务端IO事件的处理类 3.Netty客户端的启动流程 4.客户端IO事件的处理类 5.启动Netty服务端和客户端的方法说明 6.Netty服务端和客户端使用总结 7.什么是TCP粘包拆包 8.TCP粘包拆包的几种情况 9.TCP粘包拆包的原因 10.粘包问题的解决…...

C++初阶——类和对象(一)

C初阶——类和对象&#xff08;一&#xff09; 一、面向过程和面向对象 1.面向过程 面向过程的程序设计&#xff08;Procedure-Oriented Programming&#xff09;&#xff0c;简称POP&#xff0c;是一种是以程序执行流程为核心的编程范式。它是先分析出解决问题所需要的的步…...

1141. 【贪心算法】排队打水

题目描述 有n&#xff08;n<1000&#xff09;个人在一个水龙头前排队接水&#xff0c;假如每个人接水的时间为Ti&#xff0c; 请编程找出这n个人排队的一种顺序&#xff0c;使得n个人的平均等待时间最小。输入 输入文件共两行&#xff0c;第一行为n&#xff1b; 第二行分别…...

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应用:进程的回收

进程的诞生和消亡 程的诞生通常是通过系统调用&#xff08;如fork、exec等&#xff09;来创建新进程。当一个进程完成其任务或者出现错误时&#xff0c;它会进入消亡阶段。进程可以通过exit函数主动结束自身&#xff0c;也可能由于操作系统的调度策略&#xff08;如资源耗尽、…...