使用Local Persistent Volume 部署有状态工作负载
本文分享自华为云社区《使用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/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Prometheus配置Basic Auth进行安全防护,实现登录控制
本文分享自华为云社区《Prometheus配置Basic Auth进行安全防护,实现登录控制》,作者:可以交个朋友。 一、Prometheus Basic Auth 使用背景 在日常prometheus的使用中是没有安全加密措施的,可能会导致监控信息,敏感信息遭遇泄漏。在这种情况下需要保护对Prometheus的访问。 二、方案简介 Prometheus于2.24版本(包括2.24)之后提供Basic Auth功能进行加密访问,在浏览器登录UI的时候需要输入用户密码,访问Prometheus api的时候也需要加上用户密码。 大致步骤如下 预制用户密码,其中密码使用python3工具包加密 创建对应用户密码配置文件,修改普罗启动命令(operator场景通过ngress-nginx方式) 由于Prometheus访问需要认证,如果普罗负载存在探针则修改普罗负载本身的探针配置 由于Prometheus访问需要认证,如果有grafana,需要修改grafana相关步骤 三、准备工作,预制用户密码,其中密码使用python3工具包加密 因为Basic Auth 需要user、password...
- 下一篇
5分钟带您了解DRS录制回放
什么是DRS录制回放? DRS录制回放是将源数据库发生的真实业务流量,在目标数据库模拟执行,从而观察和检验目标数据库的功能和性能表现。录制回放主要分为录制、回放两个阶段,录制过程是从源数据库上将所需时间段内的全部SQL原语句(包括增、删、改、查)通过审计日志下载、录制代理等进行采集;回放是将采集到的全部SQL语句在目标数据库上进行执行(目标数据库需有源数据库的初始数据)。 DRS录制回放与DRS、UGO的关系 数据复制服务(Data Replication Service,简称DRS)是一种易用、稳定、高效,用于数据库实时迁移和数据库实时同步的云服务,着重于数据库毫秒级数据同步,支持同构异构数据库之间的数据传输/搬迁,降低数据库之间数据流通的复杂性,减少数据传输成本。 数据库和应用迁移 UGO(Database and Application Migration UGO,简称UGO)是专注于异构数据库结构迁移的云服务,可将源数据库中的DDL、DML和DCL一键自动转换为华为云GaussDB的SQL语法,最大化降低用户数据库的迁移成本。 录制回放是DRS提供的业务仿真特性,结合DRS+U...
相关文章
文章评论
共有0条评论来说两句吧...