Kubernetes(简称 K8s)是一款开源的容器编排平台,核心目标是实现容器化应用的自动化部署、扩展、故障恢复和运维管理。其设计遵循 “主从架构”(Control Plane + Node),组件分工明确,通过 “声明式 API” 和 “控制器模式” 实现集群状态的自动调谐。

一、Kubernetes 整体架构

    K8s 集群由两部分组成:控制平面(Control Plane) 和工作节点(Node)。控制平面是集群的 “大脑”,负责决策;工作节点是 “手脚”,负责运行容器化应用。

角色核心作用部署建议
控制平面(CP)管理集群状态(如 Pod 调度、副本数量、故障恢复)生产环境需多节点高可用部署
工作节点(Node)运行容器化应用,执行控制平面下发的任务数量根据业务负载扩展

二、核心组件

    K8s 的功能依赖于多个组件的协同工作,组件分为 “控制平面组件” 和 “工作节点组件” 两类,部分组件还需依赖外部插件(如容器运行时、网络插件)。

1. 控制平面组件(Control Plane Components)

    控制平面组件通常部署在专用的控制节点上,负责集群的 “决策与管理”。

组件名称核心功能关键特性
kube-apiserver集群的 “统一入口”,所有操作(如创建 Pod、查询状态)都通过它执行- 唯一与 etcd 交互的组件(读写集群状态)
- 提供 RESTful API,支持认证 / 授权
- 是组件间通信的 “中枢”(其他组件不直接交互,均通过 apiserver)
etcd分布式键值(Key-Value)数据库,存储集群的所有状态信息(如 Pod 配置、Service 规则)- 强一致性(基于 Raft 协议),确保集群状态可靠
- 生产环境需 3/5 节点集群部署(高可用)
- 仅 kube-apiserver 可直接读写 etcd
kube-scheduler负责将 “未调度的 Pod” 分配到合适的工作节点(Node)- 调度依据:资源需求(CPU / 内存)、亲和性 / 反亲和性、污点 / 容忍、节点负载等
- 仅负责 “调度决策”,不执行 Pod 启动(由 kubelet 执行)
kube-controller-manager运行各类 “控制器”,监控集群状态,确保 “实际状态” 向 “期望状态” 对齐(调谐)内置核心控制器:
- 副本控制器(ReplicaSet):维持 Pod 副本数
- 节点控制器(NodeController):监控节点健康
- 部署控制器(Deployment):管理 Pod 升级
- 服务控制器(ServiceController):关联 Pod 与 Service
cloud-controller-manager(可选)对接云服务商 API(如 AWS、阿里云),实现云资源联动(如负载均衡、存储)仅在 “云环境” 中部署,物理机 / 私有集群无需此组件

2. 工作节点组件(Node Components)

每个工作节点(Node)都必须部署以下组件,负责 “执行控制平面的任务” 和 “管理本地容器”。

组件名称核心功能依赖关系
kubelet监控本节点的 Pod,确保 Pod 内的容器正常运行(启动、重启、停止)- 从 apiserver 获取 Pod 的 “期望状态”(如容器镜像、资源限制)
- 调用 “容器运行时”(如 containerd)执行容器操作
- 定期向 apiserver 上报本节点和 Pod 的状态
kube-proxy实现 K8s 的 “服务(Service)” 网络功能,维护节点的网络规则- 为 Service 分配 “虚拟 IP(ClusterIP)”,并将流量转发到后端 Pod
- 支持两种模式:
1. iptables 模式(默认,轻量):通过 iptables 规则实现转发
2. ipvs 模式(高性能):适合大规模集群
- 确保 Pod 间、Pod 与外部的网络连通性
容器运行时(CRI)实际运行容器的软件,需符合 K8s 的 “容器运行时接口(CRI)”常用选项:
- containerd(目前主流,Docker 已弃用直接支持,需通过 containerd)
- CRI-O(专为 K8s 设计,轻量)
- Docker(需额外安装 cri-dockerd 适配器,逐步淘汰)

3. 必备插件(Add-ons)

部分核心功能需通过插件实现,控制平面和节点均需依赖:

  • 网络插件(CNI):实现 Pod 间跨节点通信(K8s 本身不提供网络功能),常用插件如 Calico、Flannel、Weave Net。

  • DNS 插件(CoreDNS):为集群内的 Pod 和 Service 提供 DNS 解析(如通过 Service 名称访问 Pod),是集群默认组件。

  • 存储插件(CSI):对接持久化存储(如云硬盘、NAS),实现 Pod 存储持久化(容器存储默认临时,删除 Pod 后数据丢失),常用插件如 AWS EBS CSI、阿里云 CSI。

三、Kubernetes 核心工作原理

K8s 的核心逻辑是 “声明式调谐”:用户通过 API 声明 “期望的集群状态”(如 “部署 3 个 Nginx 副本”),K8s 自动将 “实际状态” 调整为 “期望状态”,无需用户手动操作。

1. 核心模式:声明式 API + 控制器模式

这是 K8s 与传统 “命令式工具”(如 Docker Compose)的本质区别:

  • 声明式 API:用户只需定义 “最终要什么”(如kubectl apply -f nginx-deploy.yaml),无需关心 “如何实现”;K8s 会记录这个 “期望状态” 到 etcd。

  • 控制器模式:每个控制器(如 Deployment 控制器)通过 apiserver “监听” 集群状态,对比 “期望状态” 和 “实际状态”:

    • 若实际状态 ≠ 期望状态(如 Pod 副本数不足 3 个),控制器会触发 “调谐操作”(如创建新 Pod);

    • 若实际状态 = 期望状态,控制器则 “静默监控”,不做操作。

2. 典型工作流程:部署一个 Nginx 应用

以 “通过 Deployment 部署 3 个 Nginx 副本” 为例,理解 K8s 组件的协同逻辑:

  1. 用户提交请求:通过kubectl apply -f nginx-deploy.yaml向 apiserver 发送 “创建 Deployment” 的请求,指定 “3 个副本”。

  2. apiserver 处理:验证请求合法性后,将 Deployment 的 “期望状态”(3 副本)存入 etcd,并返回 “创建成功” 给用户。

  3. 控制器调谐:Deployment 控制器通过 apiserver 监听 Deployment 资源,发现 “期望 3 副本” 但 “实际 0 副本”,于是自动创建一个 ReplicaSet(负责维护副本数),并将 ReplicaSet 的状态存入 etcd。

  4. 调度 Pod:ReplicaSet 控制器监听 ReplicaSet 资源,发现 “期望 3 副本”,向 apiserver 请求创建 3 个 Pod。kube-scheduler 监听 “未调度的 Pod”,根据节点资源、亲和性等规则,将 3 个 Pod 分别调度到 3 个不同的 Node 上,并将 Pod 的 “调度结果”(绑定到某个 Node)存入 etcd。

  5. 启动容器:每个 Node 上的 kubelet 通过 apiserver 监听 “分配给本节点的 Pod”,调用 containerd 拉取 Nginx 镜像,启动容器,并定期向 apiserver 上报 Pod 状态(如 “Running”)。

  6. 网络访问:用户创建 Service(kubectl expose deployment nginx-deploy --port=80),kube-proxy 在每个 Node 上维护 iptables 规则,为 Service 分配 ClusterIP(如 10.96.0.10),并将访问 ClusterIP 的流量转发到 3 个 Nginx Pod,实现负载均衡。

  7. 故障自愈:若其中一个 Nginx Pod 意外崩溃(状态变为 “CrashLoopBackOff”),ReplicaSet 控制器通过 apiserver 发现 “实际 2 副本 < 期望 3 副本”,立即请求创建 1 个新 Pod,kube-scheduler 重新调度,kubelet 启动新容器,最终恢复 3 副本状态。

3. 核心概念:Pod 与 Service 的关系

  • Pod:K8s 的最小部署单元,一个 Pod 可包含 1 个或多个容器(如 “应用容器 + 日志收集容器”),容器间共享网络和存储。
    ❗ 注意:Pod 是 “临时的”,会因节点故障、调度更新等原因销毁重建,IP 地址会变化,无法直接作为固定访问入口。
  • Service:为 “一组相同功能的 Pod” 提供固定访问入口(如 ClusterIP、NodePort),通过 “标签选择器”(Label Selector)关联 Pod。即使 Pod 销毁重建,Service 的 IP 和端口不变,确保外部访问不中断。

四、关键辅助概念

理解以下概念能更好地掌握 K8s 的使用场景:

  1. Namespace:实现 “资源隔离”,将集群划分为多个虚拟子集群(如 “开发环境”“测试环境”“生产环境”),避免不同环境的资源冲突。

  2. ConfigMap/Secret:管理应用配置:

    • ConfigMap:存储明文配置(如数据库地址、端口);

    • Secret:存储敏感信息(如密码、Token),会进行 Base64 编码(非加密,需配合外部加密工具如 Vault 实现安全存储)。

  3. Volume:解决 “容器存储临时化” 问题,将外部存储(如本地磁盘、云硬盘、NAS)挂载到 Pod 内,实现数据持久化(Pod 删除后数据不丢失)。

五、总结

K8s 的架构和原理围绕 “自动化、高可用、可扩展” 设计:

  • 架构层面:控制平面决策,工作节点执行,组件间通过 apiserver 通信,etcd 保障状态可靠;

  • 原理层面:通过 “声明式 API + 控制器模式” 实现自愈,无需人工干预;

  • 核心价值:屏蔽容器底层的复杂性,让用户专注于应用本身,而非基础设施运维,支撑大规模容器集群的稳定运行。

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

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

相关文章

ensp配置学习笔记 比赛版 vlan 静态路由 ospf bgp dhcp

学习配置VLAN 虚拟局域网&#xff0c;目的让两台在同一网段的设备&#xff0c;在交换机中访问。基础指令&#xff1a;sys 进入系统 sysname R1 修改交换机名字为R1 display cur 查看数据、端口等交换机信息 &#xff08;在端口中&#xff0c;可以直接display this 可以直接看…

仓颉编程语言青少年基础教程:enum(枚举)类型和Option类型

仓颉编程语言青少年基础教程&#xff1a;enum&#xff08;枚举&#xff09;类型和Option类型enum 和 Option 各自解决一类“语义级”问题&#xff1a;enum 让“取值只在有限集合内”的约束从注释变成编译器强制&#xff1b;Option 让“值可能不存在”的语义显式化。enum类型enu…

javaEE-Spring IOCDI

目录 1、什么是Spring&#xff1a; 2.什么是IoC: 3. 什么是控制反转呢? 4.IoC容器具备以下优点: 5.DI是什么&#xff1a; 依赖注⼊方法&#xff1a; 三种注入方法的优缺点&#xff1a; Autowired注解注入存在的问题&#xff1a; Autowired和Resource的区别&#xff…

TensorFlow Lite 全面解析:端侧部署方案与PyTorch Mobile深度对比

1 TensorFlow Lite 基础介绍 TensorFlow Lite (TFLite) 是 Google 为移动设备&#xff08;Android, iOS&#xff09;、微控制器&#xff08;Microcontrollers&#xff09;和其他嵌入式设备&#xff08;如 Raspberry Pi&#xff09;开发的轻量级深度学习推理框架。它的核心目标是…

mapbox进阶,使用jsts实现平角缓冲区

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言 1.1 ☘️mapboxgl.Map 地图对象 1.2 ☘️mapboxgl.Map style属性 1.3 ☘️jsts myBufferOp 缓冲区生成对对象 …

linux装好显卡后如何检查

背景&#xff1a;客户通知装好了显卡&#xff0c;我们去机器上查看一下一. 使用到的命令 watch -n 1 nvidia-smi 可实时查看gpu的使用率nvidia-smi 之查看一次 二、查看内存和显存 内存使用命令 free -h,显存使用 nvidia-smi 这只是查看的navidia, 其他品牌的会不一样

人工智能深度学习——卷积神经网络(CNN)

一、图像卷积运算 对图像矩阵与滤波器矩阵进行对应相乘再求和运算&#xff0c;转化得到新的矩阵。 作用&#xff1a;快速定位图像中某些边缘特征 英文&#xff1a;convolution&#xff08;CNN&#xff09;池化层实现维度缩减 池化&#xff1a;按照一个固定规则对图像矩阵进行处…

SaaS 建站从 0 到 1 教程:Vue 动态域名 + 后端子域名管理 + Nginx 配置

SaaS 建站从 0 到 1 教程&#xff1a;Vue 动态域名 后端子域名管理 Nginx 配置 一、什么是 SaaS 建站&#xff1f; SaaS&#xff08;Software as a Service&#xff09;建站&#xff0c;就是通过一套统一的系统&#xff0c;支持用户在线注册、绑定域名、快速生成专属网站。…

关于神经网络中回归的概念

神经网络中的回归详解 引言 神经网络&#xff08;NeuralNetworks&#xff09;是一种强大的机器学习模型&#xff0c;可用于分类和回归任务。本文聚焦于神经网络中的回归&#xff08;Regression&#xff09;&#xff0c;即预测连续输出值&#xff08;如房价、温度&#xff09;。…

JAVASCRIPT 前端数据库-V9--仙盟数据库架构-—仙盟创梦IDE

老版本 在v1 版本中我们讲述了 基础版的应用JAVASCRIPT 前端数据库-V1--仙盟数据库架构-—-—仙盟创梦IDE-CSDN博客接下载我们做一个更复杂的的其他场景由于&#xff0c;V1查询字段必须 id接下来我们修改了了代码JAVASCRIPT 前端数据库-V2--仙盟数据库架构-—-—仙盟创梦IDE-CS…

k8s核心资料基本操作

NamespaceNamespace是kubernetes系统中的一种非常重要资源&#xff0c;它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。默认情况下&#xff0c;kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中&#xff0c;可能不想让两个Pod之间进行互相的访问…

PostgreSQL——分区表

分区表一、分区表的意义二、传统分区表2.1、继承表2.2、创建分区表2.3、使用分区表2.4、查询父表还是子表2.5、constraint_exclusion参数2.6、添加分区2.7、删除分区2.8、分区表相关查询2.9、传统分区表注意事项三、内置分区表3.1、创建分区表3.2、使用分区表3.3、内置分区表原…

Linux任务调度全攻略

Linux下的任务调度分为两类&#xff0c;系统任务调度和用户任务调度。系统任务调度&#xff1a;系统周期性所要执行的工作&#xff0c;比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件&#xff0c;这个就是系统任务调度的配置文件。/etc/crontab文件包括下面…

回溯算法通关秘籍:像打怪一样刷题

&#x1f680; 回溯算法通关秘籍&#xff1a;像打怪一样刷题&#xff01; 各位同学&#xff0c;今天咱们聊聊 回溯算法&#xff08;Backtracking&#xff09;。它听起来玄乎&#xff0c;但其实就是 “暴力搜索 剪枝” 的优雅版。 打个比方&#xff1a;回溯就是在迷宫里探险&am…

嵌入式Linux常用命令

&#x1f4df; 核心文件与目录操作pwd-> 功能: 打印当前工作目录的绝对路径。-> 示例: pwd -> 输出 /home/user/projectls [选项] [目录]-> 功能: 列出目录内容。-> 常用选项:-l: 长格式显示&#xff08;详细信息&#xff09;-a: 显示所有文件&#xff08;包括隐…

深入理解 Linux 内核进程管理

在 Linux 系统中&#xff0c;进程是资源分配和调度的基本单位&#xff0c;内核对进程的高效管理直接决定了系统的性能与稳定性。本文将从进程描述符的结构入手&#xff0c;逐步剖析进程的创建、线程实现与进程终结的完整生命周期&#xff0c;带您深入理解 Linux 内核的进程管理…

ACP(三):让大模型能够回答私域知识问题

让大模型能够回答私域知识问题 未经过特定训练答疑机器人&#xff0c;是无法准确回答“我们公司项目管理用什么工具”这类内部问题。根本原因在于&#xff0c;大模型的知识来源于其训练数据&#xff0c;这些数据通常是公开的互联网信息&#xff0c;不包含任何特定公司的内部文档…

使用Xterminal连接Linux服务器

使用Xterminal连接Linux服务器&#xff08;VMware虚拟机&#xff09;的步骤如下&#xff0c;前提是虚拟机已获取IP&#xff08;如 192.168.31.105&#xff09;且网络互通&#xff1a; 一、准备工作&#xff08;服务器端确认&#xff09;确保SSH服务已安装并启动 Linux服务器需要…

ChatBot、Copilot、Agent啥区别

以下内容为AI生成ChatBot&#xff08;聊天机器人&#xff09;、Copilot&#xff08;副驾驶&#xff09;和Agent&#xff08;智能体/代理&#xff09;是AI应用中常见的三种形态&#xff0c;它们在人机交互、自动化程度和任务处理能力上有着显著的区别。特征维度ChatBot (聊天机器…

2025 年大语言模型架构演进:DeepSeek V3、OLMo 2、Gemma 3 与 Mistral 3.1 核心技术剖析

编者按&#xff1a; 在 Transformer 架构诞生八年之际&#xff0c;我们是否真的见证了根本性的突破&#xff0c;还是只是在原有设计上不断打磨&#xff1f;今天我们为大家带来的这篇文章&#xff0c;作者的核心观点是&#xff1a;尽管大语言模型在技术细节上持续优化&#xff0…