K3s 卷和存儲(chǔ)

2022-08-23 10:19 更新

卷和存儲(chǔ)

當(dāng)部署一個(gè)需要保留數(shù)據(jù)的應(yīng)用程序時(shí),你需要?jiǎng)?chuàng)建持久存儲(chǔ)。持久存儲(chǔ)允許您從運(yùn)行應(yīng)用程序的 pod 外部存儲(chǔ)應(yīng)用程序數(shù)據(jù)。即使應(yīng)用程序的 pod 發(fā)生故障,這種存儲(chǔ)方式也可以使您維護(hù)應(yīng)用程序數(shù)據(jù)。

持久卷(PV)是 Kubernetes 集群中的一塊存儲(chǔ),而持久卷聲明(PVC)是對(duì)存儲(chǔ)的請(qǐng)求。關(guān)于 PV 和 PVC 的工作原理,請(qǐng)參閱有關(guān)存儲(chǔ)的 Kubernetes 官方文檔。

本頁(yè)介紹了如何通過(guò) local storage provider 或 Longhorn 來(lái)設(shè)置持久存儲(chǔ)。

K3s 的存儲(chǔ)有什么變化?

K3s 刪除了幾個(gè)可選的卷插件和所有內(nèi)置的(有時(shí)被稱為 "樹內(nèi)")云提供商。我們這樣做是為了實(shí)現(xiàn)更小的二進(jìn)制文件大小,并避免對(duì)第三方云或數(shù)據(jù)中心技術(shù)和服務(wù)的依賴,這些技術(shù)和服務(wù)在許多 K3s 的使用案例中可能無(wú)法使用。我們之所以能夠這樣做,是因?yàn)閯h除這些插件既不影響 Kubernetes 的核心功能,也不影響一致性。

以下是已經(jīng)從 K3s 中刪除的卷插件:

  • cephfs
  • fc
  • flocker
  • git_repo
  • glusterfs
  • portworx
  • quobyte
  • rbd
  • storageos

這兩個(gè)組件都有樹外的替代品,可以與 K3s 一起使用:Kubernetes 的容器存儲(chǔ)接口(CSI)云提供商接口(CPI)。

Kubernetes 維護(hù)者正在積極將樹內(nèi)卷插件遷移到 CSI 驅(qū)動(dòng)。有關(guān)這一遷移的更多信息,請(qǐng)參考這里。

設(shè)置 Local Storage Provider

K3s 自帶 Rancher 的 Local Path Provisioner,這使得能夠使用各自節(jié)點(diǎn)上的本地存儲(chǔ)來(lái)開箱即用地創(chuàng)建持久卷聲明。下面我們介紹一個(gè)簡(jiǎn)單的例子。有關(guān)更多信息,請(qǐng)參考此處的官方文檔。

創(chuàng)建一個(gè)由 hostPath 支持的持久卷聲明和一個(gè)使用它的 pod:

pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: local-path-pvc
  namespace: default
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: local-path
  resources:
    requests:
      storage: 2Gi

pod.yaml

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: local-path-pvc

應(yīng)用 yaml:

kubectl create -f pvc.yaml
kubectl create -f pod.yaml

確認(rèn) PV 和 PVC 已創(chuàng)建:

kubectl get pv
kubectl get pvc

狀態(tài)應(yīng)該都為 Bound

設(shè)置 Longhorn

注意: 目前 Longhorn 只支持 amd64 和 arm64(實(shí)驗(yàn)性)。

K3s 支持 Longhorn。Longhorn 是 Kubernetes 的一個(gè)開源分布式塊存儲(chǔ)系統(tǒng)。

下面我們介紹一個(gè)簡(jiǎn)單的例子。有關(guān)更多信息,請(qǐng)參閱此處的官方文檔。

應(yīng)用 longhorn.yaml 來(lái)安裝 Longhorn:

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml

Longhorn 將被安裝在命名空間?longhorn-system?中。

應(yīng)用 yaml 創(chuàng)建 PVC 和 pod:

kubectl create -f pvc.yaml
kubectl create -f pod.yaml

pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: longhorn-volv-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: longhorn
  resources:
    requests:
      storage: 2Gi

pod.yaml

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

確認(rèn) PV 和 PVC 已創(chuàng)建:

kubectl get pv
kubectl get pvc

狀態(tài)應(yīng)該都為 Bound


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)