<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Workload on giftiaのblog</title><link>https://hch1212.github.io/tags/workload/</link><description>Recent content in Workload on giftiaのblog</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 04 May 2026 03:29:07 +0000</lastBuildDate><atom:link href="https://hch1212.github.io/tags/workload/index.xml" rel="self" type="application/rss+xml"/><item><title>K8s Workload</title><link>https://hch1212.github.io/posts/2026/03/k8s-workload/</link><pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><guid>https://hch1212.github.io/posts/2026/03/k8s-workload/</guid><description>&lt;h2 id="workload-是什么"&gt;Workload 是什么&lt;/h2&gt;
&lt;p&gt;在 Kubernetes 里，&lt;code&gt;Workload&lt;/code&gt; 可以理解为“应用运行方式的声明”。&lt;/p&gt;
&lt;p&gt;我们并不直接操作 Pod，而是通过 Workload 对象告诉集群：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要运行什么程序&lt;/li&gt;
&lt;li&gt;需要多少副本&lt;/li&gt;
&lt;li&gt;失败后如何恢复&lt;/li&gt;
&lt;li&gt;以什么方式发布新版本&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kubernetes 控制器会持续把“实际状态”拉回到“期望状态”。这也是它和传统手工运维最大的区别。&lt;/p&gt;
&lt;h2 id="为什么不直接管理-pod"&gt;为什么不直接管理 Pod&lt;/h2&gt;
&lt;p&gt;Pod 是最小调度单位，但它是易失的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;节点重启，Pod 可能被重新调度&lt;/li&gt;
&lt;li&gt;Pod 异常退出，需要重新拉起&lt;/li&gt;
&lt;li&gt;版本发布需要有序替换&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果直接用裸 Pod，所有生命周期管理都要自己处理。Workload 的价值，就是把这些重复工作交给控制器。&lt;/p&gt;
&lt;h2 id="kubernetes-常见-workload"&gt;Kubernetes 常见 Workload&lt;/h2&gt;
&lt;h3 id="1-deployment"&gt;1. Deployment&lt;/h3&gt;
&lt;p&gt;最常见的无状态应用控制器，适合 Web 服务、API 服务、网关等。&lt;/p&gt;
&lt;p&gt;核心能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;副本管理（Replica）&lt;/li&gt;
&lt;li&gt;滚动更新（RollingUpdate）&lt;/li&gt;
&lt;li&gt;回滚（Rollback）&lt;/li&gt;
&lt;li&gt;声明式扩缩容&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-statefulset"&gt;2. StatefulSet&lt;/h3&gt;
&lt;p&gt;面向有状态应用，适合数据库、消息队列、分布式存储。&lt;/p&gt;
&lt;p&gt;核心特征：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;稳定网络标识（固定 Pod 名）&lt;/li&gt;
&lt;li&gt;稳定存储绑定（常配 PVC）&lt;/li&gt;
&lt;li&gt;有序创建与有序删除&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的应用强依赖实例身份（如主从编号、分片编号），优先考虑 StatefulSet。&lt;/p&gt;
&lt;h3 id="3-daemonset"&gt;3. DaemonSet&lt;/h3&gt;
&lt;p&gt;保证每个节点（或指定节点）都运行一个 Pod。&lt;/p&gt;
&lt;p&gt;典型场景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;日志采集 Agent&lt;/li&gt;
&lt;li&gt;节点监控 Agent&lt;/li&gt;
&lt;li&gt;CNI / CSI 相关组件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它更像“节点级服务”，而不是业务服务。&lt;/p&gt;
&lt;h3 id="4-job"&gt;4. Job&lt;/h3&gt;
&lt;p&gt;一次性任务，运行完成即结束。&lt;/p&gt;</description></item></channel></rss>