zoukankan      html  css  js  c++  java
  • 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做动态存储的过程。

  • 相关阅读:
    数据持久化的复习
    iOS: 消息通信中的Notification&KVO
    iOS 证书与签名 解惑详解
    数据持久化 技术比较
    iOS开发拓展篇-XMPP简单介绍
    iOS block并发
    Xcode把应用程序打包成ipa
    谈谈用SQLite和FMDB而不用Core Data
    cannot use the same dataset for report.dataset and page.dataset
    cxGRID中的字段怎么能以0.00的格式显示
  • 原文地址:https://www.cnblogs.com/changruijun/p/10941414.html
Copyright © 2011-2022 走看看