Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется для: AKS на Azure Local
В этой статье описывается создание кластеров Kubernetes в локальной среде Azure с помощью Azure CLI. Рабочий процесс выглядит следующим образом:
- Создайте кластер Kubernetes в локальной среде Azure с помощью Azure CLI. Кластер подключен к Azure Arc по умолчанию.
- При создании кластера вы предоставляете группу Microsoft Entra, содержащую список пользователей Microsoft Entra с доступом администратора кластера Kubernetes.
- Доступ к кластеру с помощью kubectl и идентификатора Microsoft Entra.
- Запустите пример многоконтейнерного приложения с веб-интерфейсом и экземпляром Redis в кластере.
Перед началом работы
- Прежде чем начать, убедитесь, что у вас есть следующие сведения от локального администратора инфраструктуры:
- Идентификатор подписки Azure — идентификатор подписки Azure, в которой используется Azure Local для развертывания и регистрации.
-
ID уникального расположения — идентификатор Azure Resource Manager уникального расположения. Настраиваемое расположение настраивается во время развертывания локального кластера Azure. Администратор инфраструктуры должен предоставить вам идентификатор Resource Manager настроенного местоположения. Этот параметр необходим для создания кластеров Kubernetes. Вы также можете получить идентификатор Resource Manager, используя
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, если администратор инфраструктуры предоставляет имя пользовательского расположения и имя группы ресурсов. -
Идентификатор сети — идентификатор Azure Resource Manager локальной логической сети Azure, созданной на следующих этапах. Администратор должен предоставить вам идентификатор логической сети. Этот параметр необходим для создания кластеров Kubernetes. Вы также можете получить идентификатор Azure Resource Manager, используя,
az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsvесли вы знаете группу ресурсов, в которой была создана логическая сеть.
- Действия, описанные в этой статье, можно выполнить на локальном компьютере разработки, чтобы создать кластер Kubernetes в удаленном развертывании Azure Local. Убедитесь, что на компьютере разработки установлена последняя версия Az CLI . Вы также можете обновить версию Az CLI с помощью
az upgrade. - Чтобы подключиться к кластеру Kubernetes из любого места, создайте группу Microsoft Entra и добавьте в нее участников. Все члены группы Microsoft Entra имеют доступ администратора кластера к кластеру. Обязательно добавьте себя в группу Microsoft Entra в качестве члена. Если вы не добавите себя, вы не можете получить доступ к кластеру Kubernetes с помощью kubectl. Дополнительные сведения о создании групп Microsoft Entra и добавлении пользователей см. в разделе "Управление группами Microsoft Entra" и членством в группах.
- Скачайте и установите kubectl на компьютере разработки. Средство командной строки Kubernetes kubectl позволяет выполнять команды в кластерах Kubernetes. Kubectl можно использовать для развертывания приложений, проверки ресурсов кластера и управления ими и просмотра журналов.
Установка расширения Azure CLI
Выполните следующие команды, чтобы установить необходимые расширения Azure CLI.
Предупреждение
Не устанавливайте следующие расширения непосредственно на локальном узле Azure. Рекомендуется установить их на клиентском компьютере, который используется для подключения к локальному экземпляру Azure.
az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade
Создание кластера Kubernetes
Используйте команду az aksarc create для создания кластера Kubernetes в AKS Arc. Перед выполнением этой команды выполните вход в Azure. Если у вас несколько подписок Azure, выберите соответствующий идентификатор подписки с помощью команды az account set . Рекомендуется использовать команду az aksarc create с флагом --validate, который проверяет входные параметры, которые вы планируете использовать. После проверки входных параметров можно выполнить az aksarc create команду без флага --validate , чтобы создать кластер Kubernetes.
az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys
Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.
Соображения
Обратите внимание на следующие рекомендации при создании кластера.
- Ключи SSH важны для устранения неполадок и сбора журналов. Не забудьте сохранить файл закрытого ключа для дальнейшего использования. Сведения о доступе к узлам см. в статье "Подключение к рабочим узлам Windows или Linux с помощью SSH".
- Вы можете использовать предварительно существующий ключ SSH или настроить ключи SSH для кластера AKS во время создания кластера. Если на локальном компьютере нет предварительно существующего ключа SSH,
--generate-ssh-keysэтот параметр требуется. Вы также можете ограничить доступ по протоколу SSH, следуя документации. Подробные инструкции см. в статье "Создание и хранение ключей SSH с помощью Azure CLI" или на портале Azure. - Если вы не включите
--generate-ssh-keysво время создания кластера и ключ SSH не существует, вы получите сообщение об ошибке. Если на локальном компьютере уже есть ключ SSH, кластер AKS повторно использует его. В этом случае это не имеет значения, указывайте--generate-ssh-keysли вы или нет. - По умолчанию ключ SSH хранится в ~/.ssh/id_rsa.pub. Во время создания кластера можно указать альтернативное расположение с помощью
--ssh-key-valueпараметра.
Внимание
Чтобы использовать Azure RBAC или идентификацию рабочей нагрузки для кластера AKS, необходимо передать нужные параметры во время создания кластера с помощью Azure CLI. В настоящее время обновление существующего кластера AKS для включения идентификации рабочих нагрузок и/или Azure RBAC не поддерживается. Чтобы получить дополнительные сведения, см. статьи «Использование Azure RBAC для авторизации Kubernetes» или «Развертывание и настройка удостоверения Workload Identity для вашего кластера».
Подключение к кластеру Kubernetes
Теперь вы можете подключиться к кластеру Kubernetes, выполнив az connectedk8s proxy команду с компьютера разработки. Перед выполнением этой команды выполните вход в Azure. Если у вас несколько подписок Azure, выберите соответствующий идентификатор подписки с помощью команды az account set .
Эта команда скачивает kubeconfig кластера Kubernetes на компьютер разработки и открывает канал подключения прокси к локальному кластеру Kubernetes. Канал открыт до тех пор, пока команда выполняется. Пусть эта команда выполняется до тех пор, пока вы хотите получить доступ к кластеру. Если время ожидания истекло, закройте окно CLI, откройте новую, а затем снова выполните команду.
Для успешного выполнения следующей команды необходимо иметь разрешения участника в группе ресурсов, в которой размещен кластер Kubernetes:
az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config
Ожидаемые выходные данные:
Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.
Оставьте эту сессию открытой и подключитесь к кластеру Kubernetes из другого терминала или командной строки. Убедитесь, что вы можете подключиться к кластеру Kubernetes, выполнив команду get kubectl. Эта команда возвращает список узлов кластера:
kubectl get node -A --kubeconfig .\aks-arc-kube-config
В следующем примере выходных данных показан узел, созданный на предыдущих шагах. Убедитесь, что этот узел находится в состоянии готовности:
NAME STATUS ROLES AGE VERSION
moc-l0ttdmaioew Ready control-plane,master 34m v1.24.11
moc-ls38tngowsl Ready <none> 32m v1.24.11
Развертывание приложения и подсистемы балансировки нагрузки
Файл манифеста Kubernetes определяет требуемое состояние кластера, например, какие образы контейнеров запускать.
Манифест можно использовать для создания всех объектов, необходимых для запуска приложения Azure Vote. Этот манифест включает два развертывания Kubernetes:
- пример приложения Azure для голосования на языке Python;
- Инстанция Redis.
Также создаются две службы Kubernetes:
- Внутренний сервис для экземпляра Redis.
- внешняя служба для доступа к приложению Azure для голосования из Интернета.
Создайте файл с именем azure-vote.yaml и скопируйте его в следующем манифесте:
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: <path to image>/oss/bitnami/redis:6.0.8
env:
- name: ALLOW_EMPTY_PASSWORD
value: "yes"
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: <path to image>/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
Разверните приложение с помощью команды kubectl apply и укажите имя YAML:
kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config
В следующем примере выходных данных показаны успешно созданные развертывания и службы:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Разверните подсистему балансировки нагрузки MetalLB, чтобы он смог назначить внешний IP-адрес для внешнего интерфейса приложения. Эти инструкции можно выполнить для развертывания расширения MetalLB на портале Azure или с помощью ИНТЕРФЕЙСА командной строки.
Тестирование приложения
При запуске приложения Служба Kubernetes предоставляет внешний интерфейс приложения в Интернете. Этот процесс может занять несколько минут.
Отслеживайте ход выполнения с помощью команды get service kubectl с помощью аргумента --watch .
kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config
EXTERNAL-IP вывод для службы azure-vote-front изначально отображается как в ожидании.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Когда адрес
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Чтобы увидеть приложение для голосования Azure в действии, откройте в веб-браузере внешний IP-адрес вашей службы.
Удаление кластера
az aksarc delete Выполните команду, чтобы очистить созданный кластер:
az aksarc delete --name $aksclustername --resource-group $resource_group