您现在的位置是:首页 > 文章详情

使用Local Persistent Volume 部署有状态工作负载

日期:2024-01-15点击:48

本文分享自华为云社区《使用Local Persistent Volume 部署有状态工作负载》,作者: 张俭。

使用Local Persistent Volume 部署有状态工作负载

本教程以部署Demo StatefulSet为例,指导您利用 LocalPersistentVolume (即本地持久卷)技术使用标准 PVC 对象访问本地磁盘。

安装kubernetes集群

略,可参考官方文档

创建WaitForFirstConsumer 绑定模式的StorageClass

此模式指示 Kubernetes 延迟PVC的绑定,直到有Pod使用为止。

kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer

在对应的主机上准备卷

kubernetes003主机

mkdir -p /data/volumes/pv0 chmod 777 /data/volumes/pv0

kubernetes002主机

mkdir -p /data/volumes/pv1 chmod 777 /data/volumes/pv1

创建两个LocalPersistentVolume

注意,pv和host节点进行亲和处理,这是为了让k8s把对应的pod调度到对应的卷

apiVersion: v1 kind: PersistentVolume metadata: name: test-local-pv-0 spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /data/volumes/pv0 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - kubernetes003
apiVersion: v1 kind: PersistentVolume metadata: name: test-local-pv-1 spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /data/volumes/pv1 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - kubernetes002

创建两个pvc

kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-busybox-0 spec: accessModes: - ReadWriteOnce storageClassName: local-storage volumeName: test-local-pv-0 resources: requests: storage: 10Gi
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-busybox-1 spec: accessModes: - ReadWriteOnce storageClassName: local-storage volumeName: test-local-pv-1 resources: requests: storage: 10Gi

创建ZooKeeper StatefulSet

apiVersion: apps/v1 kind: StatefulSet metadata: name: busybox labels: app: busybox spec: replicas: 2 selector: matchLabels: app: busybox serviceName: "busybox" template: metadata: labels: app: busybox spec: containers: - name: busybox image: busybox command: ['sh', '-c', 'echo "The local volume is mounted!" > /mnt/test.txt && sleep 3600'] imagePullPolicy: Always volumeMounts: - name: test-pvc mountPath: /mnt volumeClaimTemplates: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc spec: storageClassName: local-storage

总结

本地持久卷相对于远程持久存储的主要优势在于性能:与远程存储系统相比,本地磁盘通常提供更高的 IOPS 和吞吐量以及更低的延迟。 Kubernetes 本地卷具有以下特性:

  • PersistentVolumeClaim 将在绑定本地持久卷之前等待 POD 出现
  • 一旦本地持久卷绑定到声明,即使请求的 POD 已死亡或已被删除,它也会保持绑定状态
  • 新的 POD 可以通过引用相同的 PersistentVolumeClaim 附加到本地卷中的现有数据
  • 与 NFS 共享类似,Kubernetes 持久化本地卷允许多个 POD 具有读/写访问权限
  • 良好工作负载的示例包括软件定义的存储系统和复制数据库。 其他类型的应用程序应继续使用高可用性、可远程访问的持久存储。

参考

https://lapee79.github.io/en/article/use-a-local-disk-by-local-volume-static-provisioner-in-kubernetes/

点击关注,第一时间了解华为云新鲜技术~

原文链接:https://my.oschina.net/u/4526289/blog/10823581
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章