Azure CLI kullanarak Kubernetes kümeleri oluşturma

Şunlar için geçerlidir: Azure Stack HCI, sürüm 23H2

Bu makalede, Azure CLI kullanarak Azure Stack HCI'de Kubernetes kümelerinin nasıl oluşturulacağı açıklanır. İş akışı aşağıdaki gibidir:

  1. Azure CLI kullanarak Azure Stack HCI 23H2'de bir Kubernetes kümesi oluşturun. Küme varsayılan olarak Azure Arc bağlantılıdır.
  2. Kümeyi oluştururken Kubernetes kümesi yönetici erişimine sahip Microsoft Entra kullanıcılarının listesini içeren bir Microsoft Entra grubu sağlarsınız.
  3. kubectl ve Microsoft Entra kimliğinizi kullanarak kümeye erişin.
  4. Bir web ön ucu ve kümede redis örneği ile örnek bir çok kapsayıcılı uygulama çalıştırın.

Başlamadan önce

  • Başlamadan önce, şirket içi altyapı yöneticinizden aşağıdaki ayrıntılara sahip olduğunuzdan emin olun:
    • Azure abonelik kimliği - Azure Stack HCI'nin dağıtım ve kayıt için kullanıldığı Azure abonelik kimliği.
    • Özel Konum Kimliği - Özel konumun Azure Resource Manager kimliği. Özel konum, Azure Stack HCI kümesi dağıtımı sırasında yapılandırılır. Altyapı yöneticiniz size özel konumun Resource Manager kimliğini vermelidir. Kubernetes kümeleri oluşturmak için bu parametre gereklidir. Ayrıca, altyapı yöneticisi özel bir konum adı ve kaynak grubu adı sağlıyorsa Resource Manager kimliğini kullanarak az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsvda alabilirsiniz.
    • Ağ Kimliği - Bu adımları izleyerek oluşturulan Azure Stack HCI mantıksal ağının Azure Resource Manager kimliği. Yöneticiniz size mantıksal ağın kimliğini vermelidir. Kubernetes kümeleri oluşturmak için bu parametre gereklidir. Mantıksal ağın oluşturulduğu kaynak grubunu biliyorsanız kullanarak az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv Azure Resource Manager kimliğini de alabilirsiniz.
  • Bu makaledeki adımları yerel bir geliştirme makinesinde çalıştırarak uzak Azure Stack HCI dağıtımınızda bir Kubernetes kümesi oluşturabilirsiniz. Geliştirme makinenizde En son Az CLI sürümüne sahip olduğunuzdan emin olun. Az CLI sürümünüzü kullanarak az upgradeyükseltmeyi de seçebilirsiniz.
  • Kubernetes kümesine her yerden bağlanmak için bir Microsoft Entra grubu oluşturun ve bu gruba üye ekleyin. Microsoft Entra grubundaki tüm üyelerin kümeye küme yöneticisi erişimi vardır. Kendinizi Microsoft Entra grubuna üye olarak eklediğinizden emin olun. Kendinizi eklemezseniz kubectl kullanarak Kubernetes kümesine erişemezsiniz. Microsoft Entra grupları oluşturma ve kullanıcı ekleme hakkında daha fazla bilgi için bkz . Microsoft Entra gruplarını ve grup üyeliğini yönetme.
  • Geliştirme makinenize kubectl indirip yükleyin. Kubernetes komut satırı aracı kubectl, Kubernetes kümelerine karşı komut çalıştırmanızı sağlar. Kubectl kullanarak uygulamaları dağıtabilir, küme kaynaklarını inceleyip yönetebilir ve günlükleri görüntüleyebilirsiniz.

Azure CLI uzantısını yükleme

Gerekli Azure CLI uzantılarını yüklemek için aşağıdaki komutu çalıştırın:

az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade

Kubernetes kümesi oluşturma

AKS Arc'ta az aksarc create kubernetes kümesi oluşturmak için komutunu kullanın. Bu komutu çalıştırmadan önce Azure'da oturum açtığınızdan emin olun. Birden çok Azure aboneliğiniz varsa az account set komutunu kullanarak uygun abonelik kimliğini seçin.

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys --load-balancer-count 0  --control-plane-ip $controlplaneIP

Birkaç dakika sonra komut tamamlanıp kümeyle ilgili JSON biçimli bilgileri döndürür.

Not

  • SSH anahtarı değeri, sağlanan kümedeki düğümlere erişmek için ortak anahtardır. Varsayılan olarak, bu anahtar konumunda ~/.ssh/id_rsa.pubbulunur. Küme oluşturma sırasında parametresini --ssh-key-value kullanarak farklı bir konum belirtebilirsiniz.
  • --generate-ssh-keys Yerel makinenizde önceden var olan bir SSH anahtarı yoksa parametresi gereklidir. Küme oluşturma sırasında bu parametreyi eklemezseniz ve SSH anahtarı yoksa bir hata iletisi alırsınız.
  • Yerel makinenizde zaten bir SSH anahtarınız varsa AKS kümesi bu anahtarı yeniden kullanabilir. Bu durumda, parametresini --generate-ssh-keysbelirtmenin veya bu parametreyi atlamanın hiçbir etkisi olmaz.

Kubernetes kümesine bağlanma

Artık geliştirme makinenizden komutunu çalıştırarak az connectedk8s proxy Kubernetes kümenize bağlanabilirsiniz. Bu komutu çalıştırmadan önce Azure'da oturum açtığınızdan emin olun. Birden çok Azure aboneliğiniz varsa az account set komutunu kullanarak uygun abonelik kimliğini seçin.

Bu komut, Kubernetes kümenizin kubeconfig'ini geliştirme makinenize indirir ve şirket içi Kubernetes kümenize bir proxy bağlantı kanalı açar. Komut çalıştığı sürece kanal açık durumdadır. Kümenize erişmek istediğiniz sürece bu komutun çalışmasına izin verin. Zaman aşımına uğradıysa CLI penceresini kapatın, yeni bir pencere açın ve komutu yeniden çalıştırın.

Aşağıdaki komutu başarıyla çalıştırmak için Kubernetes kümesini barındıran kaynak grubunda Katkıda Bulunan izinlerine sahip olmanız gerekir:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Beklenen çıktı:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.

Bu oturumu çalışır durumda tutun ve farklı bir terminal/komut isteminden Kubernetes kümenize bağlanın. kubectl get komutunu çalıştırarak Kubernetes kümenize bağlanabildiğinizi doğrulayın. Bu komut, küme düğümlerinin listesini döndürür:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

Aşağıdaki çıkış örneği, önceki adımlarda oluşturulan düğümü gösterir. Düğüm durumunun Hazır olduğundan emin olun:

NAME             STATUS ROLES                AGE VERSION
moc-l0ttdmaioew  Ready  control-plane,master 34m v1.24.11
moc-ls38tngowsl  Ready  <none>               32m v1.24.11

Uygulamayı dağıtma

Kubernetes bildirim dosyası, hangi kapsayıcı görüntülerinin çalıştırıldığı gibi kümenin istenen durumunu tanımlar.

Azure Vote uygulamasını çalıştırmak için gereken tüm nesneleri oluşturmak için bir bildirim kullanabilirsiniz. Bu bildirim iki Kubernetes dağıtımı içerir:

  • Örnek Azure Vote Python uygulamaları.
  • Redis örneği.

İki Kubernetes hizmeti de oluşturulur:

  • Redis örneği için bir iç hizmet.
  • İnternet'ten Azure Vote uygulamasına erişmek için bir dış hizmet.

azure-vote.yaml adlı bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın:

apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-back 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-back 
      template: 
        metadata: 
          labels: 
            app: azure-vote-back 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-back 
            image: <path to image>/oss/bitnami/redis:6.0.8 
            env: 
            - name: ALLOW_EMPTY_PASSWORD 
              value: "yes" 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 6379 
              name: redis 
    ---
    apiVersion: v1
    kind: Service 
    metadata: 
      name: azure-vote-back 
    spec: 
      ports: 
      - port: 6379 
      selector: 
        app: azure-vote-back 
    --- 
    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-front 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-front 
      template: 
        metadata: 
          labels: 
            app: azure-vote-front 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-front 
            image: <path to image>/azure-vote-front:v1 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 80 
            env: 
            - name: REDIS 
              value: "azure-vote-back" 
    --- 
    apiVersion: v1 
    kind: Service 
    metadata: 
      name: azure-vote-front 
    spec: 
      type: LoadBalancer 
      ports: 
      - port: 80 
      selector: 
        app: azure-vote-front

kubectl apply komutunu kullanarak uygulamayı dağıtın ve YAML'nizin adını belirtin:

kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config

Aşağıdaki örnek çıktı, başarıyla oluşturulan dağıtımları ve hizmetleri gösterir:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Uygulamayı test etme

Uygulama çalıştırıldığında, kubernetes hizmeti uygulamanın ön ucu İnternet'te kullanıma sunar. Bu işlemin tamamlanması birkaç dakika sürebilir.

bağımsız değişkeniyle kubectl get service komutunu kullanarak ilerleme durumunu --watch izleyin.

kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config

azure-vote-front hizmeti için EXTERNAL-IP çıkışı başlangıçta beklemede olarak gösterilir.

NAME             TYPE         CLUSTER-IP EXTERNAL-IP PORT(S)      AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending>   80:30572/TCP 6s

EXTERNAL-IP adresi beklemeden gerçek bir genel IP adresine geçtikten sonra kubectl izleme işlemini durdurmak için CTRL-C tuşlarını kullanın. Aşağıdaki örnek çıktıda hizmete atanmış geçerli bir genel IP adresi gösterilmektedir:

azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m

Azure Vote uygulamasının çalıştığını görmek için hizmetinizin dış IP adresine bir web tarayıcısı açın.

Küme silme

Oluşturduğunuz kümeyi az aksarc delete temizlemek için komutunu çalıştırın:

az aksarc delete --resource-group $aksclustername --name $resource_group

Sonraki adımlar