Предоставление PVC с правильной информацией о зоне в AKS - PullRequest
0 голосов
/ 16 марта 2020

Я делаю кластерное резервное копирование и восстановление из GCP в Azure, используя Velero

Постоянные тома в k8 имеют NodeAffinity, в котором есть селекторы зоны и региона, которые не не совпадают с метками на узле Azure из-за различий в зонах / регионах двух провайдеров GCP.

например, следующие метки на узлах GCP

failure-domain.beta.kubernetes.io/region=australia-southeast1
failure-domain.beta.kubernetes.io/zone=australia-southeast1-a

и на Azure

failure-domain.beta.kubernetes.io/region=australiaeast
failure-domain.beta.kubernetes.io/zone=1

Итак, я попытался создать storage-class в Azure, как показано ниже:

kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
  name: fast-azure
provisioner: kubernetes.io/azure-disk
allowVolumeExpansion: true
parameters:
  cachingmode: ReadOnly
  kind: Managed
  storageaccounttype: Premium_LRS
volumeBindingMode: WaitForFirstConsumer
allowedTopologies:
- matchLabelExpressions:
  - key: failure-domain.beta.kubernetes.io/zone
    values:
    - "1"
  - key: failure-domain.beta.kubernetes.io/region
    values:
    - australiaeast

Но когда я пытаюсь создать PV C используя этот класс хранения, я получаю следующую ошибку:

arning  ProvisioningFailed    1s (x6 over 29s)   persistentvolume-controller  Failed to provision volume with StorageClass "fast-azure": compute.DisksClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="InvalidAvailabilityZone" Message="The zone(s) '' for resource 'Microsoft.Compute/disks/kubernetes-dynamic-pvc-105101ea-2c58-4a5a-8eeb-386c7489b782' is not supported. The supported zones for location 'australiaeast' are '1,2,3'"

Похоже, что он читает пустое '' имя зоны. Как правильно написать этот класс хранения для Azure?

...