Menyebarkan aplikasi Windows di Azure Kubernetes Service di Azure Stack HCI dan Windows Server

Berlaku untuk: Azure Stack HCI di Windows Server

Dalam tutorial ini, Anda menerapkan aplikasi sampel ASP.NET dalam kontainer Windows Server pada kluster Kubernetes dan mempelajari cara melihat cara menguji dan menskalakan aplikasi Anda. Anda juga akan mempelajari cara menggabungkan node Windows ke domain Active Directory.

Tutorial ini mengasumsikan pemahaman dasar tentang konsep Kubernetes. Untuk informasi selengkapnya, lihat Konsep inti Kubernetes untuk AKS di Azure Stack HCI dan Windows Server.

Sebelum Anda mulai

Pastikan Anda memenuhi persyaratan berikut:

Sebagai tambahan:

  • Jalankan perintah dalam dokumen ini di jendela administratif PowerShell.
  • Pastikan beban kerja spesifik OS mendarat di host kontainer yang sesuai. Jika Anda memiliki paduan kluster Kubernetes simpul pekerja Linux dan Windows, Anda dapat menggunakan pemilih simpul atau taint dan toleransi. Untuk informasi selengkapnya, lihat menggunakan pemilih simpul serta noda dan toleransi.

Menyebarkan aplikasi

File manifes Kube menentukan status yang diinginkan untuk kluster, seperti gambar kontainer apa yang akan dijalankan. Dalam artikel ini, manifes digunakan untuk membuat semua objek yang diperlukan untuk aplikasi contoh 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 di Azure Stack HCI dan Windows Server mengharuskan kontainer Windows Server didasarkan pada citra Windows Server 2019.

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:
        "beta.kubernetes.io/os": windows
      containers:
      - name: sample
        image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
        resources:
          limits:
            cpu: 1
            memory: 800M
          requests:
            cpu: .1
            memory: 300M
        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

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

kubectl apply -f sample.yaml

Contoh output berikut menunjukkan penerapan dan layanan yang berhasil dibuat:

deployment.apps/sample created
service/sample created

Menguji aplikasi

Saat aplikasi berjalan, layanan Kube mengekspos ujung depan aplikasi ke internet. Diperlukan beberapa menit untuk menyelesaikan proses ini. Terkadang layanan ini memerlukan waktu lebih lama untuk disediakan. Izinkan hingga 10 menit dalam kasus ini.

Untuk memantau kemajuan, gunakan perintah kubectl get service dengan argumen --watch.

kubectl get service sample --watch

Awalnya IP_EKSTERNAL untuk layanan sampel ditampilkan sebagai tertunda.

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

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

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Untuk melihat contoh aplikasi yang sedang berjalan, buka penelusur web ke alamat IP eksternal layanan Anda.

Gambar penjelajahan ke aplikasi contoh ASP.NET

Jika Anda menerima waktu tunggu sambungan saat mencoba memuat halaman, verifikasi apakah aplikasi contoh sudah siap dengan perintah kubectl get pods --watch. Terkadang, alamat IP eksternal tersedia sebelum kontainer windows dimulai.

Skala pod aplikasi

Kami telah membuat replika tunggal dari front-end aplikasi. Untuk melihat jumlah dan status pod di kluster Anda, gunakan perintah kubectl get sebagai berikut:

kubectl get pods -n default

Untuk mengubah jumlah pod dalam penerapan contoh, gunakan perintah kubectl scale. Contoh berikut menambah jumlah pod front-end menjadi 3:

kubectl scale --replicas=3 deployment/sample

Jalankan kubectl get pods lagi untuk memverifikasi bahwa pod tambahan telah dibuat. Setelah sekitar satu menit, pod tambahan akan tersedia di kluster Anda:

kubectl get pods -n default

Langkah berikutnya