Azure CLI kullanarak Kubernetes kümeleri oluşturma

Azure Yerel üzerinde AKS için geçerlidir

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

  1. Azure CLI kullanarak Azure Yerel'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. Web ön uç ve kümedeki 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 Yerel'in 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 Yerel küme 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 az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv kullanarak da alabilirsiniz.
    • Ağ Kimliği - Bu adımları izleyerek oluşturulan Azure Yerel 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 Yerel 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ü az upgrade kullanarak yükseltmeyi 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 komutları çalıştırın.

Uyarı

Aşağıdaki uzantıları doğrudan bir Azure Yerel düğümüne yüklemeyin. Bunları Azure Yerel örneğine bağlanmak için kullandığınız bir istemci makinesine yüklemeniz önerilir.

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'de kubernetes kümesi oluşturmak için az aksarc create komutunu kullanın. Bu komutu çalıştırmadan önce Azure 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 komutuyla, kullanmayı düşündüğünüz giriş parametrelerini doğrulayan --validate bayrağını kullanmanızı öneririz. Giriş parametreleri doğrulandıktan sonra az aksarc create komutunu --validate bayrağı olmadan çalıştırarak Kubernetes kümesini oluşturabilirsiniz.

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys

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

Değerlendirmeler

Küme oluştururken dikkat edilmesi gerekenlere dikkat edin:

  • SSH anahtarları sorun giderme ve günlük toplama için gereklidir. Özel anahtar dosyanızı gelecekte kullanmak üzere kaydettiğinizden emin olun. Düğümlere erişmek için bkz. SSH ile Windows veya Linux çalışan düğümlerine bağlanma.
  • Önceden var olan bir SSH anahtarı kullanabilir veya küme oluşturma sırasında aks kümesi için SSH anahtarlarını yapılandırabilirsiniz . Yerel makinenizde önceden mevcut bir SSH anahtarı yoksa, --generate-ssh-keys parametresi gereklidir. Ayrıca , belgeleri izleyerek SSH erişimini kısıtlayabilirsiniz. Ayrıntılı yönergeler için bkz. Azure CLI ile veya Azure portalında SSH anahtarları oluşturma ve depolama.
  • Küme oluşturma sırasında eklemezseniz --generate-ssh-keys ve SSH anahtarı yoksa bir hata iletisi alırsınız. Yerel makinenizde zaten bir SSH anahtarınız varsa AKS kümesi bunu yeniden kullanabilir. Bu durumda, --generate-ssh-keys belirtip belirtmemeniz fark etmez.
  • Varsayılan olarak, SSH anahtarı ~/.ssh/id_rsa.pub konumunda depolanır. Küme oluşturma sırasında parametresini --ssh-key-value kullanarak alternatif bir konum belirtebilirsiniz.

Önemli

Aks kümesinde Azure RBAC veya iş yükü kimliğini kullanmak için, Azure CLI kullanarak küme oluşturma sırasında gerekli parametreleri geçirmeniz gerekir. Şu anda iş yükü kimliğini ve/veya Azure RBAC'yi etkinleştirmek için mevcut aks kümesini güncelleştirme desteklenmiyor. Daha fazla bilgi için Kubernetes yetkilendirmesi için Azure RBAC kullanma veya kümeniz için İş Yükü Kimliğini dağıtma ve yapılandırma konularına bakın.

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ün 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ı ve yük dengeleyiciyi 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

Uygulama ön ucu için bir dış IP atayabilmesi için bir MetalLB yük dengeleyici dağıtın. MetalLB uzantısını Azure portalından veya CLI kullanarak dağıtmak için bu yönergeleri izleyebilirsiniz .

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.

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

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

azure-vote-front hizmetinin 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 bekleme durumundan gerçek bir genel IP adresine geçtikten sonra kubectl watch işlemini durdurmak amacıyla CTRL-C tuşlarına bası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ümeyi sil

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

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

Sonraki adımlar