news 2026/8/31 15:19:23

Kubernetes Deployment 从入门到实战:副本、模板与滚动更新全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kubernetes Deployment 从入门到实战:副本、模板与滚动更新全解析


之前说完了ingress,service,这篇我们说一下deployment。
那么什么是Deployment呢?
一个管理 Pod 副本的无状态应用控制器。在创建Deployment的时候会创建一个pod,你声明期望状态(几个副本、用什么镜像),它持续对比实际状态并自动调和到一致。

那么Deployment解决了什么问题呢?

死穴裸 Pod 的下场Deployment 的解法
Pod 挂了没人管应用下线,等人手工重建自动重建,副本数永远维持
扩缩容麻烦想加 5 个副本要手写 5 份 YAML改一个数字 replicas: 5,自动补齐
升级要停机删旧建新,中间服务中断滚动更新,新旧交替全程可用

那么我们接下来看一个Deployment的模板

apiVersion:apps/v1kind:Deploymentmetadata:name:webspec:replicas:3# 期望副本数selector:# 认领 Pod 的标签matchLabels:app:webstrategy:# 更新策略type:RollingUpdaterollingUpdate:maxSurge:1maxUnavailable:0template:# Pod 模板metadata:labels:app:web# 必须和 selector 一致spec:containers:-name:nginximage:nginx:1.28ports:-containerPort:80resources:requests:{cpu:100m,memory:128Mi}limits:{cpu:500m,memory:256Mi}readinessProbe:# Ready 才进 EndpointshttpGet:{path:/,port:80}

这个是一个基础的yaml文件
他的整体结构:三层嵌套

Deployment (外层:管理策略)└─ spec.template (中层:Pod 模板)└─ spec.containers (内层:容器定义)

每一层管不同的事:

管什么
Deployment 层几个副本、怎么更新、认领哪些 Pod
template 层Pod 长什么样(标签、规格)
containers 层容器跑什么镜像、什么端口、多少资源

第一层:Deployment 的管理策略
replicas: 3 — 期望副本数
就是说我们要一直保持三个pod。
这就是调和循环:控制器持续对比期望 vs 实际,不一致就操作到一致。

spec:replicas:3selector:matchLabels:app:webstrategy:type:RollingUpdaterollingUpdate:maxSurge:1maxUnavailable:0

第二层:Pod 模板

template:metadata:labels:app:webspec:containers:-...

Deployment ──(selector: app=web)──→ 认领所有 label 含 app=web 的 Pod
第三层:容器定义

-name:nginximage:nginx:1.28ports:-containerPort:80resources:requests:{cpu:100m,memory:128Mi}limits:{cpu:500m,memory:256Mi}readinessProbe:httpGet:{path:/,port:80}

ports.containerPort: 80
声明容器监听 80。注意它只是声明,不产生任何网络效果——真正决定流量的是 Service 的 targetPort。这里写 80 是给人看的,也方便 Service 用名字引用端口。

resources — 资源请求和上限

requests:cpu 100m,mem 128Mi ← 调度器按这个找节点limits:cpu 500m,mem 256Mi ← 容器最多用这么多

readinessProbe — 就绪探针

readinessProbe:httpGet:{path:/,port:80}

kubelet 定期发 GET http://PodIP:80/ ,返回 200 = 就绪。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 15:15:48

VMware虚拟机安装与VMware Tools配置指南:从创建到排错

很多朋友在接触 VMware 虚拟机时,第一次创建虚拟机、安装操作系统、安装 VMware Tools 的过程会遇到各种问题:装完系统后屏幕分辨率小得可怜、鼠标移动不跟手、文件拖不进去、剪贴板无法共享,甚至开机直接报错。这篇文章就围绕“在 VMware 虚…

作者头像 李华
网站建设 2026/8/31 15:15:28

432道MySQL面试题 281 - 300 题

为方便阅读,这里整理了整个系列的索引导航。本系列共 432 道 MySQL 面试题,按每 20 题为一篇进行连载,点击下方链接即可跳转到对应章节,方便你按需查阅、系统复习。 432道MySQL面试题 1 - 20 题 432道MySQL面试题 21 - 40 题 432道MySQL面试题 41 - 60 题 432道MySQL面试题…

作者头像 李华
网站建设 2026/8/31 15:15:19

YOLOv8鸟类识别项目实战:从数据集到部署全流程解析

简介:本资源是一套面向本科毕业设计与人工智能课程实践的鸟类目标检测系统实现方案,聚焦计算机视觉在生态保护领域的落地应用,解决野外图像中多类鸟类的精准识别与定位问题。压缩包共30个文件,含27个MATLAB脚本(如双边…

作者头像 李华
网站建设 2026/8/31 15:07:22

LTSpice下VIPERGAN50TR准谐振反激电源仿真:从模型导入到波形分析

最近在搞一款基于VIPERGAN50TR的50W USB PD快充方案,板子还在改版,我就先在LTSpice里把整个准谐振反激拓扑跑通了。说实话,这颗芯片和普通反激控制器不太一样,它内部集成了650V的GaN功率管,开关速度比传统Si MOSFET快一…

作者头像 李华
网站建设 2026/8/31 15:03:50

如何用 Claude Code 查询 SAP note

Claude Code 的 Chrome 集成,可以理解为一条把 Claude Code 和本机真实 Chrome 浏览器连起来的官方通道。它不是简单的网页抓取功能,也不是 Claude Code 自己启动一个无登录状态的无头浏览器,而是让 Claude Code 通过 Anthropic 官方的 Claude in Chrome 扩展,直接操作正在…

作者头像 李华
网站建设 2026/8/31 15:03:43

SAP UI5 里有没有类似 RxJS throttle 的机制,从事件节流语义到 UI5 工程实现的完整分析

在复杂的 SAP UI5 应用里,一个很典型的问题是 liveChange、scroll、resize、拖拽、鼠标移动或者连续状态变化产生得太快。事件本身可能几十毫秒就来一次,而事件处理函数里又可能触发 JSONModel 更新、表格过滤、布局计算,甚至发起 OData 请求。到了这里,很自然会想到 RxJS …

作者头像 李华