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 keWindows
.os-sku
atur keWindows2019
.
- Untuk menggunakan Windows Server 2022, tentukan parameter berikut:
os-type
atur keWindows
.os-sku
atur keWindows2022
(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.
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.
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.
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
Lihat contoh aplikasi yang sedang beraksi dengan membuka browser web ke alamat IP eksternal dan port layanan sampel .
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