Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается безопасное перемещение постоянных томов диска Azure из одного кластера Службы Azure Kubernetes (AKS) в другую в той же подписке или в другой подписке. Целевая подписка должна находиться в одном регионе.
Последовательность шагов для выполнения этого перемещения:
- Чтобы избежать потери данных, убедитесь, что состояние ресурса диска Azure в исходном кластере AKS не в подключенном состоянии.
- Переместите ресурс диска Azure в целевую группу ресурсов в той же подписке или другой подписке.
- Убедитесь, что перемещение ресурса диска Azure выполнено успешно.
- Создайте постоянный том (PV) и запрос на постоянный том (PVC), а затем смонтируйте перемещаемый диск как том на pod в целевом кластере.
Перед тем как начать
- Убедитесь, что вы установили и настроили Azure CLI версии 2.0.59 или более поздней версии. Чтобы узнать версию, выполните команду
az --version. Если вам нужно установить или обновить, см. статью "Установка Azure CLI". - Ознакомьтесь с подробными сведениями и требованиями к перемещению ресурсов между различными регионами в новой группе ресурсов или подписке. Перед перемещением ресурсов в этой статье обязательно просмотрите контрольный список .
- Исходный кластер должен иметь один или несколько постоянных томов с подключенным диском Azure.
- В целевой подписке должен быть кластер AKS.
Проверка состояния тома диска
Важно избежать риска повреждения данных, несоответствий или потери данных при работе с постоянными томами. Чтобы устранить эти риски во время миграции или перемещения, сначала необходимо убедиться, что том диска не подключен, выполнив следующие действия.
Определите группу ресурсов узла, в которой размещаются управляемые диски Azure, с помощью
az aks showкоманды и добавьте--query nodeResourceGroupэтот параметр.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsvВыходные данные команды будут выглядеть примерно так:
MC_myResourceGroup_myAKSCluster_eastusВывод списка управляемых дисков с помощью
az disk listкоманды. Ссылка на группу ресурсов, возвращенную на предыдущем шаге.az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastusПросмотрите список и запишите, какие тома дисков вы планируете переместить в другой кластер. Также проверьте состояние диска, проверив наличие свойства
diskState. Выходные данные команды — это сжатый пример.{ "LastOwnershipUpdateTime": "2023-04-25T15:09:19.5439836+00:00", "creationData": { "createOption": "Empty", "logicalSectorSize": 4096 }, "diskIOPSReadOnly": 3000, "diskIOPSReadWrite": 4000, "diskMBpsReadOnly": 125, "diskMBpsReadWrite": 1000, "diskSizeBytes": 1073741824000, "diskSizeGB": 1000, "diskState": "Unattached",Примечание
Обратите внимание на значение поля
resourceGroupдля каждого диска, который вы хотите переместить из указанных выше выходных данных. Эта группа ресурсов — это группа ресурсов узла, а не группа ресурсов кластера. Для перемещения дисков вам потребуется имя этой группы ресурсов.Если
diskStateпоказываетAttached, сначала определите, обращаются ли какие-либо рабочие нагрузки к тому и остановите их. Через период времени состояние диска возвращает состояниеUnattachedи затем может быть перемещено.
Перемещение постоянного тома
Чтобы переместить постоянный том или тома в другой кластер AKS, выполните действия, описанные в разделе "Перемещение ресурсов Azure в новую группу ресурсов или подписку". Вы можете использовать портал Azure, Azure PowerShell или azure CLI для выполнения миграции.
В ходе этого процесса вы ссылаетесь:
- Имя или идентификатор ресурса группы ресурсов исходного узла, на котором размещены управляемые диски Azure. Имя группы ресурсов узла можно найти, перейдя на панель мониторинга дисков на портале Azure и отметив связанную группу ресурсов для диска.
- Имя или идентификатор ресурса целевой группы ресурсов для перемещения управляемых дисков.
- Имя или идентификатор ресурсов управляемых дисков.
Примечание
Из-за зависимостей между поставщиками ресурсов эта операция может занять до четырех часов.
Убедитесь, что том диска был перемещён.
После перемещения тома диска в целевую группу ресурсов кластера проверьте ресурс в списке групп ресурсов с помощью az disk list команды. Ссылка на целевую группу ресурсов, в которой были перемещены ресурсы. В этом примере диски были перемещены в группу ресурсов с именем MC_myResourceGroup_myAKSCluster_eastus.
az disk list --resource-group MC_myResourceGroup_myAKSCluster_eastus
Подключите перемещённый диск в качестве тома
Чтобы подключить том перемещаемого диска, создайте статический постоянный том с идентификатором ресурса, скопированным на предыдущих шагах, утверждением постоянного тома и в этом примере простым модулем pod.
Создайте файл pv-azuredisk.yaml с постоянным объёмом. Обновите поле volumeHandle с идентификатором ресурса диска на предыдущем шаге.
apiVersion: v1 kind: PersistentVolume metadata: name: pv-azuredisk spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: managed-csi csi: driver: disk.csi.azure.com readOnly: false volumeHandle: /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MC_rg_azure_aks-pvc-target_eastus/providers/Microsoft.Compute/disks/pvc-aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e volumeAttributes: fsType: ext4Создайте файл pvc-azuredisk.yaml с заявкой PersistentVolumeClaim для PersistentVolume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: pv-azuredisk storageClassName: managed-csiСоздайте PersistentVolume и PersistentVolumeClaim с помощью команды
kubectl applyи ссылаясь на созданные вами два файла YAML.kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yamlУбедитесь, что объект PersistentVolumeClaim создается и привязан к PersistentVolume с помощью
kubectl getкоманды.kubectl get pvc pvc-azurediskВыходные данные команды будут выглядеть примерно так:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pv-azuredisk 20Gi RWO 5sЧтобы ссылаться на PersistentVolumeClaim, создайте файл azure-disk-pod.yaml. В примере манифеста имя модуля pod — mypod.
apiVersion: v1 kind: Pod metadata: name: mypod spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine name: mypod resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: azure mountPath: /mnt/azure volumes: - name: azure persistentVolumeClaim: claimName: pvc-azurediskПримените конфигурацию и подключите том с помощью команды kubectl apply .
kubectl apply -f azure-disk-pod.yamlПроверьте состояние pod и данные, перенесенные вместе с томом, подключенным внутри файловой системы, на
/mnt/azure. Сначала получите статус pod, выполнив командуkubectl get.kubectl get podsВыходные данные команды будут выглядеть примерно так:
NAME READY STATUS RESTARTS AGE mypod 1/1 Running 0 4m1sПроверьте данные внутри смонтированного тома
/mnt/azureс помощью командыkubectl exec.kubectl exec -it mypod -- ls -l /mnt/azure/Выходные данные команды будут выглядеть примерно так:
total 28 -rw-r--r-- 1 root root 0 Jan 11 10:09 file-created-in-source-aks
Дальнейшие шаги
- Дополнительные сведения о решениях хранилища на основе дисков см. в разделе "Решения на основе дисков" в AKS.
- Дополнительные сведения о рекомендациях по хранению см. в рекомендациях по хранению и резервному копированию в службе Azure Kubernetes.