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 aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı 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.
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.
Kaynak grubu oluşturmak için New-AzResourceGroup cmdlet'ini kullanın. 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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. 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 kullanır
VirtualMachineScaleSets
.
Azure PowerShell ile AKS kümesi oluşturmak için şu adımları izleyin:
Aşağıdaki komutu kullanarak Windows Server kapsayıcılarınız için yönetici kimlik bilgilerini oluşturun. Bu komut bir ve
WindowsProfileAdminUserPassword
girmeniziWindowsProfileAdminUserName
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'
New-AzAksCluster cmdlet'ini kullanarak kümenizi oluşturun ve ve
WindowsProfileAdminUserPassword
parametrelerini belirtinWindowsProfileAdminUserName
.New-AzAksCluster -ResourceGroupName myResourceGroup ` -Name myAKSCluster ` -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 sağlanması 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 bkz . Windows Server SSS.
Yönetici kullanıcı adı değiştirilemez, ancak KULLANARAK AKS kümenizin Windows Server düğümleri
az aks update
için kullandığı yönetici parolasını değiştirebilirsiniz. Daha fazla bilgi için bkz . Windows Server SSS.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ş)][azure-cni] ağ eklentisini kullanan bir ağ ilkesi kullanması gerekir.
-NetworkPlugin azure
parametresi Azure CNI'yi belirtir.
Düğüm havuzu ekleme
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 Server 2022, Kubernetes sürüm 1.25.0 ve üzeri için varsayılan işletim sistemidir. Windows Server 2019, önceki sürümler için varsayılan işletim sistemidir. 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.
- Windows düğüm havuzu (varsayılan SKU)
- Windows Server 2022 düğüm havuzu
- Windows Server 2019 düğüm havuzu
Varsayılan işletim sistemi SKU'sunu kullanmak için, bir işletim sistemi SKU'su belirtmeden düğüm havuzunu oluşturun. Düğüm havuzu, kümenin Kubernetes sürümüne göre varsayılan işletim sistemi için yapılandırılır.
New-AzAksNodePool cmdlet'ini 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. Komut, çalıştırırken New-AzAksCluster
oluşturulan varsayılan sanal ağda varsayılan alt ağı da kullanır:
New-AzAksNodePool -ResourceGroupName myResourceGroup `
-ClusterName myAKSCluster `
-VmSetType VirtualMachineScaleSets `
-OsType Windows `
-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. Yerel olarak yüklemek kubectl
istiyorsanız cmdlet'ini Install-AzAzAksCliTool
kullanabilirsiniz.
Import-AzAksCredential cmdlet'ini kullanarak Kubernetes kümenize bağlanacak şekilde yapılandırın
kubectl
. Bu komut kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanacak şekilde yapılandırmaktadır.Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
Küme düğümlerinin listesini döndüren kubectl get komutunu kullanarak kümenize bağlantıyı doğrulayın.
kubectl get nodes
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 aks-nodepool1-20786768-vmss000000 Ready agent 22h v1.27.7 aks-nodepool1-20786768-vmss000001 Ready agent 22h v1.27.7 aksnpwin000000 Ready agent 21h v1.27.7
Uygulamayı dağıtma
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ı olarak sağlanır ve bir Windows Server kapsayıcısında çalışır. AKS, Windows Server kapsayıcılarının Windows Server 2019 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.
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.
kubectl apply komutunu kullanarak uygulamayı dağıtın 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.
kubectl get pods komutunu kullanarak dağıtılan podların durumunu denetleyin. Devam etmeden önce tüm podların olmasını
Running
sağlayın.kubectl get pods
bağımsız değişkeniyle kubectl get service komutunu kullanarak ilerleme durumunu
--watch
izleyin.kubectl get service sample --watch
Başlangıçta çıkış, örnek hizmet için EXTERNAL-IP'yi beklemede olarak gösterir:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
EXTERNAL-IP adresi beklemeden gerçek bir genel IP adresine değiştiğinde
kubectl
izleme işlemini durdurmak için kullanınCTRL-C
. Aşağıdaki örnek çıktı hizmete atanmış geçerli bir genel IP adresini gösterir:sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Hizmetinizin dış IP adresine bir web tarayıcısı açarak örnek uygulamayı iş başında görün.
Kaynakları silme
AKS öğreticisini incelemeyi planlamıyorsanız Azure ücretlendirmesini önlemek için kümenizi silin. Kaynak grubunu, kapsayıcı hizmetini ve tüm ilgili kaynakları kaldırmak için Remove-AzResourceGroup cmdlet'ini çağı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.
Azure Kubernetes Service