AKS使用Azure Disk实现动态持久化存储(上)

上一篇文章中我们讲了Azure如何使用Azure File实现动态持久化存储,这篇文章我们一起来实践下AKS如何使用Azure Disk实现动态持久化存储。

(1)准备集群环境

同上一篇一样,开始之前先创建好集群并升级CLI至最新版本。

(2)开始实践

每一个AKS集群中默认都有预创建好的两类storage classe,运行 kubectl get sc 查看如下:

除了第一个azurefile是上一篇文章中创建的一个类,default默认后端绑定的是Azure HDD 类型的磁盘,managed-premium 默认后端绑定的是SSD类型的磁盘。我们用managed-premium来创建一个PVC:

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

创建一个pod,命名为mypod2,并将磁盘挂载到/data文件夹

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

执行kubectl apply -f azure-pvc-disk.yaml:

然后去pod中/data文件夹下创建一个名为hello的文件夹用于验证:

这时候我们回到portal页面上MC_开头的资源组里面刷新下,发现多了一个kubernetes-dynamic-pvc-开头的磁盘,名称就是上图中红框圈出来的卷名称,这是创建的时候自动命名的,点进去查看相关信息,磁盘所有者VM显示就是mypod2所在的node节点上:

 

最后我们用磁盘创建快照再生成一个新的磁盘,最后再挂载到新的pod上的方式来检验下磁盘同步是否成功:

#查找diskID,pvc-换成自己的
$ az disk list --query '[].id | [?contains(@,`pvc-faf0f176-8b8d-11e8-923b-deb28c58d242`)]' -o tsv

#创建快照
$ az snapshot create \
    --resource-group MC_myResourceGroup_myAKSCluster_eastus \
    --name pvcSnapshot \
    --source xxx #xxx部分换成上一个命令输出的diskID,类似
/subscriptions/<guid>/resourceGroups/MC_MYRESOURCEGROUP_MYAKSCLUSTER_EASTUS/providers/MicrosoftCompute/disks/kubernetes-dynamic-pvc-faf0f176-8b8d-11e8-923b-deb28c58d24


#创建新的磁盘
az disk create --resource-group MC_myResourceGroup_myAKSCluster_eastus --name pvcRestored --source pvcSnapshot


#拿到新的磁盘ID
az disk show --resource-group MC_myResourceGroup_myAKSCluster_eastus --name pvcRestored --query id -o tsv

用生成的新的磁盘ID挂载到新的pod上,yml文件如下:

kind: Pod
apiVersion: v1
metadata:
  name: mypod3
spec:
  containers:
  - name: mypod3
    image: nginx:1.15.5
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 250m
        memory: 256Mi
    volumeMounts:
    - mountPath: "/test"
      name: volume
  volumes:
    - name: volume
      azureDisk:
        kind: Managed
        diskName: pvcRestored
        diskURI: /subscriptions/<guid>/resourceGroups/MC_myResourceGroupAKS_myAKSCluster_eastus/providers/Microsoft.Compute/disks/pvcRestored

最后我们来检验下新的pod是否存在/test/hello文件夹:

验证没问题,至此我们实现了本节内容的目标,具体更详细的可以参考:https://docs.microsoft.com/en-us/azure/aks/azure-disks-dynamic-pv

下一篇文章我们将实践一个AKS上mysql使用Azure Disk做动态存储的过程。

 

posted @ 2019-06-10 23:17 搪瓷小娃娃 阅读(...) 评论(...) 编辑 收藏