PowerShell kullanarak Azure Kubernetes Service (AKS) kümesinde Windows Server kapsayıcısı dağıtma

Azure Kubernetes Service (AKS), kümeleri hızla dağıtmanızı ve yönetmenizi sağlayan yönetilen bir Kubernetes hizmetidir. Bu makalede, Windows Server kapsayıcılarını çalıştıran bir AKS kümesi dağıtmak için Azure PowerShell'i kullanacaksınız. Ayrıca bir Windows Server kapsayıcısında ASP.NET örnek uygulamasını kümeye dağıtırsınız.

Not

Aks kümesini hızlı bir şekilde sağlamaya başlamak için, bu makale yalnızca değerlendirme amacıyla varsayılan ayarlarla küme dağıtma adımlarını içerir. Üretime hazır bir kümeyi dağıtmadan önce, iş gereksinimlerinizle nasıl uyumlu olduğunu göz önünde bulundurmak için temel başvuru mimarimizi tanımanızı öneririz.

Başlamadan önce

Bu hızlı başlangıç, Kubernetes kavramlarının temel olarak bilindiğini varsayar. Daha fazla bilgi için bkz . Azure Kubernetes Service (AKS) için Kubernetes temel kavramları.

  • Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

  • Kullanım kolaylığı için Azure Cloud Shell'de PowerShell ortamını deneyin. Daha fazla bilgi için bkz. Azure Cloud Shell için Hızlı Başlangıç.

    PowerShell'i yerel olarak kullanmak istiyorsanız Az PowerShell modülünü yükleyin ve Connect-AzAccount cmdlet'ini kullanarak Azure hesabınıza bağlanın. Komutları yönetim ayrıcalıklarıyla çalıştırdığınızdan emin olun. Daha fazla bilgi için bkz . Azure PowerShell'i yükleme.

  • Kümenizi oluşturmak için kullandığınız kimliğin uygun minimum izinlere sahip olduğundan emin olun. AKS erişimi ve kimliği hakkında daha fazla bilgi için bkz . Azure Kubernetes Service (AKS) için erişim ve kimlik seçenekleri.

  • Birden fazla Azure aboneliğiniz varsa Set-AzContext cmdlet'ini çağırarak hızlı başlangıç için kullanmak istediğiniz aboneliği ayarlayın. Daha fazla bilgi için bkz . Azure PowerShell ile Azure aboneliklerini yönetme.

  • parametresinin OsSKU belirtilmesi için PowerShell Az modülünün 9.2.0 veya üzeri bir sürümü gerekir.

Kaynak grubu oluşturma

Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği mantıksal bir grupdur. Bir kaynak grubu oluşturduğunuzda, bir konum belirtmeniz istenir. Kaynak oluşturma sırasında başka bir bölge belirtmezseniz kaynak grubu meta verilerinin depolandığı ve kaynaklarınızın Azure'da çalıştırıldığı konumdur.

  • cmdlet'ini New-AzResourceGroup kullanarak bir kaynak grubu oluşturun. Aşağıdaki örnek, eastus bölgesinde myResourceGroup adlı bir kaynak grubu oluşturur.

    New-AzResourceGroup -Name myResourceGroup -Location eastus
    

    Aşağıdaki örnek çıktı, kaynak grubunun başarıyla oluşturulduğunu gösterir:

    ResourceGroupName : myResourceGroup
    Location          : eastus
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourceGroups/myResourceGroup
    

AKS kümesi oluşturma

Bu bölümde, aşağıdaki yapılandırmaya sahip bir AKS kümesi oluşturacağız:

  • Küme, güvenilir bir şekilde çalıştığından emin olmak için iki düğümle yapılandırılır. Bir düğüm, Kubernetes düğüm bileşenlerini ve kapsayıcı çalışma zamanını çalıştıran bir Azure sanal makinesidir (VM).
  • -WindowsProfileAdminUserName ve -WindowsProfileAdminUserPassword parametreleri, kümedeki tüm Windows Server düğümleri için yönetici kimlik bilgilerini ayarlar ve Windows Server parola karmaşıklığı gereksinimlerini karşılamalıdır.
  • Düğüm havuzu VirtualMachineScaleSets kullanmaktadır.

Azure PowerShell ile AKS kümesi oluşturmak için aşağıdaki adımları kullanın:

  1. Aşağıdaki komutu kullanarak Windows Server kapsayıcılarınız için yönetici kimlik bilgilerini oluşturun. Bu komut, WindowsProfileAdminUserName ve WindowsProfileAdminUserPassword girmenizi ister. Parola en az 14 karakter olmalı ve Windows Server parola karmaşıklığı gereksinimlerini karşılamalıdır.

    $AdminCreds = Get-Credential `
        -Message 'Please create the administrator credentials for your Windows Server containers'
    
  2. cmdlet'ini New-AzAksCluster kullanarak kümenizi oluşturun ve WindowsProfileAdminUserName ile WindowsProfileAdminUserPassword parametrelerini belirtin.

    New-AzAksCluster -ResourceGroupName myResourceGroup `
        -Name myAKSCluster `
        -KubernetesVersion 1.33 `
        -NodeCount 2 `
        -NetworkPlugin azure `
        -NodeVmSetType VirtualMachineScaleSets `
        -WindowsProfileAdminUserName $AdminCreds.UserName `
        -WindowsProfileAdminUserPassword $secureString `
        -GenerateSshKey
    

    Birkaç dakika sonra komut tamamlanıp kümeyle ilgili JSON biçimli bilgileri döndürür. Bazen kümenin hazırlanması birkaç dakikadan uzun sürebilir. Sağlama için 10 dakikaya kadar izin verin.

    Parola doğrulama hatası alırsanız ve ayarladığınız parola uzunluk ve karmaşıklık gereksinimlerini karşılıyorsa kaynak grubunuzu başka bir bölgede oluşturmayı deneyin. Ardından yeni kaynak grubuyla küme oluşturmayı deneyin.

    Düğüm havuzunu oluştururken yönetici kullanıcı adı ve parola belirtmezseniz, kullanıcı adı azureuser olarak ayarlanır ve parola rastgele bir değere ayarlanır. Daha fazla bilgi için Windows Server SSS bölümüne bakın.

    Yönetici kullanıcı adı değiştirilemez, ancak az aks update kullanarak AKS kümenizin Windows Server düğümlerinde kullanılan yönetici parolasını değiştirebilirsiniz. Daha fazla bilgi için Windows Server SSS bölümüne bakın.

    Windows Server kapsayıcıları için düğüm havuzlarını destekleyen bir AKS kümesi çalıştırmak için kümenizin Azure CNI (gelişmiş) ağ eklentisi kullanan bir ağ ilkesi kullanması gerekir. -NetworkPlugin azure parametresi Azure CNI'yi belirtir.

Düğüm havuzu ekleyin

Varsayılan olarak, Linux kapsayıcılarını çalıştırabilen bir düğüm havuzu ile bir AKS kümesi oluşturulur. Linux düğüm havuzuyla birlikte Windows Server kapsayıcılarını çalıştırabilen başka bir düğüm havuzu eklemeniz gerekir.

Windows düğüm havuzu oluşturmak için desteklenen OsType ve OsSkubelirtmeniz gerekir. Kümeniz için uygun olan bilgileri belirlemek için aşağıdaki tabloda yer alan bilgileri kullanın:

OsType OsSku Varsayılan Desteklenen K8s sürümleri Ayrıntılar
windows Windows2025 K8s 1.36+ için varsayılan 1.32+ Güncelleştirilmiş varsayılanlar: containerd 2.0, 2. Nesil görüntüsü varsayılan olarak kullanılır. FIPS gereklidir - düğüm havuzunu oluştururken -EnableFIPS ifadesini ekleyin.
windows Windows2022 K8s 1.25-1.35'te standart ayar olarak K8s 1.37 ve üzeri sürümlerde mevcut değildir. Haziran 2028'de kullanımdan kaldırma. Güncelleştirilmiş varsayılanlar: FIPS varsayılan olarak etkindir.

Windows Server 2025, Kubernetes sürüm 1.36 ve üzeri için varsayılan işletim sistemidir. Windows Server 2022, Kubernetes'in 1.25-1.35 sürümleri için varsayılandır. Belirli bir işletim sistemi SKU'su belirtmezseniz Azure, küme tarafından kullanılan Kubernetes sürümü için varsayılan SKU'ya sahip yeni düğüm havuzunu oluşturur.

Önemli

30 Haziran 2028'den itibaren Azure Kubernetes Service (AKS) artık Windows Server 2022 düğüm havuzlarını desteklememektedir. Windows Server 2022, Kubernetes sürüm 1.37 ve sonraki sürümlerde desteklenmez. 30 Haziran 2029'dan itibaren AKS, Windows Server 2022 için tüm mevcut düğüm görüntülerini kaldıracak ve bu da ölçeklendirme işlemlerinin başarısız olacağı anlamına gelir. Bu kullanımdan kaldırma hakkında daha fazla bilgi için Bkz. GitHub Kullanımdan Kaldırma Sorunu ve Azure Güncelleştirmeleri kullanımdan kaldırma duyurusu. Duyurular ve güncelleştirmeler hakkında bilgi sahibi olmak için AKS sürüm notlarını izleyin.

  • cmdlet'ini New-AzAksNodePool kullanarak bir Windows Server düğüm havuzu ekleyin. Aşağıdaki komut npwin adlı yeni bir düğüm havuzu oluşturur ve bunu myAKSCluster'a ekler. Komutu çalıştırılırken New-AzAksClusteroluşturulan varsayılan sanal ağda varsayılan alt ağı da kullanır. Windows Server 2025 düğüm havuzları FIPS özellikli bir görüntü gerektirdiğinden aşağıdaki komut şunları içerir-EnableFIPS:

    New-AzAksNodePool -ResourceGroupName myResourceGroup `
        -ClusterName myAKSCluster `
        -VmSetType VirtualMachineScaleSets `
        -OsType Windows `
        -OsSKU Windows2025 `
        -EnableFIPS `
        -Name npwin
    

Kümeye bağlanma

Kubernetes kümelerinizi yönetmek için Kubernetes komut satırı istemcisi kubectl kullanırsınız. Azure Cloud Shell kullanıyorsanız zaten kubectl yüklüdür. kubectl öğesini yerel olarak yüklemek istiyorsanız Install-AzAzAksCliTool cmdlet'ini kullanabilirsiniz.

  1. Kubernetes kümenize bağlanmak için kubectl bileşenini Import-AzAksCredential cmdlet'i ile yapılandırın. Bu komut kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanacak şekilde yapılandırmaktadır.

    Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
    
  2. Küme düğümlerinin listesini döndüren komutunu kullanarak kubectl get kümenize bağlantıyı doğrulayın.

    kubectl get nodes -o wide
    

    Aşağıdaki örnek çıktı, kümedeki tüm düğümleri gösterir. Tüm düğümlerin durumunun Hazır olduğundan emin olun:

    NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION      CONTAINER-RUNTIME
    aks-nodepool1-20786768-vmss000000   Ready    agent   22h   v1.33.12   10.224.0.4    <none>        Ubuntu 22.04.5 LTS               5.15.0-1116-azure   containerd://1.7.33-1
    aks-nodepool1-20786768-vmss000001   Ready    agent   22h   v1.33.12   10.224.0.33   <none>        Ubuntu 22.04.5 LTS               5.15.0-1116-azure   containerd://1.7.33-1
    aksnpwin000000                      Ready    agent   20h   v1.33.12   10.224.0.62   <none>        Windows Server 2025 Datacenter   10.0.26100.32995    containerd://2.0.4+azure
    

Uygulamayı dağıt

Kubernetes bildirim dosyası, küme için hangi kapsayıcı görüntülerinin çalıştırılması gibi istenen bir durumu tanımlar. Bu makalede, ASP.NET örnek uygulamasını bir Windows Server kapsayıcısında çalıştırmak için gereken tüm nesneleri oluşturmak için bir bildirim kullanırsınız. Bu bildirim, ASP.NET örnek uygulaması için bir Kubernetes dağıtımı ve uygulamaya İnternet'ten erişmek için bir dış Kubernetes hizmeti içerir.

ASP.NET örnek uygulaması .NET Framework Örnekleri'nin bir parçasıdır ve Windows Server kapsayıcısında çalışır. AKS, Windows Server kapsayıcılarının Windows Server 2022 veya üzeri görüntüleri temel almalarını gerektirir. Kubernetes bildirim dosyasının ayrıca AKS kümenize ASP.NET örnek uygulamanızın podunu Windows Server kapsayıcılarını çalıştırabilen bir düğümde çalıştırmasını bildirmek için bir düğüm seçici tanımlaması gerekir.

  1. Adlı sample.yaml bir dosya oluşturun ve aşağıdaki YAML tanımında kopyalayın:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sample
      labels:
        app: sample
    spec:
      replicas: 1
      template:
        metadata:
          name: sample
          labels:
            app: sample
        spec:
          nodeSelector:
            "kubernetes.io/os": windows
          containers:
          - name: sample
            image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
            resources:
              limits:
                cpu: 1
                memory: 800M
            ports:
              - containerPort: 80
      selector:
        matchLabels:
          app: sample
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sample
    spec:
      type: LoadBalancer
      ports:
      - protocol: TCP
        port: 80
      selector:
        app: sample
    

    YAML bildirim dosyalarının dökümü için bkz . Dağıtımlar ve YAML bildirimleri.

    YAML dosyasını yerel olarak oluşturur ve kaydederseniz, Dosyaları Karşıya Yükle/İndir düğmesini seçip yerel dosya sisteminizden dosyayı seçerek bildirim dosyasını CloudShell'deki varsayılan dizininize yükleyebilirsiniz.

  2. komutunu kullanarak uygulamayı dağıtın kubectl apply ve YAML bildiriminizin adını belirtin.

    kubectl apply -f sample.yaml
    

    Aşağıdaki örnek çıktıda başarıyla oluşturulan dağıtım ve hizmet gösterilmektedir:

    deployment.apps/sample created
    service/sample created
    

Uygulamayı test etme

Uygulama çalıştırıldığında Kubernetes hizmeti, uygulamanın ön ucunu İnternet'te kullanıma sunar. Bu işlemin tamamlanması birkaç dakika sürebilir. Bazen hizmetin sağlanması birkaç dakikadan uzun sürebilir. Sağlama için 10 dakikaya kadar izin verin.

  1. komutunu kullanarak kubectl get pods dağıtılan podların durumunu denetleyin. Devam etmeden önce tüm podların Running olduğundan emin olun.

    kubectl get pods
    
  2. kubectl get service komutunu --watch argümanıyla kullanarak ilerleme durumunu izleyin.

    kubectl get service sample --watch
    

    Başlangıçta çıktı, örnek hizmetin EXTERNAL-IP değerini beklemede olarak gösterir:

    NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
    sample             LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s
    
  3. EXTERNAL-IP adresi pending durumundan gerçek bir genel IP adresine değiştiğinde, CTRL-C watch işlemini durdurmak için kubectl kullanın.

    Aşağıdaki örnek çıktıda hizmete atanmış geçerli bir genel IP adresi gösterilmektedir:

    sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m
    
  4. Hizmetinizin dış IP adresine bir web tarayıcısı açarak örnek uygulamayı iş başında görün.

    ASP.NET örnek uygulamaya göz atma işleminin ekran görüntüsü.

Kaynakları silme

AKS öğreticisini incelemeyi planlamıyorsanız Azure ücretlendirmesini önlemek için kümenizi silin.

  • cmdlet'ini kullanarak Remove-AzResourceGroup kaynak grubunu, kapsayıcı hizmetini ve tüm ilgili kaynakları kaldırın.

    Remove-AzResourceGroup -Name myResourceGroup
    

    Not

    AKS kümesi, sistem tarafından atanan yönetilen kimlik (bu hızlı başlangıçta kullanılan varsayılan kimlik seçeneği) ile oluşturulmuştur. Azure platformu bu kimliği yönetir, bu nedenle kaldırma gerektirmez.

Sonraki adımlar

Bu hızlı başlangıçta bir Kubernetes kümesi dağıttınız ve ardından bir Windows Server kapsayıcısında ASP.NET örnek uygulamasını dağıttınız. Bu örnek uygulama yalnızca tanıtım amaçlıdır ve Kubernetes uygulamaları için en iyi yöntemlerin tümünü temsil etmez. Üretim için AKS ile tam çözüm oluşturma yönergeleri için bkz . AKS çözümü kılavuzu.

AKS hakkında daha fazla bilgi edinmek ve eksiksiz bir koddan dağıtım örneğine gitmek için Kubernetes kümesi öğreticisine geçin.