Создание кластеров Kubernetes с помощью Azure CLI
Область применения: Azure Stack HCI версии 23H2
В этой статье описывается создание кластеров Kubernetes в Azure Stack HCI с помощью Azure CLI. Рабочий процесс выглядит следующим образом:
- Создайте кластер Kubernetes в Azure Stack HCI 23H2 с помощью Azure CLI. Кластер подключен к Azure Arc по умолчанию.
- При создании кластера вы предоставляете группу Microsoft Entra, содержащую список пользователей Microsoft Entra с доступом администратора кластера Kubernetes.
- Доступ к кластеру с помощью kubectl и идентификатора Microsoft Entra.
- Запустите пример многоконтейнерного приложения с веб-интерфейсом и экземпляром Redis в кластере.
Подготовка к работе
- Прежде чем начать, убедитесь, что у вас есть следующие сведения от локального администратора инфраструктуры:
- Идентификатор подписки Azure— идентификатор подписки Azure, в котором Azure Stack HCI используется для развертывания и регистрации.
- Идентификатор пользовательского расположения — идентификатор Azure Resource Manager пользовательского расположения. Настраиваемое расположение настраивается во время развертывания кластера Azure Stack HCI. Администратор инфраструктуры должен предоставить идентификатор 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 Stack HCI, созданной после выполнения этих действий. Администратор должен предоставить вам идентификатор логической сети. Этот параметр необходим для создания кластеров 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 Stack HCI. Убедитесь, что на компьютере разработки установлена последняя версия 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:
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 -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys --load-balancer-count 0 --control-plane-ip $controlplaneIP
Через несколько минут выполнение команды завершается и отображаются сведения о кластере в формате JSON.
Примечание.
- Значение ключа SSH — это открытый ключ для доступа к узлам в подготовленном кластере. По умолчанию этот ключ расположен по адресу
~/.ssh/id_rsa.pub
. Можно указать другое расположение с помощью--ssh-key-value
параметра во время создания кластера. - Параметр
--generate-ssh-keys
требуется, если на локальном компьютере нет предварительно существующего ключа SSH. Если этот параметр не включен во время создания кластера, а ключ SSH отсутствует, появится сообщение об ошибке. - Если на локальном компьютере уже есть ключ SSH, кластер AKS повторно использует этот ключ. В этом случае указание
--generate-ssh-keys
или исключение этого параметра не влияет.
Подключение к кластеру 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
Тестирование приложения
При запуске приложения Служба 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
После изменения внешнего IP-адреса на фактический общедоступный IP-адрес используйте CTRL-C, чтобы остановить процесс просмотра kubectl. В следующем примере выходных данных показан общедоступный IP-адрес, присвоенный службе.
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Чтобы увидеть приложение для голосования Azure в действии, откройте в веб-браузере внешний IP-адрес вашей службы.
Удаление кластера
az aksarc delete
Выполните команду, чтобы очистить созданный кластер:
az aksarc delete --resource-group $aksclustername --name $resource_group