Dynamic Volume Provisioning - Azure Disks with AKS in Azure 
讀書會來到第十三章 - Kubernetes 和整合儲存解決方案
有提到 動態磁碟區擴充 ( Dynamic Volume Provisioning )
書上只有短暫的範例, 沒有實做, 所以就來實做看看
參考官方文件
看到有關於動態的部份有兩種
- Azure 磁碟 - 動態
- 供單一 Pod 使用, ReadWriteOnce
- Azure 檔案 - 動態
- 供多個 Pod 使用, ReadWriteMany
書上提到的是 azure-disk, 那就先從 Azure 磁碟 - 動態開始吧
Storage Class 官方文件 https://kubernetes.io/docs/concepts/storage/storage-classes/#azure-disk
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:
 
 
沒有留言:
張貼留言