Kubernetes - 实战:k8s之Statefulset控制器

在Kubernetes实战中,StatefulSet控制器用于部署和管理有状态应用,这些应用需要稳定的持久化存储、有序的部署和扩展、以及唯一的网络标识。以下是一些StatefulSet控制器的实战要点:

创建StatefulSet

创建StatefulSet通常需要一个YAML文件,其中包含了StatefulSet的定义,包括:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-statefulset
spec:
  serviceName: my-statefulset-service # 关联的服务名称,用于Headless Service
  replicas: 3 # 希望运行的副本数量
  selector:
    matchLabels:
      app: my-stateful-app # 用于选择匹配Pod的标签选择器
  template:
    metadata:
      labels:
        app: my-stateful-app
    spec:
      terminationGracePeriodSeconds: 180 # 可选,优雅关闭Pod的超时时间
      containers:
      - name: my-container
        image: my-image:v1
        ports:
        - containerPort: 80
        volumeMounts:
        - name: data-volume
          mountPath: /data # 将存储卷挂载到容器内
      volumes:
      - name: data-volume
        persistentVolumeClaim:
          claimName: my-pvc # 使用已存在的PersistentVolumeClaim(PVC)

  volumeClaimTemplates: # 可选,动态创建PVC
  - metadata:
      name: data-volume
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 1Gi
      storageClassName: standard # 指定存储类

特点与实战操作

  • 有序创建和删除:StatefulSet中的Pod按照序号(012等)依次创建和删除,保证了Pod间的依赖关系得到妥善处理。

  • 稳定的网络标识:每个Pod有一个唯一的hostname格式为<statefulset-name>-<ordinal>,并可以创建Headless Service,使Pod拥有稳定的DNS记录。

  • 持久化存储:StatefulSet要求每个Pod都挂载持久化存储卷,以确保数据在Pod重建时得以保留。

  • 滚动更新:StatefulSet支持滚动更新,可以有序地逐个更新Pod,以减少对有状态应用的影响。

  • 扩容与缩容:在扩缩容时,新的Pod也会按照顺序创建或删除,并且每个Pod都有自己独立的数据存储。

实战操作示例

  • 创建StatefulSet:kubectl apply -f statefulset.yaml
  • 查看StatefulSet和关联的Pod:kubectl get statefulsetskubectl get pods
  • 扩容StatefulSet:编辑StatefulSet的.spec.replicas字段,然后执行kubectl apply -f statefulset.yaml
  • 更新应用版本:更改StatefulSet中容器的镜像版本,然后执行更新操作,StatefulSet会执行有序的滚动更新

注意事项

  • 删除StatefulSet并不会自动删除其关联的PersistentVolumeClaims(PVCs)和PersistentVolumes(PVs),因此在删除StatefulSet前,需要明确是否也需要删除这些存储资源。
  • 对于有状态应用,应在删除StatefulSet前确保应用数据已经妥善备份,或者在应用自身具备迁移数据的能力之后再进行删除操作。如果需要删除与StatefulSet关联的存储资源,需要单独删除对应的PVC。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值