Windows Server kapsayıcıları oluşturma

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

Bu makalede, Azure CLI kullanarak Windows Server kapsayıcılarını çalıştıran mevcut bir AKS kümesine düğüm havuzu dağıtacaksınız. Ayrıca kümeye bir Windows Server kapsayıcısında ASP.NET örnek uygulaması dağıtırsınız.

Ö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 nodepool 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 Windowskomutunu kullanarak az aksarc nodepool add Windows kapsayıcı konaklarıyla bir düğüm havuzu ekleyin. İşletim sistemi SKU'su belirtilmezse nodepool, 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 olarak Windowsayarlayın.
    • os-sku olarak Windows2019ayarlayın.
  • Windows Server 2022'yi kullanmak için aşağıdaki parametreleri belirtin:
    • os-type olarak Windowsayarlayın.
    • os-skuWindows2022 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 2019 düğümüyle ekler.

az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2019

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 uğradıysa CLI penceresini kapatın, yenisini açın ve ardından 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 çı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-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.

  1. 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.

  2. 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 başarıyla oluşturulan dağıtım ve hizmet gösterilmektedir:

deployment.apps/sample created
service/sample created

Uygulamayı test edin

Uygulama çalıştırıldığında Kubernetes hizmeti, uygulama ö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. 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 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
    

    EXTERNAL-IP adresi beklemede yerine ip adresine değiştiğinde, kubectl watch işlemini durdurmak için CTRL-C kullanın. 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
    
  2. Ö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.

    Örnek ASP.NET uygulamayı gösteren ekran görüntüsü.

    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.

Nodepool'u silme

komutunu kullanarak nodepool'u az akshybrid nodepool delete silin.

az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait

Sonraki adımlar

Bu makalede, var olan bir AKS kümesine bir Windows nodepool dağıttınız ve bir Windows Server kapsayıcısında ASP.NET örnek bir uygulamayı dağıttınız.