前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7.工作负载管理-使用和管理StatefulSet

7.工作负载管理-使用和管理StatefulSet

作者头像
AI码师
发布2024-04-17 16:22:26
1030
发布2024-04-17 16:22:26
举报

Kubernetes StatefulSet 是一种用于管理有状态应用程序的控制器,与 Deployment 不同,StatefulSet 为每个Pod分配了唯一的标识符,通常是一个稳定的网络标识符(例如,Pod名称的索引)。这使得 StatefulSet 适用于运行有状态应用程序,如数据库。

基本概念

  • 「唯一标识符」:每个 StatefulSet Pod 都有一个唯一的标识符,通常是一个整数。这个标识符是通过 StatefulSet 的名称和一个索引值生成的。例如,对于 StatefulSet web, Pods 的名称可能为 web-0, web-1, web-2 等。
  • 「稳定的网络标识符」:StatefulSet 提供了稳定的网络标识符,可以用于服务发现和网络连接。这些标识符允许有状态的应用程序保持其标识符在重新调度和重启中的稳定性。
  • 「有序部署和删除」:StatefulSet 通过有序部署和删除来保证 Pod 的有序性。Pod 是按照它们的索引顺序一个一个地部署和删除的。这种有序性对于依赖于稳定节点标识符的应用程序非常重要,如分布式数据库。
  • 「持久性存储」:StatefulSet 支持与持久卷(Persistent Volumes)的集成,以提供每个 Pod 的持久性存储。在创建 StatefulSet 时,可以定义每个 Pod 使用的持久性存储卷。
  • 「有状态应用程序的扩展和缩小」:StatefulSet 允许你对有状态应用程序进行水平扩展和缩小。当你需要增加或减少副本时,StatefulSet 会按照有序的方式逐渐更改 Pod 的数量。
  • 「适用于有状态应用」:StatefulSet 适用于那些需要稳定标识符和有序网络标识符的有状态应用,如数据库(例如 MySQL、PostgreSQL)、消息队列等。

基本使用

  • 通过yaml定义StatefulSet
代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nfs-client-provisioner
  namespace: kube-system
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nfs-client-provisioner
  template:
    metadata:
      labels:
        app: nfs-client-provisioner
    spec:
      serviceAccountName: nfs-client-provisioner
      containers:
        - name: nfs-client-provisioner
          #image: quay.io/external_storage/nfs-client-provisioner:v3.1.0-k8s1.11
          image: registry.cn-beijing.aliyuncs.com/pylixm/nfs-subdir-external-provisioner:v4.0.0
          volumeMounts:
            - name: nfs-client-root
              mountPath: /persistentvolumes
          env:
            - name: PROVISIONER_NAME
              value: mynfs
            - name: NFS_SERVER
              value: 192.168.64.60
            - name: NFS_PATH
              value: /home/nfs/write
      volumes:
      - name: nfs-client-root
        nfs:
          server: 192.168.64.60
          path: /home/nfs/write

这里有些知识是后面介绍的,这里简单说明下「volumeClaimTemplates」:PVC 申请模版 应用到需要的pod中「storageClassName」:描述动态存储的配置「resources.requests.storage」: 需要多大的存储空间

  • 查看Pod
代码语言:javascript
复制
kubectl get pod,sts

可以看到sts中所有的pod后面都带上了索引,而不再是随机串

  • 滚动有序更新 从最大序号开始更新

‍‍

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐哥聊编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本概念
  • 基本使用
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档