Bagikan melalui


Membuat kontainer Windows Server

Berlaku untuk: Azure Local, versi 23H2

Artikel ini menjelaskan cara menggunakan Azure CLI untuk menyebarkan kumpulan simpul ke kluster AKS yang sudah ada yang menjalankan kontainer Windows Server. Ini juga menjelaskan cara menyebarkan aplikasi sampel ASP.NET dalam kontainer Windows Server ke kluster.

Prasyarat

Buat kluster AKS dengan mengikuti instruksi dalam Cara membuat kluster AKS.

Menambahkan kumpulan simpul

Secara default, kluster Kubernetes dibuat dengan kumpulan simpul yang dapat menjalankan kontainer Linux. Anda harus menambahkan kumpulan simpul lain yang dapat menjalankan kontainer Windows Server bersama kumpulan simpul Linux.

Tambahkan kumpulan simpul dengan host kontainer Windows menggunakan az aksarc nodepool add perintah dengan parameter --os-type Windows. Jika SKU sistem operasi tidak ditentukan, kumpulan simpul diatur ke OS default berdasarkan versi Kubernetes kluster. Windows Server 2022 adalah sistem operasi default untuk Kubernetes versi 1.25.0 dan yang lebih tinggi. Windows Server 2019 adalah OS default untuk versi sebelumnya.

  • Untuk menggunakan Windows Server 2019, tentukan parameter berikut:
    • os-type atur ke Windows.
    • os-sku atur ke Windows2019.
  • Untuk menggunakan Windows Server 2022, tentukan parameter berikut:
    • os-type atur ke Windows.
    • os-sku atur ke Windows2022 (opsional).

Perintah berikut membuat kumpulan simpul baru bernama $mynodepool dan menambahkannya dengan $myAKSCluster satu simpul Windows Server 2022:

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

Menyambungkan ke kluster AKS

Sekarang Anda dapat terhubung ke kluster Kubernetes dengan menjalankan az connectedk8s proxy perintah dari komputer lokal Anda. Pastikan Anda masuk ke Azure sebelum menjalankan perintah ini. Jika Anda memiliki beberapa langganan Azure, pilih ID langganan yang sesuai menggunakan perintah az account set .

Perintah ini mengunduh kubeconfig kluster Kubernetes ke komputer lokal dan membuka saluran koneksi proksi ke kluster Kubernetes lokal Anda. Saluran terbuka selama perintah ini berjalan. Biarkan perintah ini berjalan selama Anda ingin mengakses kluster Anda. Jika perintah kehabisan waktu, tutup jendela CLI, buka yang baru, lalu jalankan perintah lagi.

Anda harus memiliki izin Kontributor pada grup sumber daya yang menghosting kluster AKS agar berhasil menjalankan perintah berikut:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Output yang diharapkan:

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.

Tetap jalankan sesi ini dan sambungkan ke kluster Kubernetes Anda dari terminal/perintah yang berbeda. Verifikasi bahwa Anda dapat terhubung ke kluster Kubernetes dengan menjalankan perintah kubectl get. Perintah ini mengembalikan daftar node kluster:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

Contoh output berikut menunjukkan simpul yang dibuat di langkah-langkah sebelumnya. Pastikan status simpul Siap:

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

Menyebarkan aplikasi

File manifes Kube menentukan status kluster yang diinginkan, seperti gambar kontainer mana yang akan dijalankan.

Anda dapat menggunakan manifes YAML untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi sampel ASP.NET dalam kontainer Windows Server. Manifes ini mencakup penyebaran Kubernetes untuk aplikasi sampel ASP.NET dan layanan Kubernetes untuk mengakses aplikasi dari internet.

Aplikasi sampel ASP.NET disediakan sebagai bagian dari sampel .NET Framework dan berjalan dalam kontainer Windows Server. AKS memerlukan kontainer Windows Server yang akan didasarkan pada gambar Windows Server 2019 atau yang lebih besar. File manifes Kubernetes juga harus menentukan pemilih simpul untuk memastikan pod aplikasi sampel ASP.NET Anda dijadwalkan pada simpul yang dapat menjalankan kontainer Windows Server.

  1. Buat file bernama sample.yaml dan salin dalam definisi YAML berikut:

    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
    

    Untuk perincian file manifes YAML, lihat Manifes Penyebaran dan YAML.

  2. Sebarkan aplikasi menggunakan perintah kubectl applydan tentukan nama manifes YAML Anda:

    kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
    

Contoh output berikut menunjukkan bahwa penyebaran dan layanan berhasil dibuat:

deployment.apps/sample created
service/sample created

Uji aplikasi

Ketika aplikasi berjalan, layanan Kubernetes mengekspos front end aplikasi ke internet. Diperlukan beberapa menit untuk menyelesaikan proses ini. Terkadang layanan ini memerlukan waktu lebih lama untuk disediakan. Izinkan hingga 10 menit untuk provisi.

  1. Pantau kemajuan menggunakan perintah kubectl get service dengan argumen --watch.

    kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
    

    Awalnya, output menunjukkan EXTERNAL-IP untuk layanan sampel sebagai tertunda:

    NAME   TYPE         CLUSTER-IP EXTERNAL-IP PORT(S)      AGE
    sample LoadBalancer 10.0.37.27 <pending>   80:30572/TCP 6s
    

    Ketika alamat EXTERNAL-IP berubah dari tertunda ke alamat IP, gunakan CTRL-C untuk menghentikan proses kubectl watch. Output contoh berikut menunjukkan alamat IP publik yang valid yang ditetapkan ke layanan:

    sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
    
  2. Lihat contoh aplikasi yang sedang beraksi dengan membuka browser web ke alamat IP eksternal dan port layanan sampel .

    Cuplikan layar memperlihatkan aplikasi sampel ASP.NET.

    Jika Anda menerima batas waktu koneksi saat mencoba memuat halaman, Anda harus memverifikasi bahwa aplikasi sampel siap menggunakan kubectl get pods --watch perintah . Terkadang, kontainer Windows tidak dimulai pada saat alamat IP eksternal Anda tersedia.

Menghapus kumpulan simpul

Hapus kumpulan simpul menggunakan az akshybrid nodepool delete perintah :

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

Langkah berikutnya

Gambaran umum AKS diaktifkan oleh Arc