Bagikan melalui


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

Azure Kubernetes Service (AKS) merupakan layanan Kube terkelola yang memungkinkan Anda menyebarkan dan mengelola kluster dengan cepat. Dalam artikel ini, Anda menggunakan Azure PowerShell 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

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

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.

Untuk membuat grup sumber daya, gunakan cmdlet New-AzResourceGroup . Contoh berikut ini menunjukkan cara membuat grup sumber daya bernamamyResourceGroupdi wilayah eastus.

New-AzResourceGroup -Name myResourceGroup -Location eastus

Contoh output berikut menunjukkan bahwa grup sumber daya berhasil dibuat:

ResourceGroupName : myResourceGroup
Location          : eastus
ProvisioningState : Succeeded
Tags              :
ResourceId        : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup

Membuat kluster AKS

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

  • Kluster dikonfigurasi dengan dua simpul untuk memastikan kluster beroperasi dengan andal. Simpul adalah komputer virtual (VM) Azure yang menjalankan komponen node Kubernetes dan runtime kontainer.
  • Parameter -WindowsProfileAdminUserName dan -WindowsProfileAdminUserPassword mengatur info masuk administrator untuk simpul Windows Server apa pun pada kluster dan harus memenuhi persyaratan kompleksitas kata sandi Windows Server.
  • Kumpulan simpul menggunakan VirtualMachineScaleSets.

Untuk membuat kluster AKS dengan Azure PowerShell, ikuti langkah-langkah berikut:

  1. Buat kredensial administrator untuk kontainer Windows Server Anda menggunakan perintah berikut. Perintah ini meminta Anda untuk memasukkan WindowsProfileAdminUserName dan WindowsProfileAdminUserPassword. Kata sandi harus minimal 14 karakter dan memenuhi persyaratan kompleksitas kata sandi Windows Server.

    $AdminCreds = Get-Credential `
        -Message 'Please create the administrator credentials for your Windows Server containers'
    
  2. Buat kluster Anda menggunakan cmdlet New-AzAksCluster dan tentukan WindowsProfileAdminUserName parameter dan WindowsProfileAdminUserPassword .

    New-AzAksCluster -ResourceGroupName myResourceGroup `
        -Name myAKSCluster `
        -NodeCount 2 `
        -NetworkPlugin azure `
        -NodeVmSetType VirtualMachineScaleSets `
        -WindowsProfileAdminUserName $AdminCreds.UserName `
        -WindowsProfileAdminUserPassword $secureString `
        -GenerateSshKey
    

    Setelah beberapa menit, perintah selesai dan kembalikan informasi berformat JSON tentang kluster. Terkadang, kluster dapat memakan waktu lebih dari beberapa menit untuk disediakan. Izinkan hingga 10 menit untuk provisi.

    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 Bagaimana cara mengubah kata sandi administrator untuk simpul Windows Server di kluster saya?.

    Nama pengguna administrator tidak dapat diubah, 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 kumpulan simpul Windows Server.

    Untuk menjalankan kluster AKS yang mendukung kumpulan simpul untuk kontainer Windows Server, kluster Anda perlu menggunakan kebijakan jaringan yang menggunakan plugin jaringan [Azure CNI (tingkat lanjut)][azure-cni]. Parameter -NetworkPlugin azure menentukan Azure CNI.

Menambahkan kumpulan simpul

Secara default, kluster AKS 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.

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. Jika Anda tidak menentukan SKU OS tertentu, Azure membuat kumpulan simpul baru dengan SKU default untuk versi Kubernetes yang digunakan oleh kluster.

Untuk menggunakan SKU OS default, buat kumpulan simpul tanpa menentukan SKU OS. Kumpulan simpul dikonfigurasi untuk sistem operasi default berdasarkan versi Kubernetes kluster.

Tambahkan kumpulan simpul Windows Server menggunakan cmdlet New-AzAksNodePool . Perintah berikut membuat kumpulan simpul baru bernama npwin dan menambahkannya ke myAKSCluster. Perintah ini juga menggunakan subnet default di jaringan virtual default yang dibuat saat menjalankan New-AzAksCluster:

New-AzAksNodePool -ResourceGroupName myResourceGroup `
    -ClusterName myAKSCluster `
    -VmSetType VirtualMachineScaleSets `
    -OsType Windows `
    -Name npwin

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 kubectl secara lokal, Anda dapat menggunakan Install-AzAzAksCliTool cmdlet .

  1. Konfigurasikan kubectl untuk menyambungkan ke kluster Kube Anda menggunakanImport-AzAksCredentialcmdlet. Perintah ini mengunduh informasi masuk dan mengonfigurasi CLI Kube untuk menggunakannya.

    Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
    
  2. Verifikasi koneksi ke kluster Anda menggunakan perintah kubectl get , yang mengembalikan daftar node kluster.

    kubectl get nodes
    

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

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-20786768-vmss000000   Ready    agent   22h   v1.27.7
    aks-nodepool1-20786768-vmss000001   Ready    agent   22h   v1.27.7
    aksnpwin000000                      Ready    agent   21h   v1.27.7
    

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 akan didasarkan pada gambar Windows Server 2019 atau yang lebih besar. File manifes Kube juga harus menentukan pemilih simpul guna memberitahu kluster AKS Anda untuk menjalankan pod aplikasi contoh ASP.NET Anda pada sebuah 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.

    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 perintah kubectl apply 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. Izinkan hingga 10 menit untuk provisi.

  1. Periksa status pod yang disebarkan menggunakan perintah kubectl get pods . Buat semua pod sebelum Running melanjutkan.

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

    kubectl get service sample --watch
    

    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 EKSTERNAL-IP berubah dari tertunda ke alamat IP publik aktual, gunakan CTRL-C untuk menghentikankubectl proses melihat. Contoh output 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
    
  3. Lihat contoh aplikasi yang sedang beraksi dengan membuka browser web ke alamat IP eksternal layanan Anda.

    Cuplikan layar dari penjelajahan ke aplikasi contoh ASP.NET.

Menghapus sumber daya

Jika Anda tidak berencana untuk melalui tutorial AKS, hapus kluster Anda untuk menghindari dikenakan biaya Azure. Panggil cmdlet Remove-AzResourceGroup untuk menghapus grup sumber daya, layanan kontainer, dan semua sumber daya terkait.

Remove-AzResourceGroup -Name myResourceGroup

Catatan

Kluster AKS dibuat dengan identitas terkelola yang ditetapkan sistem (opsi identitas default yang digunakan dalam mulai cepat ini). Platform Azure mengelola identitas ini, sehingga tidak memerlukan penghapusan.

Langkah berikutnya

Dalam mulai cepat ini, Anda menyebarkan kluster Kubernetes dan kemudian menyebarkan aplikasi sampel ASP.NET dalam kontainer Windows Server ke dalamnya. 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.