Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas uzyskiwania dostępu do prywatnego klastra usługi AKS należy nawiązać połączenie z klastrem z sieci wirtualnej klastra, sieci równorzędnej lub skonfigurowanego prywatnego punktu końcowego. Te podejścia wymagają skonfigurowania sieci VPN, usługi Express Route, wdrożenia serwera przesiadkowego w sieci wirtualnej klastra lub utworzenia prywatnego punktu końcowego wewnątrz innej sieci wirtualnej.
Za pomocą command invoke
interfejsu wiersza polecenia platformy Azure można uzyskiwać dostęp do klastrów prywatnych bez konieczności konfigurowania sieci VPN lub usługi Express Route.
command invoke
Umożliwia zdalne wywoływanie poleceń, takich jak kubectl
i helm
, w klastrze prywatnym za pośrednictwem interfejsu API platformy Azure bez bezpośredniego nawiązywania połączenia z klastrem. Akcje Microsoft.ContainerService/managedClusters/runcommand/action
i Microsoft.ContainerService/managedclusters/commandResults/read
kontrolują uprawnienia do używania elementu command invoke
.
Za pomocą witryny Azure Portal możesz użyć Run command
funkcji do uruchamiania poleceń w klastrze prywatnym. Funkcja Run command
używa tej samej command invoke
funkcji do uruchamiania poleceń w klastrze.
Wskazówka
Aby uruchamiać kubectl
polecenia w witrynie Azure Portal, możesz użyć rozwiązania Microsoft Copilot na platformie Azure. Aby uzyskać więcej informacji, zobacz Praca z klastrami AKS wydajnie przy użyciu rozwiązania Microsoft Copilot na platformie Azure.
Zasobnik utworzony przez program Run command
zapewnia kubectl
i helm
do obsługi klastra.
jq
, xargs
, grep
i awk
są dostępne dla obsługi powłoki Bash.
Zanim rozpoczniesz
Przed rozpoczęciem upewnij się, że masz następujące zasoby i uprawnienia:
- Istniejący klaster prywatny. Jeśli go nie masz, zobacz Tworzenie prywatnego klastra usługi AKS.
- Interfejs wiersza polecenia platformy Azure w wersji 2.24.0 lub nowszej. Uruchom polecenie
az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Dostęp do
Microsoft.ContainerService/managedClusters/runcommand/action
ról iMicrosoft.ContainerService/managedclusters/commandResults/read
w klastrze.
Ograniczenia
Ta funkcja została zaprojektowana tak, aby uprościć dostęp do klastra i nie jest przeznaczona do dostępu programowego. Należy użyć bezpośredniego dostępu do interfejsu API za pośrednictwem usługi Bastion, sieci VPN lub usługi Express Route na potrzeby wywołań programowych do klastra.
Jeśli masz program wywołać platformę Kubernetes przy użyciu programu Run command
, mają zastosowanie następujące wady:
- Uzyskasz tylko kod exitCode i dane wyjściowe tekstowe i utracisz szczegóły na poziomie interfejsu API.
- Jeden dodatkowy przeskok wprowadza dodatkowe punkty awarii.
Zasobnik utworzony przez element Run command
ma 200m CPU
i 500Mi memory
żądania oraz 500m CPU
i 1Gi memory
limity. W przypadkach, gdy cały węzeł jest pełny lub przeciążony, zasobnik może nie być zaprogramowany w ramach limitu czasu interfejsu API ARM wynoszącego 60 sekund. Oznacza to, że Run command
wywołanie zakończy się niepowodzeniem.
command invoke
uruchamia polecenia z klastra, więc wszystkie polecenia uruchomione w ten sposób podlegają skonfigurowanym ograniczeniom sieciowym i wszelkim innym skonfigurowanym ograniczeniom. Upewnij się, że w klastrze jest wystarczająca liczba węzłów i zasobów, aby zaplanować ten zasobnik poleceń.
Uwaga
Dane wyjściowe dla elementu command invoke
są ograniczone do rozmiaru 512kB.
Uruchamianie poleceń w klastrze usługi AKS
Poniżej znajdują się przykłady użycia az aks command invoke
do wykonywania poleceń w prywatnym klastrze AKS. W tych przykładach przyjęto założenie, że masz istniejącą grupę zasobów i klaster AKS.
Użyj command invoke
polecenia , aby uruchomić pojedyncze polecenie
Możesz uruchomić polecenie w klastrze przy użyciu polecenia az aks command invoke --command
. Poniższe przykładowe polecenie uruchamia polecenie w kubectl get pods -n kube-system
w grupie myResourceGroup.
Najpierw ustaw zmienne środowiskowe dla grupy zasobów i nazwy klastra do użycia w kolejnych poleceniach.
export AKS_RESOURCE_GROUP="myResourceGroup"
export AKS_CLUSTER_NAME="myPrivateCluster"
Powyższe zmienne środowiskowe umożliwiają uruchamianie poleceń usługi AKS w następnych sekcjach bez konieczności ponownego zapisywania ich nazw.
Aby uruchomić jedno polecenie kubectl w klastrze AKS:
az aks command invoke \
--resource-group $AKS_RESOURCE_GROUP \
--name $AKS_CLUSTER_NAME \
--command "kubectl get pods -n kube-system"
Użyj command invoke
polecenia , aby uruchomić wiele poleceń
Można również uruchomić wiele poleceń. Poniższy przykład wykonuje trzy helm
polecenia w sekwencji w klastrze.
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"
Użyj command invoke
do uruchomienia polecenia z dołączonym plikiem
W przypadku używania parametru --file
z az aks command invoke
, plik musi istnieć i być dostępny w bieżącym katalogu roboczym. Poniżej utworzymy minimalny plik wdrożenia na potrzeby pokazu.
Aby uruchomić polecenie z dołączonym plikiem, najpierw utwórz plik manifestu kubernetes o nazwie deployment.yaml
. Poniższy przykład tworzy małe wdrożenie nginx i stosuje je za pomocą polecenia 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
Użyj command invoke
polecenia , aby uruchomić polecenia ze wszystkimi plikami w bieżącym katalogu dołączonym
Używaj tylko małych, niezbędnych plików, aby uniknąć przekroczenia limitów rozmiaru systemu. Poniżej zostaną utworzone dwa minimalne pliki YAML przed ich dołączeniem.
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
Wyłączać Run command
Możesz wyłączyć funkcję Run command
poprzez ustawienie .properties.apiServerAccessProfile.disableRunCommand
na true
.
Rozwiązywanie problemów
Aby uzyskać informacje na temat najczęstszych problemów i az aks command invoke
sposobu ich rozwiązywania, zobacz Rozwiązywanie az aks command invoke
błędów.
Następne kroki
W tym artykule przedstawiono sposób uzyskiwania dostępu do klastra prywatnego i uruchamiania poleceń w tym klastrze. Aby uzyskać więcej informacji na temat klastrów usługi AKS, zobacz następujące artykuły:
Azure Kubernetes Service