Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При доступе к частному кластеру 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
функции для выполнения команд в кластере.
Подсказка
Для выполнения kubectl
команд на портале Azure можно использовать Microsoft Copilot в Azure. Дополнительные сведения см. в статье "Работа с кластерами AKS эффективно с помощью Microsoft Copilot в Azure".
Модуль 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
в кластере.
Ограничения
Эта функция предназначена для упрощения доступа к кластеру и не предназначена для программного доступа. Вы должны использовать прямой доступ к API через Бастион, VPN или Express Route для программных вызовов к кластеру.
Если у вас есть программа вызова Kubernetes с помощью Run command
, применяются следующие недостатки:
- Вы получаете только код выхода и выходные данные текста, а сведения об уровне API теряются.
- Один дополнительный прыжок вводит дополнительные точки сбоя.
Модуль, созданный с помощью Run command
, имеет запросы 200m CPU
и 500Mi memory
, а также ограничения 500m CPU
и 1Gi memory
. В случаях, когда ваш узел полностью заполнен или перенасыщен, модуль pod может не быть запланирован в течение времени ожидания API ARM, составляющего 60 секунд. Это означает, что вызов завершится ошибкой Run command
.
command invoke
выполняет команды из кластера, поэтому все команды, выполняемые таким образом, применяются к настроенным сетевым ограничениям и любым другим настроенным ограничениям. Убедитесь, что в кластере достаточно узлов и ресурсов, чтобы запланировать этот модуль командной строки.
Примечание.
Выходные данные command invoke
ограничены размером в 512 кБ.
Выполнение команд в кластере AKS
Ниже приведены примеры использования az aks command invoke
для выполнения команд в частном кластере AKS. В этих примерах предполагается, что у вас есть существующая группа ресурсов и кластер AKS.
Использование command invoke
для выполнения одной команды
Вы можете выполнить команду az aks command invoke --command
в своем кластере. Следующая команда выполняет kubectl get pods -n kube-system
команду в кластере myPrivateCluster в myResourceGroup.
Сначала задайте переменные среды для группы ресурсов и имени кластера, которые будут использоваться в последующих командах.
export AKS_RESOURCE_GROUP="myResourceGroup"
export AKS_CLUSTER_NAME="myPrivateCluster"
Приведенные выше переменные среды позволяют выполнять команды AKS в следующих разделах без необходимости переписать их имена.
Чтобы выполнить одну команду kubectl в кластере AKS:
az aks command invoke \
--resource-group $AKS_RESOURCE_GROUP \
--name $AKS_CLUSTER_NAME \
--command "kubectl get pods -n kube-system"
Использование command invoke
для выполнения нескольких команд
Можно также выполнить несколько команд. В следующем примере последовательно выполняются три helm
команды на кластере.
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
для выполнения команд с вложенным файлом
При использовании параметра --file
с файлом az aks command invoke
, файл должен существовать и быть доступен в текущем рабочем каталоге. Ниже мы создадим минимальный файл развертывания для демонстрации.
Чтобы выполнить команду с присоединенным файлом, сначала создайте файл манифеста Kubernetes с именем deployment.yaml
. В следующем примере создается небольшое развертывание nginx, которое затем применяется с помощью command invoke
.
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 \
--resource-group $AKS_RESOURCE_GROUP \
--name $AKS_CLUSTER_NAME \
--command "kubectl apply -f deployment.yaml -n default" \
--file deployment.yaml
Используйте command invoke
для выполнения команд со всеми файлами в текущем каталоге
Используйте только небольшие, необходимые файлы, чтобы избежать превышения ограничений размера системы. Ниже создаются два минимальных файла YAML перед присоединением.
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 \
--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
Вы можете отключить функцию Run command
, установив .properties.apiServerAccessProfile.disableRunCommand
для нее значение true
.
Устранение неполадок
Сведения о наиболее распространенных проблемах az aks command invoke
и их устраненииaz aks command invoke
"Устранение сбоев".
Следующие шаги
Из этой статьи вы узнали, как получить доступ к частному кластеру и выполнить команды в этом кластере. Дополнительные сведения о кластерах AKS см. в следующих статьях:
Azure Kubernetes Service