Доступ к частному кластеру Служба 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
, , xargs
grep
и 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 см. в следующих статьях:
Azure Kubernetes Service