<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>StatefulSet :: Ay Docs</title>
    <link>https://ops.docs.72602.space/using/k8s/sts/index.html</link>
    <description>StatefulSet 如何具体解决有状态应用的挑战&#xA;StatefulSet 的四大核心机制 StatefulSet 通过一系列精心设计的机制，为有状态应用提供了稳定性和可预测性。&#xA;1. 稳定的网络标识 解决的问题：有状态应用（如数据库节点）需要稳定的主机名来相互发现和通信，不能使用随机名称。&#xA;StatefulSet 的实现：&#xA;固定的 Pod 名称：Pod 名称遵循固定模式：&lt;statefulset-name&gt;-&lt;ordinal-index&gt;。 例如：redis-cluster-0，redis-cluster-1，redis-cluster-2 稳定的 DNS 记录：每个 Pod 都会自动获得一个唯一的、稳定的 DNS 记录： 格式：&lt;pod-name&gt;.&lt;svc-name&gt;.&lt;namespace&gt;.svc.cluster.local 例子：redis-cluster-0.redis-service.default.svc.cluster.local 应对场景：&#xA;在 Redis 集群中，redis-cluster-0 可以告诉 redis-cluster-1：“我的地址是 redis-cluster-0.redis-service&#34;，这个地址在 Pod 的一生中都不会改变，即使它被重新调度到其他节点。 2. 有序的部署与管理 解决的问题：像 Zookeeper、Etcd 这样的集群化应用，节点需要按顺序启动和加入集群，主从数据库也需要先启动主节点。&#xA;StatefulSet 的实现：&#xA;有序部署：当创建 StatefulSet 时，Pod 严格按照索引顺序（0, 1, 2…）依次创建。必须等 Pod-0 完全就绪（Ready）后，才会创建 Pod-1。 有序扩缩容： 扩容：按顺序创建新 Pod（如从 3 个扩展到 5 个，会先创建 pod-3，再 pod-4）。 缩容：按逆序终止 Pod（从 pod-4 开始，然后是 pod-3）。 有序滚动更新：同样遵循逆序策略，确保在更新过程中大部分节点保持可用。 应对场景：&#xA;部署 MySQL 主从集群时，StatefulSet 会确保 mysql-0（主节点）先启动并初始化完成，然后才启动 mysql-1（从节点），从节点在启动时就能正确连接到主节点进行数据同步。 3. 稳定的持久化存储 这是 StatefulSet 最核心的特性！</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate></lastBuildDate>
    <atom:link href="https://ops.docs.72602.space/using/k8s/sts/index.xml" rel="self" type="application/rss+xml" />
  </channel>
</rss>