k8s基础架构介绍

news2025/3/15 12:01:33

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 异常终止,触发重启或重建(根据重启策略),若期望副本数与实际不符,触发扩缩容操作。

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

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

相关文章

VSCode C/C++ 开发环境完整配置及常见问题(自用)

这里主要记录了一些与配置相关的内容。由于网上教程众多,部分解决方法并不能完全契合我遇到的问题,因此我选择以自己偏好的方式,对 VSCode 进行完整的配置,并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…

实用小工具——快速获取数据库时间写法

最近我遇到了一个比较棘手的问题:在工作中,各个项目所使用的数据库类型各不相同。这导致我习惯性地使用Oracle的SQL语句进行编写,但每次完成后都会遇到报错,最终才意识到项目的数据库并非Oracle。为了避免这种情况,我需…

基于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:/…

项目-个人博客测试报告

目录 一、项目背景 二、项目功能 三、测试计划 (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语言来解答找中间结点! 🐟🐟文章专栏:每日一练 🚀🚀若有问题评论区下讨论,我会及时回答 ❤❤欢迎大家点赞、收藏、分享! 今日思想:不服输的…

使用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,是一种是以程序执行流程为核心的编程范式。它是先分析出解决问题所需要的的步…

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函数主动结束自身,也可能由于操作系统的调度策略(如资源耗尽、…

如何利用 AI 技术快速定位和修复生产环境问题

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

(链表)206. 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例 3: 输入&am…

农业建设项目管理系统评测:8款推荐工具优缺点分析

本文主要介绍了以下8款农业建设项目管理系统:1.PingCode; 2. Worktile ;3. 建米农业工程项目管理系统;4. 开创云数字农业管理平台; 5. Trimble Ag Software;6.Conservis; 7. Agworld &#xff1…

linux 命令 tail

tail 是 Linux 中用于查看文件末尾内容的命令&#xff0c;常用于日志监控和大文件快速浏览。以下是其核心用法及常见选项&#xff1a; 基本语法 tail [选项] 文件名 常用选项 显示末尾行数 -n <行数> 或 --lines<行数> 指定显示文件的最后若干行&#xff08;…