Kubernetes (K8s) 通俗原理解析:算力中心的“超级调度员”

Kubernetes (K8s) 通俗原理解析:算力中心的"超级调度员"

在算力中心,我们可能有成百上千台服务器。如果还在一台台机器上手动跑程序,那运维人员得累死。Kubernetes (K8s) 就是为了解决这个问题而生的。

1. 什么是 K8s?(通俗比喻)

我们可以把 算力中心 想象成一个 繁忙的港口

  • 服务器 (Node) :就是 货船。有的船大(高性能 GPU 机器),有的船小(普通 CPU 机器)。
  • 应用/任务 (Pod) :就是 集装箱。里面装着我们要跑的模型训练任务、Web 服务或者数据库。
  • Kubernetes (K8s) :就是 港口调度指挥中心

K8s 的核心工作:

指挥中心(K8s)不关心集装箱里装的是什么(是 PyTorch 还是 TensorFlow),它只关心:

  1. 调度:"这个集装箱(任务)需要 8块 H800 显卡,那艘大船(Node A)还有空位,把它吊过去。"
  2. 自愈:"哎呀,3号船(Node C)坏了!快把船上的集装箱(任务)全部转移到 4号船上去,别耽误客户发货。"
  3. 扩缩容:"双十一要到了,货物太多,赶紧多叫几艘船来(自动扩容)。"

2. 核心概念速记

在 K8s 的世界里,有几个词你会天天听到:

(1) Pod (豆荚/集装箱) ------ 最小的原子单位

  • K8s 不直接管理程序,它管理 Pod。
  • 一个 Pod 就像一个"小班级",里面可以是一个容器(Container),也可以是几个关系紧密的容器。它们共享网络和存储。
  • 场景: 你提交一个 AI 训练任务,就是一个 Pod。

(2) Node (节点) ------ 干活的工人/机器

  • 这就是真实的物理机或者虚拟机。
  • Master Node (控制节点):工头,只发号施令。
  • Worker Node (工作节点):搬砖的,负责真正跑 Pod。

(3) Deployment (部署) ------ 无状态任务管家

  • 这是用来管理 Web 服务这种"无状态"应用的。
  • 你告诉它:"给我保持 3 个 Nginx 副本活着"。
  • 它就会盯着,死了一个补一个,多了一个杀一个。

(4) StatefulSet (有状态集) ------ 有状态任务管家

  • 这是用来管理数据库、Redis 这种"有状态"应用的。
  • 它保证 Pod 有固定的名字(Web-0, Web-1),数据不会丢,启动顺序也有讲究。

(5) Service (服务) ------ 前台接待/负载均衡

  • Pod 的 IP 是会变的(船会换,集装箱位置会变)。
  • Service 就是一个固定电话号码。外部访问这个号码,K8s 会自动把电话转接到当前活着的 Pod 上。

3. 算力中心运维实战场景

场景一:GPU 资源自动调度

痛点 :以前,用户 A 要跑大模型,得问运维:"哪台机器有 8 张空闲的卡?"运维得去查 Excel 表。
K8s 方案

用户提交任务(YAML描述文件)时写上:nvidia.com/gpu: 8

K8s 调度器(Scheduler)会自动扫描整个集群,找到满足条件的节点,自动把 Pod 扔过去跑。如果没有满足的节点,就让任务排队(Pending)。

场景二:任务断点续训(故障自愈)

痛点 :跑了 3 天的模型,机器突然断电,由于没做容灾,任务挂了,3 天白跑。
K8s 方案

配置好 Checkpoint 挂载到共享存储(如 Alluxio/HDFS)。

当 K8s 发现节点挂了(NotReady),它会自动在另一台健康的节点上重新启动这个 Pod。Pod 启动后读取 Checkpoint,从昨天的进度继续跑,而不是从头开始。

小贴士:什么是 Checkpoint?

Checkpoint(检查点)就像游戏的"存档"。在 AI 训练中,它通常包含:

  1. 模型参数 (Weights):模型当前学到的"脑子"。
  2. 优化器状态 (Optimizer State):学习的"惯性"和方向(如动量)。
  3. 当前的轮数 (Epoch/Step) :已经学到第几课了。
    有了这些,即使程序崩了,也能读取存档,无缝接着训练。

场景三:多租户资源隔离(Namespace)

痛点 :开发组和测试组共用一堆机器,经常出现"开发组把显存占满了,测试组没法测"的情况。
K8s 方案

  • 给开发组创建 Namespace dev,配额(Quota)100 张卡。
  • 给测试组创建 Namespace test,配额 50 张卡。
  • 大家互不干扰,谁也超不过自己的配额。

总结

K8s 不是用来把简单事情搞复杂的,它是用来把复杂事情标准化的

在算力中心,它把成百上千台异构的服务器整合成了一台巨大的超级计算机。用户不需要关心我在哪台机器上跑,只需要关心"给我多少资源"。

相关推荐
Paraverse_徐志斌2 小时前
K8S HPA + KEDA 弹性伸缩消费者解决 MQ 消息积压
容器·kafka·kubernetes·k8s·linq·hpa·keda
AC赳赳老秦2 小时前
文旅行业:DeepSeek处理客流数据生成预测模型与调度建议
人工智能·云原生·容器·kubernetes·notepad++·consul·deepseek
云栈开源日记2 小时前
Linux Kernel:云原生时代的操作系统内核
linux·运维·云原生
Asus.Blogs2 小时前
两个 Docker 容器如何通信?Docker 网络问题完整踩坑与解决指南
网络·docker·容器
linweidong2 小时前
K8s节点保卫战:基于Node Local DNS架构的磁盘自愈系统设计
运维·docker·云原生·容器·架构·kubernetes·k8s
kft13142 小时前
Grafana + OracleDB Exporter深度监控大屏(docker-compose版)
docker·容器·grafana
紫神2 小时前
解决kubevirt安装的windows7系统存在鼠标分裂的问题
云原生·计算机外设·kubevirt
jiayong233 小时前
Kubernetes 高级特性与实战面试题详解
容器·贪心算法·kubernetes
jiayong233 小时前
Kubernetes 基础概念面试题详解
云原生·容器·kubernetes