星期四, 2月 07, 2019

Dynamic Volume Provisioning - Azure Disks with AKS in Azure

Dynamic Volume Provisioning - Azure Disks with AKS in Azure

讀書會來到第十三章 - Kubernetes 和整合儲存解決方案
有提到 動態磁碟區擴充 ( Dynamic Volume Provisioning )
書上只有短暫的範例, 沒有實做, 所以就來實做看看

參考官方文件

看到有關於動態的部份有兩種
  • Azure 磁碟 - 動態
    • 單一 Pod 使用, ReadWriteOnce
  • Azure 檔案 - 動態
    • 多個 Pod 使用, ReadWriteMany

書上提到的是 azure-disk, 那就先從 Azure 磁碟 - 動態開始吧


AKS 有內建兩個 storageclasses, 分別是 default ( HDD )與 managed-premium (SSD)
可以使用 kubectl  get sc 觀察
> kubectl  get  sc

NAME                PROVISIONER       AGE
default (default)   kubernetes.io/azure-disk   7d
managed-premium     kubernetes.io/azure-disk   198d

那如何知道 sc 是那個名稱的縮寫呢?
可以使用 kubectl  api-resources 來查詢

> kubectl  api-resources

NAME                              SHORTNAMES APIGROUP        NAMESPACED KIND
storageclasses                    sc storage.k8s.io                 false StorageClass


還沒建立之前, 先觀察資訊

> kubectl  get  pvc

No resources found.


參考範例, 建立一個 azure-premium.yaml 檔案
> vi   azure-premium.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: azure-managed-disk20190207
spec:
 accessModes:
 - ReadWriteOnce
 storageClassName: managed-premium
 resources:
   requests:
     storage: 5Gi

使用 kubectl apply 建立
> kubectl  apply  -f  azure-premium.yaml
persistentvolumeclaim/azure-managed-disk20190207 created

再次觀察資訊
> kubectl  get  pvc
NAME                         STATUS VOLUME  CAPACITY ACCESS MODES STORAGECLASS      AGE
azure-managed-disk20190207   Bound pvc-23cc8866-2aea-11e9-9cae-2e861ae6099d   5Gi RWO managed-premium 1m

這邊由於 Azure 已經有內建 StorageClass, 所以不需要像書上一樣, 先建立 StorageClass
直接建立 pvc 就可以

接下來參考官方文件, 建立一個 pod 並使用剛剛 pvc disk 的 yaml 檔案
> vi   azure-pvc-disk.yaml

kind: Pod
apiVersion: v1
metadata:
 name: mypod
spec:
 containers:
 - name: mypod
   image: nginx:1.15.5
   resources:
     requests:
       cpu: 100m
       memory: 128Mi
     limits:
       cpu: 250m
       memory: 256Mi
   volumeMounts:
   - mountPath: "/mnt/azure"
     name: volume
 volumes:
   - name: volume
     persistentVolumeClaim:
       claimName: azure-managed-disk20190207

使用 kubectl  apply 指令建立
> kubectl  apply  -f  azure-pvc-disk.yaml
pod/mypod created

觀察相關資訊
> kubectl   describe  pod  mypod
中間恕略
 volume:
   Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
   ClaimName:  azure-managed-disk20190207
   ReadOnly:   false
 default-token-swswz:
   Type:        Secret (a volume populated by a Secret)
   SecretName:  default-token-swswz
   Optional:    false

當然也可以從 vscode 上面觀察


看起來在 Azure 上面使用 azure-disk 來建立 pvc 相對便利
也是多實做一個東西

今天先這樣, 找時間來實做 pvc with Azure-files with AKS

~ enjoy it

Reference:

沒有留言: