Menyebarkan aplikasi Linux
Berlaku untuk: AKS di Azure Local 22H2, AKS di Windows Server
Panduan ini menjelaskan cara menyebarkan aplikasi multi-kontainer yang menyertakan 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.
Panduan cara ini mengasumsikan pemahaman dasar tentang konsep Kubernetes. Untuk informasi selengkapnya, lihat Konsep inti Kubernetes.
Sebelum Anda mulai
Pastikan Anda telah memenuhi prasyarat berikut:
- 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.
Saat Anda melakukan prosedur:
- Jalankan perintah di jendela PowerShell yang dibuka dengan hak istimewa administratif.
- 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
.
Menyebarkan 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 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: <path to image>/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
Menguji aplikasi
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 tontonan. 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.
Skala pod aplikasi
Kami membuat satu replika instans front-end dan Redis Azure Voting App. 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
Menggunakan Azure Monitor untuk memantau kluster dan aplikasi Anda