Windows Server kapsayıcıları oluşturma
Şunlar için geçerlidir: Azure Yerel, sürüm 23H2
Bu makalede, Windows Server kapsayıcılarını çalıştıran mevcut bir AKS kümesine düğüm havuzu dağıtmak için Azure CLI'nin nasıl kullanılacağı açıklanmaktadır. Ayrıca bir Windows Server kapsayıcısında ASP.NET örnek uygulamasının kümeye nasıl dağıtılacağı da açıklanır.
Önkoşullar
AKS kümeleri oluşturma başlığındaki yönergeleri izleyerek bir AKS kümesi oluşturun.
Düğüm havuzu ekleme
Varsayılan olarak, Linux kapsayıcılarını çalıştırabilen bir düğüm havuzu ile bir Kubernetes 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.
parametresiyle --os-type Windows
komutunu kullanarak az aksarc nodepool add
Windows kapsayıcı konaklarıyla bir düğüm havuzu ekleyin. İşletim sistemi SKU'su belirtilmezse düğüm havuzu, kümenin Kubernetes sürümüne göre varsayılan işletim sistemine ayarlanır. 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.
- Windows Server 2019'ı kullanmak için aşağıdaki parametreleri belirtin:
os-type
olarakWindows
ayarlayın.os-sku
olarakWindows2019
ayarlayın.
- Windows Server 2022'yi kullanmak için aşağıdaki parametreleri belirtin:
os-type
olarakWindows
ayarlayın.os-sku
Windows2022
olarak ayarlayın (isteğe bağlı).
Aşağıdaki komut adlı $mynodepool
yeni bir düğüm havuzu oluşturur ve bunu $myAKSCluster
bir Windows Server 2022 düğümüyle ekler:
az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2022
AKS kümesine bağlanma
Artık yerel 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 yerel makinenize indirir ve şirket içi Kubernetes kümenize bir proxy bağlantı kanalı açar. Bu 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. Komut zaman aşımına ularsa CLI penceresini kapatın, yenisini açın ve komutu yeniden çalıştırın.
Aşağıdaki komutu başarıyla çalıştırmak için AKS 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 örnek çıktı, önceki adımlarda oluşturulan düğümü gösterir. Düğüm durumunun Hazır olduğundan emin olun:
NAME STATUS ROLES AGE VERSION
moc-lesdc78871d Ready control-plane 6d8h v1.26.3
moc-lupeeyd0f8c Ready <none> 6d8h v1.26.3
moc-ww2c8d5ranw Ready <none> 7m18s v1.26.3
Uygulamayı dağıtma
Kubernetes bildirim dosyası, hangi kapsayıcı görüntülerinin çalıştırıldığı gibi kümenin istenen durumunu tanımlar.
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 YAML bildirimi kullanabilirsiniz. Bu bildirim, ASP.NET örnek uygulaması için bir Kubernetes dağıtımı ve uygulamaya İnternet'ten erişmek için bir Kubernetes hizmeti içerir.
ASP.NET örnek uygulaması .NET Framework örneklerinin 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ı, ASP.NET örnek uygulamanızın podlarının Windows Server kapsayıcılarını çalıştırabilen bir düğümde zamanlandığından emin olmak için bir düğüm seçici de tanımlamalıdır.
sample.yaml adlı 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.
kubectl apply komutunu kullanarak uygulamayı dağıtın ve YAML bildiriminizin adını belirtin:
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
Aşağıdaki örnek çıktı, dağıtımın ve hizmetin başarıyla oluşturulduğunu gösterir:
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.
bağımsız değişkeniyle kubectl get service komutunu kullanarak ilerleme durumunu
--watch
izleyin.kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
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 bir IP adresine değiştiğinde 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:
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Örnek hizmetin dış IP adresine ve bağlantı noktasına bir web tarayıcısı açarak örnek uygulamayı iş başında görün.
Sayfayı yüklemeye çalışırken bağlantı zaman aşımı alırsanız, komutunu kullanarak
kubectl get pods --watch
örnek uygulamanın hazır olduğunu doğrulamanız gerekir. Bazen dış IP adresiniz kullanılabilir duruma geldiğinde Windows kapsayıcısı başlatılmaz.
Düğüm havuzunu silme
Komutunu kullanarak az akshybrid nodepool delete
düğüm havuzunu silin:
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait