Aracılığıyla paylaş


Windows Server kapsayıcıları oluşturma

Şunlar için geçerlidir: Azure Stack HCI, 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 Windowskomutunu 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 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 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.

  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ğı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.

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

    ASP.NET örnek 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.

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

Sonraki adımlar

Arc tarafından etkinleştirilen AKS'ye genel bakış