Поделиться через


Создание кластеров Kubernetes с помощью Azure CLI

Область применения: Azure Stack HCI версии 23H2

В этой статье описывается создание кластеров Kubernetes в Azure Stack HCI с помощью Azure CLI. Рабочий процесс выглядит следующим образом:

  1. Создайте кластер Kubernetes в Azure Stack HCI 23H2 с помощью Azure CLI. Кластер подключен к Azure Arc по умолчанию.
  2. При создании кластера вы предоставляете группу Microsoft Entra, содержащую список пользователей Microsoft Entra с доступом администратора кластера Kubernetes.
  3. Доступ к кластеру с помощью kubectl и идентификатора Microsoft Entra.
  4. Запустите пример многоконтейнерного приложения с веб-интерфейсом и экземпляром 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

Следующие шаги