Kubernetes 完全指南:从集群架构到应用模型

Kubernetes 完全指南:从集群架构到应用模型

Kubernetes 完全指南:从集群架构到应用模型

文章目录

Kubernetes(常简称为 K8s)是一个开源的容器编排平台,用于自动化部署、扩缩和管理容器化应用。它的核心理念是 声明式配置自动化运维:用户通过描述期望的最终状态(例如“运行 3 个 nginx 副本”),系统则持续协调实际状态与之匹配。这种基于控制器和 API 的设计,使得 Kubernetes 成为云原生时代的通用应用底座。

本文将全面介绍 Kubernetes 的两大支柱:集群架构组件(支撑系统的物理与逻辑部件)与应用模型(用于定义和管理应用的 API 对象)。通过理解它们如何协同工作,你将掌握 Kubernetes 的核心原理与实践方法。


一、Kubernetes 集群架构

一个 Kubernetes 集群由**控制平面(Control Plane)工作节点(Worker Nodes)**构成。控制平面负责全局决策与状态管理,工作节点负责运行实际的容器化应用。

架构速览:你可以想象一个典型的集群包含至少一个控制平面节点(通常为3个以实现高可用)和多个工作节点。控制平面节点上运行着API Server、etcd、Scheduler、Controller Manager等组件;工作节点上运行着kubelet、kube-proxy和容器运行时。所有组件通过API Server进行通信,形成一个有机整体。

1.1 控制平面组件

控制平面组件对集群做出全局决策,并存储所有状态数据。它们通常部署在专用节点上以保证稳定性。

API Server(kube-apiserver)

API Server 是整个集群的“交通枢纽”,它暴露了 Kubernetes API,供用户、命令行工具(如 kubectl)以及内部组件通信。所有对集群的操作请求都经过 API Server,它会执行认证(Authentication)、**授权(Authorization)准入控制(Admission Control)**三层安全校验,然后将资源状态持久化到后端存储中。API Server 是唯一直接与 etcd 交互的组件。

etcd

etcd 是一个高可用、强一致性的分布式键值存储,作为 Kubernetes 的后端数据库。它保存了所有集群数据,包括 Pod、Service、Deployment 等资源的定义和当前状态。etcd 通常以奇数个节点集群部署,并基于 Raft 共识算法确保数据一致性(例如,3节点集群可容忍1节点故障)。etcd 被视为集群的“真相来源”,定期备份 etcd 数据是灾难恢复的关键。

Scheduler(kube-scheduler)

Scheduler 负责监视新创建的、尚未分配到节点的 Pod,并根据一系列策略(如资源需求、节点亲和性、污点容忍等)选择一个最合适的节点运行该 Pod。调度决策会考虑单个 Pod 和集群整体的资源状况、硬件/软件约束以及高可用要求。常见的调度策略包括:nodeSelector(节点标签选择)、节点亲和性/反亲和性、Pod 亲和性/反亲和性,以及自定义调度器扩展。

Controller Manager(kube-controller-manager)

Controller Manager 运行着多个控制器进程,每个控制器通过 API Server 监视集群状态,并努力将当前状态调整为期望状态。这些控制器并发运行,各自负责不同的资源类型。常见的内置控制器包括:

  • 节点控制器:监控节点健康,处理节点宕机时的 Pod 驱逐。
  • 副本控制器:确保指定数量的 Pod 副本正在运行(Deployment 等高级资源依赖此逻辑)。
  • 端点控制器:维护 Service 与 Pod 之间的端点(Endpoints)对象。
  • Service 账户与令牌控制器:管理命名空间中的默认账户和 API 访问令牌。
  • 其他控制器(如 Namespace、Job、CronJob 等)。
    所有控制器被编译成单个二进制文件并作为单个进程运行,以降低复杂性。
Cloud Controller Manager(cloud-controller-manager)

这是一个可选组件,用于将 Kubernetes 与特定云服务商(如 AWS、GCP、Azure)的 API 集成。它运行云平台相关的控制器,例如:

  • 节点控制器:检查云平台以确定节点是否已被删除。
  • 路由控制器:在云基础设施中设置网络路由。
  • 服务控制器:创建、更新和删除云负载均衡器(当 Service 类型为 LoadBalancer 时)。
    引入 Cloud Controller Manager 使得核心 Kubernetes 代码与云平台逻辑解耦,便于云原生扩展。在自建机房(on-premise)环境中,通常不需要此组件。

1.2 工作节点组件

工作节点是运行容器化应用的机器(物理机或虚拟机),每个节点上都运行着必要的代理服务。

kubelet

kubelet 是运行在每个节点上的主要代理,它负责确保节点上的容器按照 PodSpec(Pod 的描述)运行。kubelet 会监视 API Server 上分配给本节点的 Pod,并通过容器运行时接口(CRI)与底层的容器运行时交互,以启动、停止容器,并定期上报节点和 Pod 的状态给控制平面。它还负责执行存活探针(livenessProbe)和就绪探针(readinessProbe),以实现应用健康检查和流量切换。

container runtime(容器运行时)

容器运行时是实际运行容器的软件,例如 Docker、containerd、CRI-O 等。Kubernetes

Read more

数据结构—顺序表超经典算法

数据结构—顺序表超经典算法

数据结构—顺序表链表经常用到的算法 * 所有题目链接 * 顺序表算法题(双指针法) * 移除元素 * 删除有序数组中的重复项 * 合并两个有序数组 * 链表算法题(快慢指针,三指针法,创建新链表法) * 移除链表元素 * 反转链表 * 链表的中间节点 * 合并两个有序链表 * 链表分割 * 链表的回文结构 * 相交链表 * 环形链表(快慢指针) * 环形链表I * 环形链表II * 代码仓库 所有题目链接 移除元素 删除有序数组中的重复项 合并两个有序数组 移除链表元素 反转链表 链表的中间节点 合并两个有序链表 链表分割 链表的回文结构 相交链表 环形链表I 环形链表II 顺序表算法题(双指针法) 移除元素 题目链接↓ 移除元素 题目讲解↓ 思路:双指针法,创建两个变量dst,src如果src指向的数据是val,src++如果src指向的数据不是val,赋值(

By Ne0inhk

深度优先搜索(DFS)详解及C++实现

深度优先搜索(DFS)详解及C++实现 一、什么是深度优先搜索(DFS)? 深度优先搜索(Depth-First Search,简称DFS)是一种用于遍历或搜索树或图的算法。其核心思想是:尽可能深地搜索图的分支,当某条分支搜索到尽头无法继续前进时,回溯到上一个节点,再选择另一条未探索的分支继续搜索,直到所有节点都被访问完毕。 可以用一个生动的比喻理解DFS:想象你走进一个迷宫,每次遇到岔路时,随机选择一条路一直走,直到走到死胡同(无法继续前进),然后沿原路返回上一个岔路,选择另一条未走过的路继续探索,直到找到出口或遍历完整个迷宫。 DFS的实现通常依赖栈(Stack)这种数据结构(手动实现时),或者直接利用递归函数调用栈(更简洁,也是最常用的方式)。递归实现的本质是将每次的节点访问和回溯过程交给函数栈来管理,无需手动维护栈结构。 二、DFS的核心特性与适用场景 1. 核心特性 * 不撞南墙不回头:优先深入探索当前分支,而非横向遍历同级节点; * 回溯思想:探索到尽头后,返回上一节点继续探索其他分支,需要记录节点访问状态(避免重复访问); * 空间复杂度:取决于

By Ne0inhk
《算法题讲解指南:优选算法-滑动窗口》--13 水果成篮

《算法题讲解指南:优选算法-滑动窗口》--13 水果成篮

🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》 《C++入门到进阶&自我学习过程记录》《算法题讲解指南》--从优选到贪心 ✨未择之路,不须回头 已择之路,纵是荆棘遍野,亦作花海遨游 目录 13 水果成篮 题目链接: 编辑 题目示例: 解法(滑动窗口): 算法思路: 算法流程: C++代码演示:方法一(使用容器) C++代码演示:方法二(用数组模拟哈希表) 算法总结及流程解析: 结束语 13 水果成篮 题目链接: 题目示例: 解法(滑动窗口): 算法思路:       研究的对象是一段连续的区间,可以使用【滑动窗口】思想来解决问题。       让滑动窗口满足:窗口内水果的种类只有两种。       做法:右端水果进入窗口的时候,

By Ne0inhk
【CVPR2025 DEIM】超详细!手把手训练自己的数据集教学:从源码下载,配置虚拟环境,准备数据集、训练、验证、推理测试 ,实现0到1的完整教学过程。本文在win系统上训练,最强实时目标检测算法!

【CVPR2025 DEIM】超详细!手把手训练自己的数据集教学:从源码下载,配置虚拟环境,准备数据集、训练、验证、推理测试 ,实现0到1的完整教学过程。本文在win系统上训练,最强实时目标检测算法!

🔥DEIM创新改进目录:全新DEIM有效涨点改进目录 | 包含各种最新顶会顶刊:卷积模块、注意力模块、特征融合模块、有效特征聚合提取模块,上采样模块、下采样模块,二次创新模块、独家创新,特殊场景检测等最全大论文及小论文必备创新改进点 🔥全新DEIM创新改进专栏地址:全网独家DEIM创新改进高效涨点+永久更新中(至少500+创新改进🗡剑指小论文、大论文)+小白也能简单高效跑实验+容易发各种级别小论文 本文目录 一、下载CVPR2025 DEIM官方源码  二、创新DEIM项目虚拟环境 第一步创建一个自己的虚拟环境: 第二步进入到自己的虚拟环境: 第三步:安装pytorch,建议不要安装太新版本 第四步:直接复制以下所有命令到控制台“终端里面粘贴回车运行” 三、准备自己的数据集和配置自己数据集步骤 3.1 本文以训练Visdrone2019无人机数据集为例 3.2 将自己数据集放到datasets文件夹里 3.3 配置数据步骤 四、使用DEIM训练自己的数据集 4.1

By Ne0inhk