Bagikan melalui


Menyebarkan kontainer Windows Server pada kluster Azure Kubernetes Service (AKS) menggunakan Azure CLI

Azure Kubernetes Service (AKS) merupakan layanan Kube terkelola yang memungkinkan Anda menyebarkan dan mengelola kluster dengan cepat. Dalam artikel ini, Anda menggunakan Azure CLI untuk menyebarkan kluster AKS yang menjalankan kontainer Windows Server. Anda juga menyebarkan aplikasi sampel ASP.NET dalam kontainer Server Windows ke kluster.

Catatan

Untuk memulai provisi kluster AKS dengan cepat, artikel ini menyertakan langkah-langkah untuk menyebarkan kluster dengan pengaturan default hanya untuk tujuan evaluasi. Sebelum menyebarkan kluster siap produksi, kami sarankan Anda membiasakan diri dengan arsitektur referensi dasar kami untuk mempertimbangkan bagaimana kluster tersebut selaras dengan kebutuhan bisnis Anda.

Sebelum Anda mulai

Panduan memulai cepat ini mengasumsikan pemahaman dasar tentang konsep Kubernetes. Untuk informasi lebih, lihat konsep inti Kubernetes untuk Azure Kubernetes Service (AKS).

  • Jika Anda tidak memiliki akun Azure, buat akun gratis sebelum memulai.
  • Artikel ini memerlukan versi 2.0.64 atau yang lebih baru dari Azure CLI. Jika Anda menggunakan Azure Cloud Shell, versi terbaru sudah diinstal di sana.
  • Pastikan identitas yang Anda gunakan untuk membuat kluster Anda memiliki izin minimum yang sesuai. Untuk informasi selengkapnya tentang akses dan identitas AKS, lihat Opsi akses dan identitas untuk Azure Kubernetes Service (AKS).
  • Jika Anda memiliki beberapa langganan Azure, pilih ID langganan yang sesuai tempat sumber daya harus ditagih menggunakan az account set perintah . Untuk informasi selengkapnya, lihat Cara mengelola langganan Azure – Azure CLI.
  • Jika Anda menggunakan --os-sku Windows2025, Anda perlu menginstal perluasan aks-preview dan mendaftarkan penanda pratinjau. Versi minimumnya adalah 18.0.0b40.

aks-preview Menginstal ekstensi

Penting

Fitur pratinjau AKS tersedia atas dasar layanan mandiri dan pendaftaran sukarela. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Pratinjau AKS sebagian didukung oleh dukungan pelanggan berdasarkan upaya terbaik yang dapat dilakukan. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

  1. aks-preview Instal ekstensi Azure CLI menggunakan az extension add perintah .
az extension add --name aks-preview
  1. Perbarui ke versi terbaru ekstensi menggunakan az extension update perintah . Windows Server 2025 memerlukan minimal 18.0.0b40.
az extension update --name aks-preview

Daftarkan AksWindows2025Preview penanda fitur

  1. Daftarkan AksWindows2025Preview bendera fitur menggunakan perintah [az feature register][az-feature-register].
az feature register --name AksWindows2025Preview --namespace Microsoft.ContainerService
  1. Verifikasi status pendaftaran menggunakan perintah [az feature show][az-feature-show]. Dibutuhkan beberapa menit agar status menampilkan Terdaftar.
az feature show --name AksWindows2025Preview --namespace Microsoft.ContainerService
  1. Saat status mencerminkan Terdaftar, perbarui pendaftaran penyedia layanan Microsoft.ContainerService menggunakan perintah [az provider register][az-provider-register].

    az provider register --namespace Microsoft.ContainerService
    

Buat grup sumber daya

Grup sumber daya Azure adalah grup logis tempat sumber daya Azure disebarkan dan dikelola. Saat membuat grup sumber daya, Anda akan diminta untuk menentukan lokasi. Lokasi ini adalah tempat metadata grup sumber daya disimpan dan tempat sumber daya Anda berjalan di Azure jika Anda tidak menentukan wilayah lain selama pembuatan sumber daya.

  • Buat grup sumber daya menggunakan perintah az group create. Contoh berikut membuat grup sumber daya bernama myResourceGroup di lokasi WestUS2 .

    export RANDOM_SUFFIX=$(openssl rand -hex 3)
    export REGION="canadacentral"
    export MY_RESOURCE_GROUP_NAME="myAKSResourceGroup$RANDOM_SUFFIX"
    az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
    

    Hasil:

    {
      "id": "/subscriptions/xxxxx-xxxxx-xxxxx-xxxxx/resourceGroups/myResourceGroupxxxxx",
      "location": "WestUS2",
      "managedBy": null,
      "name": "myResourceGroupxxxxx",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null,
      "type": "Microsoft.Resources/resourceGroups"
    }
    

Membuat kluster AKS

Di bagian ini, kami membuat kluster AKS dengan konfigurasi berikut:

  • Kluster dikonfigurasi dengan dua simpul untuk memastikan kluster beroperasi dengan andal. Node adalah komputer virtual (VM) Azure yang menjalankan komponen node Kubernetes dan runtime kontainer.
  • Parameter --windows-admin-password dan --windows-admin-username mengatur informasi masuk administrator untuk setiap simpul Server Windows pada kluster dan harus memenuhi persyaratan kata sandi Server Windows.
  • Kumpulan simpul menggunakan VirtualMachineScaleSets.

Gunakan langkah-langkah berikut untuk membuat kluster AKS dengan Azure CLI:

  1. Buat nama pengguna untuk digunakan sebagai informasi masuk admin untuk simpul Windows Server pada kluster Anda.

    export WINDOWS_USERNAME="winadmin"
    
  2. Buat kata sandi untuk nama pengguna administrator yang Anda buat di langkah sebelumnya. Kata sandi harus minimal 14 karakter dan memenuhi persyaratan kompleksitas kata sandi Windows Server.

    export WINDOWS_PASSWORD=$(echo "P@ssw0rd$(openssl rand -base64 10 | tr -dc 'A-Za-z0-9!@#$%^&*()' | cut -c1-6)")
    
  3. Buat kluster Anda dengan menggunakan perintah az aks create dan tentukan parameter --windows-admin-username serta --windows-admin-password. Contoh perintah berikut membuat kluster menggunakan nilai dari WINDOWS_USERNAME dan WINDOWS_PASSWORD Anda atur di perintah sebelumnya. Akhiran acak ditambahkan ke nama kluster untuk keunikan.

    export MY_AKS_CLUSTER="myAKSCluster$RANDOM_SUFFIX"
    az aks create \
        --resource-group $MY_RESOURCE_GROUP_NAME \
        --name $MY_AKS_CLUSTER \
        --node-count 2 \
        --enable-addons monitoring \
        --generate-ssh-keys \
        --windows-admin-username $WINDOWS_USERNAME \
        --windows-admin-password $WINDOWS_PASSWORD \
        --vm-set-type VirtualMachineScaleSets \
        --network-plugin azure
    

    Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster. Terkadang, kluster dapat memakan waktu lebih dari beberapa menit untuk dipersiapkan. Berikan waktu hingga 10 menit untuk penyediaan.

    Jika Anda mendapatkan kesalahan validasi kata sandi, dan kata sandi yang Anda tetapkan memenuhi persyaratan panjang dan kompleksitas, coba buat grup sumber daya Anda di wilayah lain. Kemudian coba buat kluster dengan grup sumber daya baru.

    Jika Anda tidak menentukan nama pengguna dan kata sandi administrator saat membuat kumpulan simpul, nama pengguna diatur ke azureuser dan kata sandi diatur ke nilai acak. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Windows Server

    Anda tidak dapat mengubah nama pengguna administrator, tetapi Anda dapat mengubah kata sandi administrator yang digunakan kluster AKS Anda untuk simpul Windows Server menggunakan az aks update. Untuk informasi selengkapnya, lihat Tanya Jawab Umum Windows Server.

    Untuk menjalankan kluster AKS yang mendukung kumpulan simpul untuk kontainer Server Windows, kluster Anda perlu menggunakan kebijakan jaringan yang menggunakan plugin jaringan Azure CNI (lanjutan). Parameter --network-plugin azure menentukan Azure CNI.

Menambahkan kumpulan simpul

Secara default, semua kluster AKS dibuat dengan kumpulan simpul yang dapat menjalankan kontainer Linux. Anda harus menambahkan kumpulan simpul Windows yang dapat menjalankan kontainer Windows Server bersama kumpulan simpul Linux. Untuk memeriksa apakah Anda memiliki kumpulan simpul Windows di kluster, Anda dapat melihat simpul pada kluster Anda menggunakan kubectl get nodes -o wide perintah .

Untuk membuat kumpulan simpul Windows, Anda perlu menentukan yang didukung OsType dan OsSku. Gunakan informasi dalam tabel berikut untuk menentukan mana yang sesuai untuk kluster Anda:

OsType OsSku Bawaan Versi K8s yang didukung Detail lebih lanjut
windows Windows2025 Saat ini dalam pratinjau. Bukan default. 1.32+ Default yang diperbarui: containerd 2.0, gambar Generasi 2 digunakan secara default.
windows Windows2022 Default pada K8s 1.25-1.35 Tidak tersedia di K8s 1.36+ Pensiun pada Maret 2027. Pengaturan bawaan yang diperbarui: FIPS diaktifkan secara bawaan.
windows Windows2019 Default di K8s 1.24 dan versi di bawahnya Tidak tersedia di K8s 1.33+ Pensiun pada Maret 2026.

Windows Server 2022 adalah sistem operasi default untuk Kubernetes versi 1.25-1.35. Windows Server 2019 adalah OS default untuk versi sebelumnya. Jika Anda tidak menentukan SKU OS tertentu, Azure membuat kumpulan simpul baru dengan SKU default untuk versi Kubernetes yang digunakan oleh kluster.

Catatan

  • Windows Server 2019 berhenti pada 1 Maret 2026. Setelah tanggal tersebut, AKS tidak akan lagi menghasilkan gambar node baru atau menyediakan patch keamanan. Setelah tanggal tersebut, Anda tidak akan dapat membuat kumpulan simpul baru dengan Windows Server 2019 pada versi Kubernetes apa pun. Semua kumpulan simpul yang ada dengan Windows Server 2019 tidak akan didukung. Windows Server 2019 tidak didukung di Kubernetes versi 1.33 ke atas. Mulai 1 April 2027, AKS akan menghapus semua gambar simpul yang ada untuk Windows Server 2019, yang berarti bahwa operasi penskalaan akan gagal.
  • Windows Server 2022 berhenti pada 15 Maret 2027. Setelah tanggal tersebut, AKS tidak akan lagi menghasilkan gambar node baru atau menyediakan patch keamanan. Setelah tanggal tersebut, Anda tidak akan dapat membuat kumpulan simpul baru dengan Windows Server 2022 pada versi Kubernetes apa pun. Semua kumpulan simpul yang ada dengan Windows Server 2022 tidak akan didukung. Windows Server 2022 tidak didukung di Kubernetes versi 1.36 ke atas. Mulai 1 April 2028, AKS akan menghapus semua gambar simpul yang ada untuk Windows Server 2022, yang berarti bahwa operasi penskalaan akan gagal.

Untuk informasi selengkapnya, lihat Catatan rilis AKS. Untuk tetap mendapatkan informasi terbaru tentang versi OS Windows Server terbaru dan pelajari selengkapnya tentang peta strategi kami tentang apa yang direncanakan untuk dukungan di AKS, lihat peta jalan publik AKS kami.

  • Tambahkan kumpulan simpul Windows menggunakan perintah az aks nodepool add dengan OsType dan OsSku yang ditentukan. Jika Anda tidak menentukan SKU OS tertentu, Azure membuat kumpulan simpul baru dengan SKU default untuk versi Kubernetes yang digunakan oleh kluster.

    az aks nodepool add \
      --resource-group $MY_RESOURCE_GROUP_NAME \
      --cluster-name $MY_AKS_CLUSTER \
      --os-type Windows \
      --os-sku Windows2022 \
      --name npwin \
      --node-count 1
    

    Perintah ini membuat kumpulan simpul baru bernama npwin dan menambahkannya ke myAKSCluster. Perintah ini juga menggunakan subnet default di jaringan virtual default yang dibuat saat menjalankan az aks create.

Menyambungkan ke kluster

Anda menggunakan kubectl, klien baris perintah Kube, untuk mengelola kluster Kubernetes Anda. Jika Anda menggunakan Azure Cloud Shell, kubectl sudah terpasang. Jika Anda ingin menginstal dan menjalankan kubectl secara lokal, gunakan az aks install-cli perintah .

  1. Konfigurasikan kubectl untuk terhubung ke kluster Kubernetes menggunakan perintah az aks get-credentials. Perintah ini mengunduh kredensial dan mengonfigurasi Kubernetes CLI untuk menggunakannya.

    az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_AKS_CLUSTER
    
  2. Verifikasi koneksi ke kluster Anda menggunakan kubectl get perintah , yang mengembalikan daftar node kluster.

    kubectl get nodes -o wide
    

    Contoh output berikut menunjukkan semua simpul dalam kluster. Pastikan status semua simpul Siap:

    NAME                                STATUS   ROLES   AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION      CONTAINER-RUNTIME
    aks-nodepool1-20786768-vmss000000   Ready    agent   22h   v1.27.7   10.224.0.4    <none>        Ubuntu 22.04.3 LTS               5.15.0-1052-azure   containerd://1.7.5-1
    aks-nodepool1-20786768-vmss000001   Ready    agent   22h   v1.27.7   10.224.0.33   <none>        Ubuntu 22.04.3 LTS               5.15.0-1052-azure   containerd://1.7.5-1
    aksnpwin000000                      Ready    agent   20h   v1.27.7   10.224.0.62   <none>        Windows Server 2022 Datacenter   10.0.20348.2159     containerd://1.6.21+azure
    

    Catatan

    Runtime kontainer untuk setiap pool node ditampilkan pada CONTAINER-RUNTIME. Nilai runtime kontainer dimulai dengan containerd://, yang berarti bahwa mereka masing-masing menggunakan containerd untuk runtime kontainer.

Menyebarkan aplikasi

File manifes Kubernetes menentukan status yang diinginkan untuk kluster, seperti gambar kontainer apa yang akan dijalankan. Dalam artikel ini, Anda menggunakan manifes untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi sampel ASP.NET dalam kontainer Windows Server. Manifes ini mencakup penyebaran Kube untuk aplikasi contoh ASP.NET dan layanan Kube eksternal untuk mengakses aplikasi dari internet.

Aplikasi contoh ASP.NET disediakan sebagai bagian dari Sampel .NET Framework dan berjalan dalam kontainer Windows Server. AKS memerlukan kontainer Windows Server yang didasarkan pada citra Windows Server 2019 atau versi yang lebih baru. File manifes Kubernetes juga harus menentukan pemilih simpul untuk memberi tahu kluster AKS Anda agar menjalankan pod aplikasi contoh ASP.NET pada node yang dapat mengoperasikan container 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 mengenai berkas manuskrip YAML, lihat Penyebaran dan Manifes YAML.

    Jika Anda membuat dan menyimpan file YAML secara lokal, maka Anda dapat mengunggah file manifes ke direktori default Anda di CloudShell dengan memilih tombol Unggah/Unduh file dan memilih file dari sistem file lokal Anda.

  2. Sebarkan aplikasi menggunakan kubectl apply perintah dan tentukan nama manifes YAML Anda.

    kubectl apply -f sample.yaml
    

    Contoh output berikut menunjukkan penyebaran dan layanan yang 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. Berikan waktu hingga 10 menit untuk penyediaan.

  1. Periksa status pod yang disebarkan menggunakan perintah kubectl get pods. Pastikan semua pod berada dalam keadaan Running sebelum melanjutkan.

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

    while true; do
      export EXTERNAL_IP=$(kubectl get service sample -o jsonpath="{.status.loadBalancer.ingress[0].ip}" 2>/dev/null)
      if [[ -n "$EXTERNAL_IP" && "$EXTERNAL_IP" != "<pending>" ]]; then
        kubectl get service sample
        break
      fi
      echo "Still waiting for external IP assignment..."
      sleep 5
    done
    

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

    NAME     TYPE           CLUSTER-IP     EXTERNAL-IP       PORT(S)        AGE
    sample   LoadBalancer   xx.xx.xx.xx    pending          xx:xxxx/TCP     2m
    
  3. Ketika alamat EKSTERNAL-IP berubah dari tertunda ke alamat IP publik aktual, gunakan CTRL-C untuk menghentikan kubectl proses pemantauan.

    Keluaran contoh berikut menunjukkan alamat IP publik yang valid yang diberikan ke layanan.

    {
      "NAME": "sample",
      "TYPE": "LoadBalancer",
      "CLUSTER-IP": "10.0.37.27",
      "EXTERNAL-IP": "52.179.23.131",
      "PORT(S)": "80:30572/TCP",
      "AGE": "2m"
    }
    
  4. Lihat contoh aplikasi yang sedang beraksi dengan membuka browser web ke alamat IP eksternal layanan Anda setelah beberapa menit.

    Cuplikan layar dari penjelajahan ke aplikasi contoh ASP.NET.

Langkah berikutnya

Dalam panduan memulai cepat ini, Anda menyebarkan kluster Kubernetes dan kemudian menyebarkan aplikasi sampel ASP.NET dalam kontainer Windows Server. Aplikasi sampel ini hanya untuk tujuan demo dan tidak mewakili semua praktik terbaik untuk aplikasi Kubernetes. Untuk panduan tentang membuat solusi lengkap dengan AKS untuk produksi, lihat panduan solusi AKS.

Untuk mempelajari lebih lanjut tentang AKS, dan untuk menelusuri contoh kode-ke-penyebaran lengkap, lanjutkan ke tutorial kluster Kubernetes.