Longhorn怎么实现Kubernetes集群的持久化存储
本篇内容介绍了"Longhorn怎么实现Kubernetes集群的持久化存储"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Longhorn功能概述
共享资源池:将本地磁盘或安装在计算或专用存储主机中的网络存储形成共享资源池。
为容器和虚拟机创建块存储卷:你可以指定volume的大小,IOPS的需求,以及你想要的跨主机的同步replica的数量(这里的主机是指那些为volume提供存储资源的主机)。replica是在底层磁盘或网络存储上精简配置的。
为每个volume创建一个专用的存储控制器:这可能是与大多数现有的分布式存储系统相比,Longhorn最具特色的功能。大多数现有的分布式存储系统通常采用复杂的控制器软件来服务于从数百到数百万不等的volume。但Longhorn不同,每个控制器上只有一个volume,Longhorn将每个volume都转变成了微服务。
跨计算或存储主机调度多个replica:Longhorn会监测每一个replica的健康状况,对问题进行维修,并在必要时重新生成replica。
以Docker容器的形式操作存储控制器和replica:例如,一个volume有三个replica,就意味着有四个容器。
为每个volume分配多个存储"前端":常见的前端包括Linux内核设备(映射到/ dev / longhorn)和iSCSI目标。 Linux内核设备适用于支持Docker volume,而iSCSI目标更适合支持QEMU / KVM和VMware volume。
创建volume快照和AWS EBS风格的备份:您可以为每个volume创建多达254个快照,这些快照可以逐个备份到NFS或S3兼容的辅助存储中。只有更改的字节会在备份操作期间被复制和存储。
指定定期快照和备份操作的计划:您可以指定这些操作的频率(每小时,每天,每周,每月和每年)、执行这些操作的确切时间(例如,每个星期日凌晨3:00),以及保留多少个循环快照和备份集。
支持任何Kubernetes集群的持久性存储
Longhorn v0.2 支持任何Kubernetes集群的持久性存储。一旦被部署到Kubernetes集群上,Longhorn会自动地将Kubernetes集群中所有节点上全部可用的本地存储聚为集群,产生复制的以及分布式的块存储。你可以在Longhorn volume上执行快照和备份操作,并将它们同步复制到多个节点上。
我们已经移植了Longhorn Manager作为Kubernetes Controller。所有Longhorn状态都存储为Custom Resource Definitions(自定义资源定义,CRD)。Longhorn也不需要单独的etcd服务器。另外,Longhorn Manager公开了执行Longhorn volume操作和快照 / 备份操作的API,这些API将在Longhorn UI和Kubernetes Flexvolume驱动程序执行操作的过程中使用。
运行下面的这条指令,就可以在你的Kubernetes集群上部署整个Longhorn存储系统:
kubectl create -f https://raw.githubusercontent.com/rancher/longhorn/v0.2/deploy/longhorn.yaml
如果你使用的是GKE,请参考这里:https://github.com/rancher/longhorn/blob/master/README.md#google-kubernetes-engine
部署之后,你可以在UI界面通过查看Kubernetes服务找到适合的IP:kubectl -n longhorn-system get svc
现在你可以使用 100.200.200.123 或通过
Longhorn提供了Kubernetes的完全集成。
你可以像下面这样通过Longhorn用卷备份创建一个pod:
apiVersion: v1kind: Podmetadata: name: volume-test namespace: defaultspec: containers: - name: volume-test image: nginx:stable-alpine imagePullPolicy: IfNotPresent volumeMounts: - name: voll mountPath: /data ports: - containerPort: 80 volumes: - name: voll flexVolume: driver: "rancher.io/longhorn" fsType: "ext4" options: size: "2Gi" numberOfReplicas: "3" staleReplicaTimeout: "20" fromBackup: ""
Longhorn还支持动态的provisioner。比如,你可以在Kubernetes像这样定义一个StorageClass:
kind: StorageClassapiVersion: storage.k8s.io/v1metadata: name: longhornprovisioner: rancher.io/longhornparameters: numberOfReplicas: "3" staleReplicaTimeout: "30" fromBackup: ""
接着创建一个PVC(PersistentVolumeClaim)并在Pod中使用它:
apiVersion: v1kind: PersistentVolumeClaimmetadata: name: longhorn-volv-pvcspec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 2Gi---apiVersion: v1kind: Podmetadata: name: volume-test namespace: defaultspec: containers: - name: volume-test image: nginx:stable-alpine imagePullPolicy: IfNotPresent volumeMounts: - name: volv mountPath: /data ports: - containerPort: 80 volumes: - name: volv persistentVolumeClaim: claimName: longhorn-volv-pvc
"Longhorn怎么实现Kubernetes集群的持久化存储"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!