溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Longhorn怎么實現(xiàn)Kubernetes集群的持久化存儲

發(fā)布時間:2021-09-01 15:09:58 來源:億速云 閱讀:217 作者:chen 欄目:云計算

本篇內(nèi)容介紹了“Longhorn怎么實現(xiàn)Kubernetes集群的持久化存儲”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

Longhorn功能概述

  • 共享資源池:將本地磁盤或安裝在計算或?qū)S么鎯χ鳈C(jī)中的網(wǎng)絡(luò)存儲形成共享資源池。

  • 為容器和虛擬機(jī)創(chuàng)建塊存儲卷:你可以指定volume的大小,IOPS的需求,以及你想要的跨主機(jī)的同步replica的數(shù)量(這里的主機(jī)是指那些為volume提供存儲資源的主機(jī))。replica是在底層磁盤或網(wǎng)絡(luò)存儲上精簡配置的。

  • 為每個volume創(chuàng)建一個專用的存儲控制器:這可能是與大多數(shù)現(xiàn)有的分布式存儲系統(tǒng)相比,Longhorn最具特色的功能。大多數(shù)現(xiàn)有的分布式存儲系統(tǒng)通常采用復(fù)雜的控制器軟件來服務(wù)于從數(shù)百到數(shù)百萬不等的volume。但Longhorn不同,每個控制器上只有一個volume,Longhorn將每個volume都轉(zhuǎn)變成了微服務(wù)。

  • 跨計算或存儲主機(jī)調(diào)度多個replica:Longhorn會監(jiān)測每一個replica的健康狀況,對問題進(jìn)行維修,并在必要時重新生成replica。

  • 以Docker容器的形式操作存儲控制器和replica:例如,一個volume有三個replica,就意味著有四個容器。

  • 為每個volume分配多個存儲“前端”:常見的前端包括Linux內(nèi)核設(shè)備(映射到/ dev / longhorn)和iSCSI目標(biāo)。 Linux內(nèi)核設(shè)備適用于支持Docker volume,而iSCSI目標(biāo)更適合支持QEMU / KVM和VMware volume。

  • 創(chuàng)建volume快照和AWS EBS風(fēng)格的備份:您可以為每個volume創(chuàng)建多達(dá)254個快照,這些快照可以逐個備份到NFS或S3兼容的輔助存儲中。只有更改的字節(jié)會在備份操作期間被復(fù)制和存儲。

  • 指定定期快照和備份操作的計劃:您可以指定這些操作的頻率(每小時,每天,每周,每月和每年)、執(zhí)行這些操作的確切時間(例如,每個星期日凌晨3:00),以及保留多少個循環(huán)快照和備份集。

支持任何Kubernetes集群的持久性存儲

Longhorn v0.2 支持任何Kubernetes集群的持久性存儲。一旦被部署到Kubernetes集群上,Longhorn會自動地將Kubernetes集群中所有節(jié)點上全部可用的本地存儲聚為集群,產(chǎn)生復(fù)制的以及分布式的塊存儲。你可以在Longhorn volume上執(zhí)行快照和備份操作,并將它們同步復(fù)制到多個節(jié)點上。

我們已經(jīng)移植了Longhorn Manager作為Kubernetes Controller。所有Longhorn狀態(tài)都存儲為Custom Resource Definitions(自定義資源定義,CRD)。Longhorn也不需要單獨的etcd服務(wù)器。另外,Longhorn Manager公開了執(zhí)行Longhorn volume操作和快照 / 備份操作的API,這些API將在Longhorn UI和Kubernetes Flexvolume驅(qū)動程序執(zhí)行操作的過程中使用。

運行下面的這條指令,就可以在你的Kubernetes集群上部署整個Longhorn存儲系統(tǒng):

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服務(wù)找到適合的IP:kubectl -n longhorn-system get svc

Longhorn怎么實現(xiàn)Kubernetes集群的持久化存儲

現(xiàn)在你可以使用 100.200.200.123 或通過 <node_ip>:12345 訪問UI。

Longhorn提供了Kubernetes的完全集成。

你可以像下面這樣通過Longhorn用卷備份創(chuàng)建一個pod:

apiVersion: v1
kind: Pod
metadata:
  name: volume-test
  namespace: default
spec:
  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還支持動態(tài)的provisioner。比如,你可以在Kubernetes像這樣定義一個StorageClass:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: longhorn
provisioner: rancher.io/longhorn
parameters:
  numberOfReplicas: "3"
  staleReplicaTimeout: "30"
  fromBackup: ""

接著創(chuàng)建一個PVC(PersistentVolumeClaim)并在Pod中使用它:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: longhorn-volv-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: longhorn
 resources:
    requests:
      storage: 2Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: volume-test
  namespace: default
spec:
  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怎么實現(xiàn)Kubernetes集群的持久化存儲”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI