Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При доступе к частному кластеру Службы Azure Kubernetes (AKS) необходимо подключиться к кластеру из виртуальной сети кластера (VNet), одноранговой сети или настроенной частной конечной точки. Для таких подходов требуется дополнительная настройка, например настройка VPN или Express Route.
С помощью Azure CLI можно использовать command invoke для доступа к частным кластерам без необходимости настройки VPN или Express Route.
command invoke позволяет удаленно вызывать команды, такие как kubectl и helmв частном кластере, через API Azure без прямого подключения к кластеру. Действия RBAC 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.
Подсказка
Вы можете использовать Azure Copilot для выполнения kubectl команд на портале Azure. Дополнительные сведения см. в статье "Работа с кластерами AKS эффективно с помощью Azure Copilot".
Предпосылки
Требования к системе и разрешениям
| Тип требования | Specification | Как проверить |
|---|---|---|
| Версия Azure CLI | 2.24.0 или более поздняя версия | Используйте команду az --version, чтобы проверить установленную версию. |
| Частный кластер AKS | Должен уже существовать | Если у вас нет частного кластера, выполните действия, описанные в разделе "Создание частного кластера AKS". |
| Действия RBAC |
Microsoft.ContainerService/managedClusters/runcommand/action и Microsoft.ContainerService/managedClusters/commandResults/read. |
Проверьте на странице контроля доступа на портале Azure (IAM) или используйте команду Azure CLI az role assignment list. |
Запустите команду спецификаций ресурсов pod
| Тип ресурса | Ценность | Воздействие |
|---|---|---|
| Запросы ЦП | 200 м | Минимальный резерв ЦП для командной капсулы |
| Запросы памяти | 500 МиБ | Минимальный объем памяти, зарезервированный для командного модуля |
| Ограничения ЦП | 500 м | Максимальное количество ЦП, доступное для командного модуля pod |
| Ограничения памяти | 1Gi | Максимальный объем памяти, доступный для командного модуля pod |
| Время ожидания API Azure Resource Manager (ARM) | 60 секунд | Максимальное время планирования pod |
| Ограничение размера выходных данных | 512 кб | Максимальный размер выходных данных команды |
Ограничения и рекомендации
Область разработки
- Не для программного доступа: используйте бастион, VPN или ExpressRoute для автоматических вызовов API.
- Зависимость планирования Pod'ов: для этого необходимо достаточно ресурсов кластера (см. спецификации ресурсов).
- Ограничения выходных данных: только exitCode и text , нет сведений на уровне API.
- Ограничения сети применяются: с учетом ограничений на сетевые и кластерные ресурсы, а также на безопасность.
Потенциальные точки сбоя
- Сбой планирования pod, если узлы ограничены ресурсами.
- Время ожидания API ARM (60 секунд), если модуль pod не может быть запланирован быстро.
- Усечение выходных данных, если ответ превышает ограничение в 512 кб.
Используйте command invoke в приватном кластере AKS с помощью Azure CLI
Задайте переменные среды для группы ресурсов и имени кластера, которые будут использоваться в последующих командах.
export AKS_RESOURCE_GROUP="<resource-group-name>" export AKS_CLUSTER_NAME="<cluster-name>"Эти переменные среды позволяют выполнять команды AKS без необходимости переписывания их имен.
Использование command invoke для выполнения одной команды
Выполните одну команду в кластере с помощью
az aks command invokeкоманды и--commandпараметра, чтобы указать команду для выполнения. В следующем примере выполняется получение pods вkube-systemпространстве имен.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl get pods -n kube-system"
Использование command invoke для выполнения нескольких команд
Выполните несколько команд в кластере с помощью
az aks command invokeкоманды и--commandпараметра, чтобы указать команды для выполнения. В следующем примере добавляется репозиторий диаграмм Bitnami Helm, обновляется репозиторий и устанавливается диаграммаnginx.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update && helm install my-release bitnami/nginx"
Использование command invoke для выполнения команд с вложенным файлом
Если вы хотите выполнить команду с присоединенным файлом, файл должен существовать и быть доступным в текущем рабочем каталоге. В следующем примере мы создадим минимальный файл развертывания для демонстрации.
Создайте файл манифеста Kubernetes с именем
deployment.yaml. В следующем примере файл развертывания создаёт podnginx.cat <<EOF > deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-demo spec: replicas: 1 selector: matchLabels: app: nginx-demo template: metadata: labels: app: nginx-demo spec: containers: - name: nginx image: nginx:1.21.6 ports: - containerPort: 80 EOFПримените файл развертывания к кластеру, используя команду
az aks command invokeс параметром--fileчтобы прикрепить файл. В следующем примере файлdeployment.yamlприменяется к пространству именdefault.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl apply -f deployment.yaml -n default" \ --file deployment.yaml
Использование command invoke команд для выполнения всех файлов в текущем каталоге
Примечание.
Используйте только небольшие, необходимые файлы, чтобы избежать превышения ограничений размера системы.
В следующем примере мы создадим два минимальных файла развертывания для демонстрации.
Создайте два файла манифеста Kubernetes с именем
deployment.yamlиconfigmap.yaml. В следующем примере файлы развертывания предназначены для развертывания podnginxи создания ConfigMap с приветственным сообщением.cat <<EOF > deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-demo spec: replicas: 1 selector: matchLabels: app: nginx-demo template: metadata: labels: app: nginx-demo spec: containers: - name: nginx image: nginx:1.21.6 ports: - containerPort: 80 EOF cat <<EOF > configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: nginx-config data: welcome-message: "Hello from configmap" EOFПримените файлы развертывания к вашему кластеру, используя команду
az aks command invokeс параметром--fileдля прикрепления файла. В следующем примере применяются файлыdeployment.yamlиconfigmap.yamlв пространство именdefault.az aks command invoke \ --resource-group $AKS_RESOURCE_GROUP \ --name $AKS_CLUSTER_NAME \ --command "kubectl apply -f deployment.yaml -f configmap.yaml -n default" \ --file deployment.yaml \ --file configmap.yaml
Использование Run command частного кластера AKS на портале Azure
С функцией kubectl можно использовать следующие Run command команды:
kubectl get nodeskubectl get deploymentskubectl get podskubectl describe nodeskubectl describe pod <pod-name>kubectl describe deployment <deployment-name>kubectl apply -f <file-name>
Использование Run command для выполнения одной команды
- В портал Azure перейдите к частному кластеру.
- В меню службы в разделе ресурсов Kubernetes выберите команду "Выполнить".
- Введите команду, которую вы хотите выполнить, и нажмите кнопку "Выполнить".
Использование Run command команд для выполнения команд с вложенными файлами
В портал Azure перейдите к частному кластеру.
В меню службы в разделе ресурсов Kubernetes выберите команду "Выполнить".
Выберите "Вложить файлы" и затем ">".
Выберите файл или файлы, которые требуется присоединить, а затем нажмите кнопку "Присоединить".
Введите команду, которую вы хотите выполнить, и нажмите кнопку "Выполнить".
Отключить Run command
Вы можете отключить функцию Run command, установив .properties.apiServerAccessProfile.disableRunCommand для нее значение true.
Устранение неполадок command invoke
Сведения о наиболее распространенных проблемах az aks command invoke и их устраненииaz aks command invoke"Устранение сбоев".
Связанный контент
Из этой статьи вы узнали, как получить доступ к частному кластеру и выполнить команды в этом кластере. Дополнительные сведения о кластерах AKS см. в следующих статьях: