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
Mulai cepat ini mengasumsikan pemahaman dasar tentang konsep Kube. Untuk informasi lebih, lihat konsep inti Kubernetes untuk Azure Kubernetes Service (AKS).
- Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai Cepat untuk Bash di Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah login az. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Masuk dengan Azure CLI.
Saat Anda diminta, instal ekstensi Azure CLI pada penggunaan pertama. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan ekstensi dengan Azure CLI.
Jalankan versi az untuk menemukan versi dan pustaka dependen yang diinstal. Untuk meningkatkan ke versi terbaru, jalankan peningkatan az.
- 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 perintah az account set . Untuk informasi selengkapnya, lihat Cara mengelola langganan Azure – Azure CLI.
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.
Mmebuat grup sumber daya menggunakan perintah buat grup az. Contoh berikut ini menampilkan cara membuat grup sumber daya bernama myResourceGroup di lokasi eastus. Masukkan perintah ini dan perintah lain dalam artikel ini ke dalam shell BASH:
az group create --name myResourceGroup --location eastus
Contoh output berikut menunjukkan grup sumber daya yang berhasil dibuat:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null, "type": null }
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
--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
.
Untuk membuat kluster AKS dengan Azure CLI, ikuti langkah-langkah berikut:
Buat nama pengguna untuk digunakan sebagai informasi masuk admin untuk simpul Windows Server pada kluster Anda. Perintah berikut meminta nama pengguna dan mengaturnya ke WINDOWS_USERNAME untuk digunakan dalam perintah selanjutnya.
echo "Please enter the username to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_USERNAME
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.
echo "Please enter the password to use as administrator credentials for Windows Server nodes on your cluster: " && read WINDOWS_PASSWORD
Buat kluster Anda menggunakan perintah az aks create dan tentukan
--windows-admin-username
parameter dan--windows-admin-password
. Perintah contoh berikut membuat kluster menggunakan nilai dari NAMA PENGGUNA_WINDOWS yang Anda tetapkan di perintah sebelumnya. Atau, Anda dapat memberikan nama pengguna yang berbeda langsung dalam parameter alih-alih menggunakan WINDOWS_USERNAME.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --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 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 Tanya Jawab Umum Windows Server
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 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, 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.
- Kumpulan simpul Windows (SKU default)
- Kumpulan simpul Windows Server 2022
- Kumpulan simpul Windows Server 2019
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 menggunakan az aks nodepool add
perintah . 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 az aks create
. SKU OS tidak ditentukan, sehingga kumpulan simpul diatur ke sistem operasi default berdasarkan versi Kubernetes kluster:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--os-type Windows \
--name npwin \
--node-count 1
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, panggil perintah az aks install-cli .
Konfigurasikan
kubectl
untuk terhubung ke kluster Kubernetes menggunakan perintah az aks get-credentials. Perintah ini mengunduh informasi masuk dan mengonfigurasi CLI Kube untuk menggunakannya.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Verifikasi koneksi ke kluster Anda menggunakan perintah kubectl get , 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 bahasa umum kontainer untuk setiap kumpulan simpul ditampilkan pada CONTAINER-RUNTIME. Nilai runtime kontainer dimulai dengan
containerd://
, yang berarti bahwa mereka masing-masing menggunakancontainerd
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 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.
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.
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.
Periksa status pod yang disebarkan menggunakan perintah kubectl get pods . Buat semua pod sebelum
Running
melanjutkan.kubectl get pods
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
Lihat contoh aplikasi yang sedang beraksi dengan membuka browser web ke alamat IP eksternal layanan Anda.
Menghapus sumber daya
Jika Anda tidak berencana untuk melalui tutorial AKS, Anda harus menghapus kluster Anda untuk menghindari dikenakan biaya Azure.
Hapus grup sumber daya, layanan kontainer, dan semua sumber daya terkait menggunakan perintah az group delete .
az group delete --name myResourceGroup --yes --no-wait
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.
Azure Kubernetes Service