AKS使用Azure File實(shí)現(xiàn)動態(tài)持久化存儲

來源:搪瓷小娃娃博客園
作者:搪瓷小娃娃
時間:2020-08-11
2728
本篇文章就帶領(lǐng)大家操作一遍,如何動態(tài)創(chuàng)建Azure File文件共享,以供集群中的多個Pod使用。

如我們所知,Kubernetes通過Volume為集群中的容器提供存儲,通過Persistent Volume和Persistent Volume Claim實(shí)現(xiàn)Volume的靜態(tài)供給和動態(tài)供給。Azure File和Azure Disk也在Kubernetes支持的動態(tài)供給PV的Provisioner之列(如下圖:https://kubernetes.io/docs/concepts/storage/storage-classes/#provisioner),本篇文章就帶領(lǐng)大家操作一遍,如何動態(tài)創(chuàng)建Azure File文件共享,以供集群中的多個Pod使用。

ia_1200000001.jpg

(1)準(zhǔn)備工作:

創(chuàng)建好一個AKS集群,并且升級Azure CLI到最新版本

登錄到你創(chuàng)建好的集群中,確認(rèn)下各Node節(jié)點(diǎn)狀態(tài)是否正常:

ia_1200000002.jpg

(2)添加StorageClass:

創(chuàng)建一個azure-file-sc.yaml文件并編輯如下:

ia_1200000003.jpg

如上我們創(chuàng)建的這個Storage Class封裝的名稱(name)為azurefile,provisioner指定為kubernetes.io/azure-file,參數(shù)parameter部分,指定冗余形式,目前支持Standard的三張,其他暫不支持:

Standard_LRS-standard locally redundant storage(LRS)

Standard_GRS-standard geo-redundant storage(GRS)

Standard_RAGRS-standard read-access geo-redundant storage(RA-GRS)

創(chuàng)建好之后執(zhí)行kubectl apply-f azure-file-sc.yaml。

(3)創(chuàng)建集群角色并綁定

作為Azure平臺上的服務(wù),AKS仍然使用的RBAC去控制集群的權(quán)限和安全。為了使Azure平臺能夠創(chuàng)建所需要的存儲資源,這一步我們需要添加一個集群角色:

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRole

metadata:

  name: system:azure-cloud-provider

rules:

- apiGroups: ['']

  resources: ['secrets']

  verbs:     ['get','create']

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

  name: system:azure-cloud-provider

roleRef:

  kind: ClusterRole

  apiGroup: rbac.authorization.k8s.io

  name: system:azure-cloud-provider

subjects:

- kind: ServiceAccount

  name: persistent-volume-binder

  namespace: kube-system

執(zhí)行kubectl apply-f azure-pvc-roles.yaml如下:

ia_1200000004.jpg

(4)創(chuàng)建PVC:

這一步就是動態(tài)申請存儲資源的文件了,命名這個PVC yaml文件為azure-file-pvc.yml,編輯如下,指定metadata為第(2)步中的StorageClassName,配置好訪問模式和容量,編輯好保存并運(yùn)行,可以看到這個PVC已經(jīng)被成功創(chuàng)建。

   apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: azurefile

spec:

  accessModes:

    - ReadWriteMany

  storageClassName: azurefile

  resources:

    requests:

      storage: 5Gi

ia_1200000005.jpg

(5)使用并檢驗(yàn)

首先我們創(chuàng)建一個pod,命令為mypod1.yml,這個pod運(yùn)行的是一個busybox鏡像,通過PVC將Azure File mount到容器的/datatest目錄中。

apiVersion: v1

kind: Pod

metadata:

  name: mypod1

spec:

  containers:

  - image: busybox

    name: mycontainer1

    volumeMounts:

    - mountPath: /datatest

      name: datatest

    args:

    - /bin/sh

    - -c

    - sleep 30000

  volumes:

  - name: datatest

    persistentVolumeClaim:

      claimName: my-azurefile-pvc

然后依次執(zhí)行:

kubectl apply -f mypod1.yaml

#查看pod狀態(tài)

kubectl get pod -o wide

#在pod里的datatest目錄下創(chuàng)建一個名字為hello的文件

kubectl exec mypod1 touch /datatest/hello

ia_1200000006.jpg

如上是截圖,在pod中創(chuàng)建完名字為hello的文件后,我們檢驗(yàn)下這個文件有沒有更新到Azure File中,這里說明一下,AKS動態(tài)配置完后的AzureFile會默認(rèn)創(chuàng)建在MC_的集群中,portal上找到這個存儲賬戶進(jìn)去,找到Azure File下面的文件,如截圖,發(fā)現(xiàn)hello.txt已經(jīng)存在了。

ia_1200000007.jpg

ia_1200000008.jpg

以上就是整個實(shí)驗(yàn)過程,演示了AKS如何使用Azure File實(shí)現(xiàn)動態(tài)持久化存儲。希望對大家有用。

立即登錄,閱讀全文
原文鏈接:點(diǎn)擊前往 >
文章來源:搪瓷小娃娃博客園
版權(quán)說明:本文內(nèi)容來自于搪瓷小娃娃博客園,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點(diǎn),不代表快出海對觀點(diǎn)贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多