• Kubernetes Submit Queue's avatar
    Merge pull request #67229 from feiskyer/unzoned-disks · 2a81c37d
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue (batch tested with PRs 66884, 67410, 67229, 67409). 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 node affinity for Azure unzoned managed disks
    
    **What this PR does / why we need it**:
    
    Continue of [Azure Availability Zone feature](https://github.com/kubernetes/features/issues/586).
    
    Add node affinity for Azure unzoned managed disks, so that unzoned disks only scheduled to unzoned nodes.
    
    This is required because Azure doesn't allow attaching unzoned disks to zoned VMs.
    
    **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 #
    
    **Special notes for your reviewer**:
    
    Unzoned nodes would label `failure-domain.beta.kubernetes.io/zone=0` and the value is fault domain ( while availability zone is used for zoned nodes). So fault domain is used to populate unzoned disks.
    
    Since there are at most 3 fault domains in each region, the PR adds 3 terms for them:
    
    ```yaml
    kubectl describe pv pvc-bdf93a67-9c45-11e8-ba6f-000d3a07de8c
    Name:              pvc-bdf93a67-9c45-11e8-ba6f-000d3a07de8c
    Labels:            <none>
    Annotations:       pv.kubernetes.io/bound-by-controller=yes
                       pv.kubernetes.io/provisioned-by=kubernetes.io/azure-disk
                       volumehelper.VolumeDynamicallyCreatedByKey=azure-disk-dynamic-provisioner
    Finalizers:        [kubernetes.io/pv-protection]
    StorageClass:      azuredisk-unzoned
    Status:            Bound
    Claim:             default/unzoned-pvc
    Reclaim Policy:    Delete
    Access Modes:      RWO
    Capacity:          5Gi
    Node Affinity:     
      Required Terms:  
        Term 0:        failure-domain.beta.kubernetes.io/region in [southeastasia]
                       failure-domain.beta.kubernetes.io/zone in [0]
        Term 1:        failure-domain.beta.kubernetes.io/region in [southeastasia]
                       failure-domain.beta.kubernetes.io/zone in [1]
        Term 2:        failure-domain.beta.kubernetes.io/region in [southeastasia]
                       failure-domain.beta.kubernetes.io/zone in [2]
    Message:           
    Source:
        Type:         AzureDisk (an Azure Data Disk mount on the host and bind mount to the pod)
        DiskName:     k8s-5b3d7b8f-dynamic-pvc-bdf93a67-9c45-11e8-ba6f-000d3a07de8c
        DiskURI:      /subscriptions/<subscription>/resourceGroups/<rg-name>/providers/Microsoft.Compute/disks/k8s-5b3d7b8f-dynamic-pvc-bdf93a67-9c45-11e8-ba6f-000d3a07de8c
        Kind:         Managed
        FSType:       
        CachingMode:  None
        ReadOnly:     false
    Events:           <none>
    ```
    
    **Release note**:
    
    ```release-note
    Add node affinity for Azure unzoned managed disks
    ```
    
    /sig azure
    /kind feature
    
    /cc @brendandburns @khenidak @andyzhangx @msau42
    2a81c37d
Name
Last commit
Last update
..
aws_ebs Loading commit data...
azure_dd Loading commit data...
azure_file Loading commit data...
cephfs Loading commit data...
cinder Loading commit data...
configmap Loading commit data...
csi Loading commit data...
downwardapi Loading commit data...
empty_dir Loading commit data...
fc Loading commit data...
flexvolume Loading commit data...
flocker Loading commit data...
gce_pd Loading commit data...
git_repo Loading commit data...
glusterfs Loading commit data...
host_path Loading commit data...
iscsi Loading commit data...
local Loading commit data...
nfs Loading commit data...
photon_pd Loading commit data...
portworx Loading commit data...
projected Loading commit data...
quobyte Loading commit data...
rbd Loading commit data...
scaleio Loading commit data...
secret Loading commit data...
storageos Loading commit data...
testing Loading commit data...
util Loading commit data...
validation Loading commit data...
vsphere_volume Loading commit data...
BUILD Loading commit data...
OWNERS Loading commit data...
doc.go Loading commit data...
metrics_cached.go Loading commit data...
metrics_du.go Loading commit data...
metrics_du_test.go Loading commit data...
metrics_errors.go Loading commit data...
metrics_nil.go Loading commit data...
metrics_nil_test.go Loading commit data...
metrics_statfs.go Loading commit data...
metrics_statfs_test.go Loading commit data...
plugins.go Loading commit data...
plugins_test.go Loading commit data...
volume.go Loading commit data...
volume_linux.go Loading commit data...
volume_unsupported.go Loading commit data...