• Kubernetes Submit Queue's avatar
    Merge pull request #64386 from andyzhangx/azuredisk-sizegrow · 0647cff9
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
    
    Add azuredisk PV size grow feature
    
    **What this PR does / why we need it**:
    According to kubernetes/features#284, add size grow feature for azure disk
    
    **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
    Fixes #56463
    
    **Special notes for your reviewer**:
     - This feature is ony for azure managed disk, and if that disk is already attached to a running VM, disk resize will fail as following:
    ```
    $ kubectl describe pvc pvc-azuredisk
    Events:
      Type     Reason              Age               From           Message
      ----     ------              ----              ----           -------
      Warning  VolumeResizeFailed  51s (x3 over 3m)  volume_expand  Error expanding volume "default/pvc-azuredisk" of plugin kubernetes.io/azure-disk : disk.DisksClient#CreateOrUpdate: Failure responding to request: StatusCode=409 -- Original Error: autorest/azure: Service returned an error. Status=409 Code="OperationNotAllowed" Message="Cannot resize disk andy-mg1102-dynamic-pvc-d2d00dd9-6185-11e8-a6c3-000d3a0643a8 while it is attached to running VM /subscriptions/.../resourceGroups/.../providers/Microsoft.Compute/virtualMachines/k8s-agentpool-17607330-0."
    ```
    
    **How to use this feature**
     - `kubectl edit pvc pvc-azuredisk` to change azuredisk PVC size from 6GB to 10GB
    ```
    # Please edit the object below. Lines beginning with a '#' will be ignored,
    # and an empty file will abort the edit. If an error occurs while saving this file will be
    # reopened with the relevant failures.
    #
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      annotations:
    ...
        volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/azure-disk
      creationTimestamp: 2018-05-27T08:13:23Z
      finalizers:
      - kubernetes.io/pvc-protection
      name: pvc-azuredisk
    ...
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 6Gi
      storageClassName: hdd
      volumeMode: Filesystem
      volumeName: pvc-d2d00dd9-6185-11e8-a6c3-000d3a0643a8
    status:
      accessModes:
      - ReadWriteOnce
      capacity:
        storage: 6Gi
      conditions:
      - lastProbeTime: null
        lastTransitionTime: 2018-05-27T08:14:34Z
        message: Waiting for user to (re-)start a pod to finish file system resize of
          volume on node.
        status: "True"
        type: FileSystemResizePending
      phase: Bound
    ```
    
     - After resized, `/mnt/disk` is still 6GB
    ```
    $ kubectl exec -it nginx-azuredisk -- bash
    # df -h
    Filesystem      Size  Used Avail Use% Mounted on
    ...
    /dev/sdf        5.8G   15M  5.5G   1% /mnt/disk
    ...
    ```
    
     - After user run `sudo resize2fs /dev/sdf` in agent node, `/mnt/disk` becomes 10GB now:
    ```
    $ kubectl exec -it nginx-azuredisk -- bash
    # df -h
    Filesystem      Size  Used Avail Use% Mounted on
    ...
    /dev/sdf        9.8G   16M  9.3G   1% /mnt/disk
    ...
    ```
    
    **Release note**:
    
    ```
    Add azuredisk size grow feature
    ```
    
    /sig azure
    /assign @feiskyer @karataliu @gnufied 
    cc @khenidak
    0647cff9
Name
Last commit
Last update
..
pkg Loading commit data...
BUILD Loading commit data...
OWNERS Loading commit data...