Kubernetes 中的 StatefulSets 用于管理有状态的应用程序,例如数据库或缓存。与无状态的 Deployment 相比,StatefulSets 提供了稳定的持久化存储和网络标识。

特点

  • 稳定的持久化存储:每个 Pod 都有一个稳定的、持久的存储卷。
  • 稳定的网络标识:每个 Pod 都有一个稳定的、唯一的网络标识符(例如主机名)。
  • 有序部署、扩展和删除:Pod 的创建、删除和更新是有序的。

使用场景

  • 数据库服务器
  • 缓存服务器
  • 任何需要稳定存储和网络标识的服务

示例

假设我们有一个 Redis 数据库,我们可以使用 StatefulSet 来部署它。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
spec:
  serviceName: "redis"
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:latest
        ports:
        - containerPort: 6379

扩展阅读

更多关于 Kubernetes 的信息,请访问我们的 Kubernetes 教程

StatefulSet