Komut çağırma veya Komut çalıştırma özelliğini kullanarak özel bir Azure Kubernetes Service (AKS) kümesine erişme

Özel bir Azure Kubernetes Service (AKS) kümesine erişirken kümeye küme sanal ağından (VNet), eşlenmiş bir ağdan veya yapılandırılmış bir özel uç noktadan bağlanmanız gerekir. Bu yaklaşımlar, VPN veya Express Route ayarlama gibi ek yapılandırma gerektirir.

Azure CLI ile vpn veya Express Route yapılandırmaya gerek kalmadan özel kümelere erişmek için kullanabilirsiniz command invoke . command invoke, özel kümenizde kümeye doğrudan bağlanmadan, Azure API aracılığıyla kubectl ve helm gibi komutları uzaktan çağırmanıza olanak tanır. RBAC eylemleri Microsoft.ContainerService/managedClusters/runcommand/action ve Microsoft.ContainerService/managedClusters/commandResults/read kullanma command invokeizinlerini denetler.

Azure portalı ile bu özelliği kullanarak Run command özel kümenizde komut çalıştırabilirsiniz. Bu özellik, Run command kümenizde komut çalıştırmak için aynı command invoke işlevselliği kullanır. Run command tarafından oluşturulan pod, kümenizi çalıştırmak için kubectl ve helm sağlar. jq, xargs, grepve awk Bash desteği için kullanılabilir.

İpucu

Azure Copilot'u kullanarak Azure portalında komut çalıştırabilirsiniz kubectl . Daha fazla bilgi için bkz. Azure Copilot kullanarak AKS kümeleriyle verimli çalışma.

Önkoşullar

Sistem ve izin gereksinimleri

Gereksinim türü Specification Doğrulama yöntemi
Azure CLI sürümü 2.24.0 veya üzeri az --version komutunu kullanarak sürümünüzü kontrol edin.
Özel AKS kümesi Zaten mevcut olmalıdır Mevcut bir özel kümeniz yoksa Özel AKS kümesi oluşturma bölümünde yer alan adımları izleyin.
RBAC eylemleri Microsoft.ContainerService/managedClusters/runcommand/action ve Microsoft.ContainerService/managedClusters/commandResults/read Azure portalı Erişim denetimi (IAM) sayfasını veya az role assignment list Azure CLI komutunu kullanarak denetleyin.

Komut podu kaynak belirtimlerini çalıştırma

Kaynak türü Değer Etki
CPU istekleri 200m Komut podu için ayrılmış en düşük CPU
Bellek istekleri 500Mi Komut podu için ayrılmış en düşük bellek
CPU sınırları 500m Komut podu için kullanılabilir en yüksek CPU
Bellek sınırları 1Gi Komut podu için kullanılabilir bellek üst sınırı
Azure Resource Manager (ARM) API'sinde zaman aşımı 60 saniye Pod zamanlaması için maksimum süre
Çıkış boyutu sınırı 512 kb En büyük komut çıktı boyutu

Sınırlamalar ve Dikkat Edilecek Hususlar

Tasarım kapsamı

  • Programlı erişim için değil: Otomatik API çağrıları için Bastion, VPN veya ExpressRoute kullanın.
  • Pod zamanlama bağımlılığı: Yeterli küme kaynağı gerektirir ( kaynak belirtimlerine bakın).
  • Çıkış sınırlamaları: exitCode ve yalnızca metin , API düzeyinde ayrıntı yok.
  • Ağ kısıtlamaları geçerlidir: Küme ağı ve güvenlik kısıtlamalarına tabidir.

Olası hata noktaları

  • Düğümler kaynak açısından kısıtlıysa pod zamanlaması başarısız olur.
  • Pod hızla zamanlanamazsa, ARM API'nin zaman aşımı süresi 60 saniyedir.
  • Yanıt 512 KB sınırını aşarsa çıkışın kesilmesi.

Özel bir AKS kümesini Azure CLI ile kullanma command invoke

  • Kaynak grubunuzun ve küme adının ortam değişkenlerini sonraki komutlarda kullanılacak şekilde ayarlayın.

    export AKS_RESOURCE_GROUP="<resource-group-name>"
    export AKS_CLUSTER_NAME="<cluster-name>"
    

    Bu ortam değişkenleri, adlarını yeniden yazmak zorunda kalmadan AKS komutlarını çalıştırmanıza olanak tanır.

Tek bir komut çalıştırmak için kullanın command invoke

  • az aks command invoke komutunu ve --command parametresini kullanarak kümenizde tek bir komut çalıştırın. Aşağıdaki örnek, ad alanında kube-system podları alır.

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --command "kubectl get pods -n kube-system"
    

Birden çok komut çalıştırmak için kullanın command invoke

  • az aks command invoke komutunu ve --command parametresini kullanarak kümenizde birden çok komut çalıştırın. Aşağıdaki örnek Bitnami Helm grafik deposunu ekler, depoyu güncelleştirir ve grafiği yükler 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"
    

Ekli dosyayla komutları çalıştırmak için kullanın command invoke

Ekli bir dosyayla bir komut çalıştırmak istiyorsanız, dosyanın mevcut olması ve geçerli çalışma dizininizde erişilebilir olması gerekir. Aşağıdaki örnekte, gösterim için en düşük dağıtım dosyasını oluşturuyoruz.

  1. adlı deployment.yamlbir Kubernetes bildirim dosyası oluşturun. Aşağıdaki örnek dağıtım dosyası bir nginx pod dağıtır.

    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
    
  2. Kümenize dağıtım dosyasını uygulamak için az aks command invoke komutunu ve --file parametresini kullanın. Aşağıdaki örnek, deployment.yaml dosyasını default ad alanına uygular.

    az aks command invoke \
      --resource-group $AKS_RESOURCE_GROUP \
      --name $AKS_CLUSTER_NAME \
      --command "kubectl apply -f deployment.yaml -n default" \
      --file deployment.yaml
    

Geçerli dizindeki tüm dosyalarla komutları çalıştırmak için kullanın command invoke

Uyarı

Sistem boyutu sınırlarını aşmamak için yalnızca küçük, gerekli dosyaları kullanın.

Aşağıdaki örnekte gösterim için en az iki dağıtım dosyası oluşturacağız.

  1. ve deployment.yamladlı configmap.yaml iki Kubernetes bildirim dosyası oluşturun. Aşağıdaki örnek dağıtım dosyaları bir nginx pod dağıtır ve karşılama iletisiyle bir ConfigMap oluşturur.

    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
    
  2. Kümenize dağıtım dosyalarını uygulamak için az aks command invoke komutunu --file parametresiyle kullanarak dosyaları ekleyin. Aşağıdaki örnek, deployment.yaml ve configmap.yaml dosyalarını default ad alanına uygular.

    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
    

Azure portalında özel AKS kümesinde Run command kullanın

kubectl komutlarını Run command özelliğiyle kullanabilirsiniz:

  • kubectl get nodes
  • kubectl get deployments
  • kubectl get pods
  • kubectl describe nodes
  • kubectl describe pod <pod-name>
  • kubectl describe deployment <deployment-name>
  • kubectl apply -f <file-name>

Tek bir komut çalıştırmak için kullanın Run command

  1. Azure portalında özel kümenize gidin.
  2. Hizmet menüsündeki Kubernetes kaynakları'nın altında Çalıştır komutunu seçin.
  3. Çalıştırmak istediğiniz komutu girin ve Çalıştır'ı seçin.

Ekli dosyalarla komutları çalıştırmak için kullanın Run command

  1. Azure portalında özel kümenize gidin.

  2. Hizmet menüsündeki Kubernetes kaynakları'nın altında Çalıştır komutunu seçin.

  3. Dosya ekle>Dosyalara göz at seçin.

    Azure portalı Çalıştır komutuna dosya ekleme işleminin ekran görüntüsü.

  4. Eklemek istediğiniz dosyayı veya dosyaları seçin ve ardından Ekle'yi seçin.

  5. Çalıştırmak istediğiniz komutu girin ve Çalıştır'ı seçin.

Devre dışı bırakmak Run command

Run command özelliğini, .properties.apiServerAccessProfile.disableRunCommand'yi true olarak ayarlayarak devre dışı bırakabilirsiniz.

command invoke sorunlarını giderme

ile ilgili en yaygın sorunlar az aks command invoke ve bunların nasıl çözüleceğini öğrenmek için bkz. Hataları çözmeaz aks command invoke.

Bu makalede, özel bir kümeye erişmeyi ve bu kümede komut çalıştırmayı öğrendiniz. AKS kümeleri hakkında daha fazla bilgi için aşağıdaki makalelere bakın: