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


Доступ к частному кластеру Служба Azure Kubernetes (AKS) с помощью функции вызова команды или запуска

При доступе к частному кластеру AKS необходимо подключиться к кластеру из виртуальной сети кластера, одноранговой сети или настроенной частной конечной точки. Для этих подходов нужно настроить VPN или Express Route, развернуть Jumpbox в виртуальной сети кластера или создать частную конечную точку в другой виртуальной сети.

С помощью Azure CLI можно использовать command invoke для доступа к частным кластерам без необходимости настройки VPN или Express Route. command invoke позволяет удаленно вызывать команды, такие как kubectl и helmв частном кластере, через API Azure без прямого подключения к кластеру. И Microsoft.ContainerService/managedClusters/runcommand/action Microsoft.ContainerService/managedclusters/commandResults/read действия управляют разрешениями для использования command invoke.

С помощью портал Azure можно использовать функцию Run command для выполнения команд в частном кластере. Эта Run command функция использует те же command invoke функции для выполнения команд в кластере.

Модуль pod, созданный предоставленным Run command kubectl и helm работающим в кластере. jq, , xargsgrepи awk доступны для поддержки Bash.

Подготовка к работе

Перед началом работы убедитесь, что у вас есть следующие ресурсы и разрешения:

  • Существующий частный кластер. Если у вас нет этого кластера, см. статью "Создание частного кластера AKS".
  • Azure CLI версии 2.24.0 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
  • Доступ к ролям Microsoft.ContainerService/managedClusters/runcommand/action и Microsoft.ContainerService/managedclusters/commandResults/read в кластере.

Ограничения

Эта функция предназначена для упрощения доступа к кластеру и не предназначена для программного доступа. Если у вас есть программа вызова Kubernetes с помощью Run command, применяются следующие недостатки:

  • Вы получаете только выходные данные из кода выхода и текста, а сведения об уровне API теряются.
  • Один дополнительный прыжок вводит дополнительные точки сбоя.

Модуль pod, созданный Run command жестко закодирован с помощью 200m CPU запроса и 500Mi memory запроса, а 1Gi memory также 500m CPU ограничения. В редких случаях, когда весь узел упакован, модуль pod не может быть запланирован в пределах ограничения API ARM в течение 60 секунд. Это означает, что сбой Run command , даже если он настроен для автомасштабирования.

command invoke выполняет команды из кластера, поэтому все команды, выполняемые таким образом, применяются к настроенным сетевым ограничениям и любым другим настроенным ограничениям. Убедитесь, что в кластере достаточно узлов и ресурсов, чтобы запланировать этот модуль командной строки.

Примечание.

Выходные данные command invoke ограничены размером 512kB.

Выполнение команд в кластере AKS

Использование command invoke для выполнения одной команды

  • Выполните команду в кластере az aks command invoke --command с помощью команды. Следующая команда выполняет kubectl get pods -n kube-system команду в кластере myPrivateCluster в myResourceGroup.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl get pods -n kube-system"
    

Использование command invoke для выполнения нескольких команд

  • Выполните несколько команд в кластере az aks command invoke --command с помощью команды. В следующем примере команды выполняются три helm команды в кластере myPrivateCluster в myResourceGroup.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update && helm install my-release bitnami/nginx"
    

Использование command invoke для выполнения команд с вложенным файлом или каталогом

  • Выполните команды с присоединенным файлом или каталогом az aks command invoke --command с помощью команды с параметром --file . Следующая команда выполняется kubectl apply -f deployment.yaml -n default в кластере myPrivateCluster в myResourceGroup. Файл deployment.yaml подключен из текущего каталога на компьютере разработки, где az aks command invoke был запущен.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml -n default" \
      --file deployment.yaml
    

Использование command invoke для выполнения команд со всеми файлами в текущем каталоге

  • Выполните команды со всеми файлами в текущем каталоге, подключенными с помощью az aks command invoke --command команды с параметром --file . Следующая команда выполняется kubectl apply -f deployment.yaml configmap.yaml -n default в кластере myPrivateCluster в myResourceGroup. configmap.yaml Файлы deployment.yaml являются частью текущего каталога на компьютере разработки, где az aks command invoke был запущен.

    az aks command invoke \
      --resource-group myResourceGroup \
      --name myPrivateCluster \
      --command "kubectl apply -f deployment.yaml configmap.yaml -n default" \
      --file .
    

Устранение неполадок

Сведения о наиболее распространенных проблемах az aks command invoke и их устранении см. в разделе "Устранение az aks command invoke сбоев".

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

Из этой статьи вы узнали, как получить доступ к частному кластеру и выполнить команды в этом кластере. Дополнительные сведения о кластерах AKS см. в следующих статьях: