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做动态存储的过程。

  • 相关阅读:
    两年工作感想
    ASP常用的38个内置函数
    asp汉字转换成汉语拼音
    js高级表格排序
    使用XmlHttpRequest对象调用Web Services 服务
    75个最佳Web设计资源
    C# FTP操作类
    存储过程操作类
    Windows Mobile 5.0 SDK 下载地址
    链表C#实现
  • 原文地址:https://www.cnblogs.com/changruijun/p/10941414.html
Copyright © 2011-2022 走看看