Tutorial: Menyebarkan aplikasi Linux

Berlaku untuk: AKS di Azure Stack HCI 22H2, AKS di Windows Server

Tutorial ini menjelaskan cara menyebarkan aplikasi multi-kontainer yang mencakup front-end web dan instans database Redis pada kluster Kubernetes Anda di AKS yang diaktifkan oleh Azure Arc. Anda juga mempelajari cara menguji dan menskalakan aplikasi Anda.

Tutorial ini mengasumsikan pemahaman dasar tentang konsep Kubernetes. Untuk informasi selengkapnya, lihat Konsep inti Kubernetes.

Sebelum Anda mulai

Verifikasi bahwa Anda memiliki persyaratan berikut yang siap:

  • Kluster AKS dengan setidaknya satu simpul pekerja Linux yang aktif dan berjalan.
  • File kubeconfig untuk mengakses kluster.
  • Modul AksHci PowerShell diinstal. Untuk informasi selengkapnya, lihat Install-AksHci.

Ketika Anda melakukan prosedur tutorial:

  • Jalankan perintah di jendela PowerShell yang dibuka dengan hak istimewa admin.
  • Pastikan beban kerja khusus OS mendarat di host kontainer yang sesuai. Jika kluster Kubernetes memiliki campuran 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.

Catatan

Menyebarkan kluster target yang berbagi jaringan dengan kluster target lain dapat menyebabkan konflik alamat IP load balancer. Konflik alamat IP dapat terjadi jika Anda menyebarkan dua beban kerja yang menggunakan port yang berbeda dalam kluster target yang berbagi objek yang sama AksHciClusterNetwork . Karena cara alamat IP dan pemetaan port dialokasikan di dalam Proksi HA, itu dapat menyebabkan penugasan alamat IP duplikat. Jika ini terjadi, satu atau kedua beban kerja dapat mengalami masalah konektivitas jaringan acak hingga Anda menyebarkan kembali beban kerja Anda. Saat menyebarkan ulang beban kerja, Anda dapat menggunakan port yang sama, yang menetapkan alamat IP layanan ke setiap beban kerja, atau Anda dapat menyebarkan kembali beban kerja Anda pada kluster target yang menggunakan objek yang berbeda AksHciClusterNetwork .

Menerapkan aplikasi

File manifes Kubernetes mendefinisikan status yang diinginkan untuk kluster, seperti gambar kontainer mana yang akan dijalankan. Tutorial ini menggunakan manifes untuk membuat semua objek yang diperlukan untuk menjalankan aplikasi pemungutan suara Azure. Manifes ini mencakup dua penyebaran Kubernetes: satu untuk sampel aplikasi Azure Vote Python, dan yang lainnya untuk instans Redis. Dua layanan Kubernetes juga dibuat: layanan internal untuk instans Redis, dan layanan eksternal untuk mengakses aplikasi Azure Vote dari internet.

Buat file bernama azure-vote.yaml dan salin/tempel definisi YAML berikut:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-back
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: azure-vote-back
        image: redis
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        ports:
        - containerPort: 6379
          name: redis
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-back
spec:
  ports:
  - port: 6379
  selector:
    app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-vote-front
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": linux
      containers:
      - name: azure-vote-front
        image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        ports:
        - containerPort: 80
        env:
        - name: REDIS
          value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
  name: azure-vote-front
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: azure-vote-front

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

kubectl apply -f azure-vote.yaml

Contoh output berikut menunjukkan penyebaran dan layanan yang berhasil dibuat:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Ujilah aplikasi ini

Ketika aplikasi berjalan, layanan Kubernetes mengekspos front-end aplikasi ke internet. Diperlukan beberapa menit untuk menyelesaikan proses ini.

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

kubectl get service azure-vote-front --watch

Awalnya, EXTERNAL-IP untuk layanan azure-vote-front ditampilkan sebagai tertunda:

NAME               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27      <pending>     80:30572/TCP   22m

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

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   24m

Untuk melihat aplikasi Azure Vote yang sedang berjalan, buka browser web ke alamat IP eksternal layanan Anda.

Cuplikan layar halaman beranda aplikasi Azure Voting App, yang disebarkan pada kluster Kubernetes di Azure.

Skala pod aplikasi

Kami membuat satu replika front-end Azure Voting App dan instans Redis. Untuk melihat jumlah serta status pod di kluster Anda, gunakan perintah kubectl get sebagai berikut:

kubectl get pods -n default

Contoh output berikut menunjukkan satu pod front-end dan satu pod back-end:

NAME                                READY     STATUS    RESTARTS   AGE
azure-vote-back-6bdcb87f89-g2pqg    1/1       Running   0          25m
azure-vote-front-84c8bf64fc-cdq86   1/1       Running   0          25m

Untuk mengubah jumlah pod dalam penyebaran azure-vote-front, gunakan perintah kubectl scale. Contoh berikut menambah jumlah pod front-end menjadi 5:

kubectl scale --replicas=5 deployment/azure-vote-front

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
Name                                READY   STATUS    RESTARTS   AGE
azure-vote-back-6bdcb87f89-g2pqg    1/1     Running   0          31m
azure-vote-front-84c8bf64fc-cdq86   1/1     Running   0          31m
azure-vote-front-84c8bf64fc-56h64   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-djkp8   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-jmmvs   1/1     Running   0          80s
azure-vote-front-84c8bf64fc-znc6z   1/1     Running   0          80s

Langkah berikutnya

Gunakan Azure Monitor untuk memantau kluster dan aplikasi Anda.