Kubernetes StatefulSet之volumeClaimTemplates

这篇具有很好参考价值的文章主要介绍了Kubernetes StatefulSet之volumeClaimTemplates。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在 Kubernetes 中,StatefulSet 是用于管理有状态应用的控制器对象。它确保每个 Pod 都有唯一的标识符和稳定的网络标识,并按照顺序进行部署和终止。StatefulSet 还提供了一种方便的方式来管理这些有状态应用所需的持久化存储。

volumeClaimTemplates 是 StatefulSet 中的一个字段,它用于定义每个 Pod 所需的持久卷声明(Persistent Volume Claim,PVC)模板。通过使用这个字段,可以自动为 StatefulSet 中的每个 Pod 创建和绑定相应的 PVC。

volumeClaimTemplates 字段中,可以定义多个 PVC 模板,每个模板都包含了创建 PVC 所需的属性,如存储类、访问模式、存储资源需求等。StatefulSet 会根据这些模板为每个 Pod 动态创建 PVC,并将其绑定到匹配的持久卷上。

当创建 StatefulSet 的 Pod 时,每个 Pod 将使用与其对应的 PVC,并将其挂载到 Pod 的容器中,从而实现持久化存储的使用。

使用 volumeClaimTemplates 的示例:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-statefulset
spec:
  selector:
    matchLabels:
      app: my-app
  serviceName: my-service
  replicas: 3
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-container
          image: my-image
          volumeMounts:
            - name: my-volume
              mountPath: /data
  volumeClaimTemplates:
    - metadata:
        name: my-volume
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: standard

在上面的示例中,定义了一个 StatefulSet,包含了一个 Pod 模板和一个 volumeClaimTemplates,其中定义了一个名为 my-volume 的 PVC 模板。每个 Pod 会使用这个 PVC 模板创建一个 PVC,并将其挂载到 /data 目录下。

通过使用 volumeClaimTemplates,StatefulSet 可以方便地管理每个 Pod 所需的持久卷声明,并为每个 Pod 创建相应的 PVC。这样可以确保有状态应用在创建和终止时可以持久化存储数据。

解释一下其中的accessModes

accessModes 是 Kubernetes 中 PersistentVolumeClaim (PVC) 对象的一个属性,用于指定对持久卷 (Persistent Volume,PV) 的访问模式。

访问模式定义了 PVC 可以与 PV 交互的方式,包括读取、写入和多节点访问的能力。下面是一些常见的访问模式:

  1. ReadWriteOnce (RWO):该模式表示 PVC 可以被单个节点以读写模式挂载。即 PVC 只能在一个 Pod 中以读写模式使用,其他 Pod 不能挂载该 PVC。这适用于需要排他性访问的应用,如数据库。

  2. ReadOnlyMany (ROX):该模式表示 PVC 可以被多个节点以只读模式挂载。多个 Pod 可以同时挂载同一个 PVC,并以只读方式访问数据。这适用于需要共享只读数据的应用,如静态文件服务。

  3. ReadWriteMany (RWX):该模式表示 PVC 可以被多个节点以读写模式挂载。多个 Pod 可以同时挂载同一个 PVC,并以读写方式访问数据。这适用于需要多个 Pod 共享读写数据的应用,如分布式文件系统。

注意,访问模式是由存储提供商和存储后端支持的,因此需要确保所使用的存储类和底层存储支持所需的访问模式。

以下是一个 PVC 的示例,其中定义了 accessModesReadWriteOnce

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
    storage: 1Gi
  storageClassName: standard

在上面的示例中,PVC 使用了 ReadWriteOnce 访问模式,表示该 PVC 可以被单个节点以读写模式挂载。

再解释一下storageClassName

storageClassName 是 Kubernetes 中 PersistentVolumeClaim (PVC) 对象的一个属性,用于指定所需的存储类(StorageClass)的名称。

存储类是 Kubernetes 中用于定义动态创建持久卷 (Persistent Volume,PV) 的规范。通过存储类,可以将不同类型和配置的存储资源抽象为一种可供 PVC 使用的统一接口。存储类定义了持久卷的属性、配置和提供者等信息,可以根据需求动态创建符合要求的 PV。

当 PVC 的 storageClassName 属性被设置时,Kubernetes 将根据存储类的定义来动态创建 PV,并将其绑定到 PVC 上。这样可以使 PVC 在使用前不需要提前手动创建 PV,而是由存储类根据需求自动创建匹配的 PV。

在上面的示例中,PVC 使用了 storageClassNamestandard,表示该 PVC 需要使用名为 standard 的存储类来创建持久卷。根据存储类的定义,Kubernetes 会动态创建匹配要求的 PV,并将其绑定到 PVC 上供使用。

注意,存储类的可用性和配置依赖于 Kubernetes 集群中的存储后端和配置。因此,在使用特定存储类之前,请确保存储类已经在集群中正确配置并可用。文章来源地址https://www.toymoban.com/news/detail-607746.html

到了这里,关于Kubernetes StatefulSet之volumeClaimTemplates的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【探索 Kubernetes|作业管理篇 系列 13】StatefulSet 拓扑状态

    大家好,我是秋意零。 在上一篇中,我们讲解了 Deployment 这种无状态的控制器;而如果要部署有状态的应用,那么 Deployment 显然是达不到我们的需求的。 今天讲解的是 StatefulSet 有状态控制器。 最近搞了一个扣扣群,旨在技术交流、博客互助,希望各位大佬多多支持! 获取

    2024年02月11日
    浏览(36)
  • 【探索 Kubernetes|作业管理篇 系列 14】StatefulSet 存储状态

    大家好,我是秋意零。 在上一篇中,我们讲解了 StatefulSet 的拓扑状态;我们发现,它的拓扑状态,就是顺序启动/删除、Pod 名称+编号命名、将 Pod 名称设为 Hostname 名称、通过 Service 无头服务的 DNS 记录访问。 今天,就来看看 StatefulSet 的存储状态。 最近搞了一个扣扣群,旨在

    2024年02月11日
    浏览(31)
  • 【Kubernetes资源篇】StatefulSet无状态服务管理入门实战详解

    官方中文参考文档 1、StatefulSet Pod控制器特性 StatefulSet(简写sts)也是K8S集群中的一种Pod资源管理器,与deployment Pod控制器不同的是,StatefulSet用于管理无状态程序,特性如下: 稳定的网络标识符:管理的Pod都拥有一个稳定的网络标识符。可以通过网络标识符进行访问。 有序部署

    2024年02月13日
    浏览(28)
  • 【K8S】Kubernetes 中有状态的资源对象——StatefulSet

    现在基本上很多服务中的应用都是有状态的,比如MySQL数据库、Redis等,因为其中的数据在不断地变化,所以这些应用每个时刻都处于一个不同的状态。或者一个系统中存在多个不同的应用,这些应用存在一定的依赖关系。例如一个博客服务,该服务中包含了Redis缓存和MySQL数

    2024年02月04日
    浏览(38)
  • 飞天使-k8s知识点20-kubernetes实操5-pod更新与暂停-statefulset

    资源调度 Deployment:扩缩容 资源调度 Deployment:更新的暂停与恢复 资源调度 StatefulSet:定义一个有状态服务 headless service 金丝雀发布 参考文档:https://support.huaweicloud.com/basics-cce/kubernetes_0015.html

    2024年02月20日
    浏览(39)
  • K8s(Kubernetes)学习(四):Controller 控制器:Deployment、StatefulSet、Daemonset、Job

    什么是 Controller 以及作用 常见的 Controller 控制器 Controller 如何管理 Pod Deployment 基本操作与应用 通过控制器实现 Pod 升级回滚和弹性伸缩 StatefulSet 基本操作与应用 Daemonset 基本操作与应用 Job 基本操作与应用 Controller 无法解决问题 1 Controller 控制器 官网: http://kubernetes.p2hp.com/

    2024年02月09日
    浏览(44)
  • [Kubernetes]5. k8s集群StatefulSet详解,以及数据持久化(SC PV PVC)

    前面通过 deployment 结合 service 来部署 无状态的应用 ,下面来讲解通过 satefulSet 结合 service 来部署 有状态的应用 无状态: 无状态 (stateless) 、牲畜 (cattle) 、无名 (nameless) 、可丢弃 (disposable) 有状态: 有状态 (stateful) 、宠物 (pet) 、具有名 (haviing name) 、不可丢弃 (non-disposable) St

    2024年02月01日
    浏览(30)
  • 基于K8S部署ZooKeeper准备知识(StatefulSet)

    使用k8s部署zk时,会部署一个headless service.科普一下headless service: Headless Service(无头服务)是 Kubernetes 中的一种服务类型,它与普通的 ClusterIP 服务有所不同。普通的 ClusterIP 服务会为每个服务分配一个虚拟 IP 地址,并通过负载均衡将流量转发到后端 Pod。而 Headless Service 不分

    2024年02月08日
    浏览(44)
  • k8s实战案例之基于StatefulSet控制器运行MySQL一主多从

    Pod调度运⾏时,如果应⽤不需要任何稳定的标示、有序的部署、删除和扩展,则应该使⽤⼀组⽆状态副本的控制器来部署应⽤,例如 Deployment 或 ReplicaSet更适合⽆状态服务需求,⽽StatefulSet适合管理所有有状态的服务,⽐如MySQL、MongoDB集群等。 StatefulSet本质上是Deployment的⼀种

    2024年02月09日
    浏览(31)
  • k8s控制器之StatefulSet--第四弹StatefulSet 的更新策略

    在 Kubernetes 1.7 及之后的版本中,可以为 StatefulSet 设定 .spec.updateStrategy 字段,以便您可以在改变 StatefulSet 中 Pod 的某些字段时(container/labels/resource request/resource limit/annotation等)禁用滚动更新。 On Delete OnDelete 策略实现了 StatefulSet 的遗留版本(kuberentes 1.6及以前的版本)的行为

    2024年02月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包