Selama pembaruan bergulir, pastikan bahwa pod yang diperbarui sudah siap sebelum diluncurkan untuk menerima lalu lintas. Anda dapat mengonfigurasi readiness gates untuk memastikan kesiapan pod sebelum peluncuran. Pengontrol Application Load Balancer (ALB) Ingress memungkinkan Anda mengaktifkan readiness gates untuk memantau status pod dalam klaster Container Service for Kubernetes (ACK). Setelah status pod menjadi Ready, pod tersebut diluncurkan dan ditambahkan ke grup server backend, kemudian lalu lintas diteruskan ke pod tersebut.
Prasyarat
Sebuah ACK managed cluster atau ACK Serverless cluster telah dibuat. Untuk informasi lebih lanjut, lihat Buat ACK Serverless cluster atau Buat ACK managed cluster.
Pengontrol ALB Ingress telah diinstal di dalam klaster. Untuk informasi lebih lanjut, lihat Kelola pengontrol ALB Ingress.
CatatanUntuk menggunakan ALB Ingress untuk mengakses Layanan yang diterapkan di dalam ACK dedicated cluster, otorisasi klaster untuk mengakses pengontrol ALB Ingress terlebih dahulu. Untuk informasi lebih lanjut, lihat Otorisasi ACK dedicated cluster untuk mengakses pengontrol ALB Ingress.
Klien kubectl terhubung ke klaster. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig dari klaster dan gunakan kubectl untuk terhubung ke klaster.
Cara kerjanya
ACK menggunakan liveness probes, readiness probes, dan startup probes untuk memeriksa status kesehatan, kesiapan, dan kondisi startup pod guna meningkatkan ketersediaan aplikasi. Saat mengonfigurasi liveness probes, readiness probes, dan startup probes, Anda dapat menentukan interval probing, periode timeout, ambang batas sehat, dan ambang batas tidak sehat. Anda dapat mendefinisikan probe ini dengan perintah, soket TCP, atau permintaan HTTP untuk memverifikasi kesehatan kontainer. Untuk informasi lebih lanjut, lihat Konfigurasikan Liveness, Readiness dan Startup Probes.
Jenis Probe | Deskripsi |
Liveness probe | Kubelet menggunakan liveness probes untuk memeriksa apakah kontainer hidup, membunuh kontainer yang tidak sehat, dan kemudian memulai ulang kontainer berdasarkan kebijakan restart. Jika sebuah kontainer tidak diprobing oleh liveness probes, kubelet menganggap bahwa kontainer tersebut mengembalikan Success untuk liveness probes dan oleh karena itu kontainer tersebut hidup. |
Readiness probe | Readiness probes digunakan untuk memeriksa apakah sebuah kontainer siap menerima permintaan. Hanya pod yang berada dalam status Ready yang dapat menerima permintaan. Hubungan antara Layanan dan titik akhir bergantung pada status Ready dari pod:
|
Startup probe | Kubelet menggunakan startup probes untuk mengetahui kapan sebuah kontainer telah diluncurkan. Anda dapat menggunakan startup probes untuk memastikan bahwa liveness probes dan readiness probes hanya dikirim ke kontainer setelah kontainer tersebut diluncurkan. Startup probes dapat digunakan untuk melakukan pemeriksaan liveness pada kontainer yang lambat memulai sehingga kontainer tersebut tidak dibunuh oleh kubelet sebelum dimulai. |
Jika readiness probes digunakan, nilai bidang Ready dari sebuah pod ditentukan oleh kubelet berdasarkan status kontainer dalam pod tersebut. Namun, untuk aplikasi kompleks, Anda mungkin perlu mengontrol Layanan kesiapan dalam kontainer secara lebih rinci. Untuk melakukannya, Anda perlu mengontrol nilai bidang Ready dari pod.
Readiness gates memungkinkan Anda menetapkan satu atau beberapa kondisi kesiapan kustom untuk memeriksa apakah sebuah pod siap. Kondisi kustom ini disetel pada pengontrol eksternal. Kubernetes menganggap bahwa sebuah pod siap hanya ketika semua kondisi yang ditentukan dalam readiness gates bernilai True.
Anda dapat mengonfigurasi readiness gates pada pengontrol ALB Ingress untuk memungkinkan klaster ACK terus memantau status pod. Pod tidak dianggap telah diluncurkan hingga memasuki status Ready. Pod yang telah diluncurkan akan ditambahkan ke grup server backend, dan lalu lintas akan diteruskan ke pod tersebut.
Anda dapat mengonfigurasi kondisi kustom target-health.alb.k8s.alibabacloud untuk readiness gates dalam Deployment. Ini memungkinkan klaster ACK terus memantau status pod. Klaster ACK menganggap pod siap dan mulai meneruskan lalu lintas ke pod tersebut hanya setelah pengontrol ALB Ingress menambahkan pod ke grup server backend.
Prosedur
Buat file bernama tea-service.yaml dan konfigurasikan kondisi kustom untuk readiness gates.
Buat file bernama tea-service.yaml dan tambahkan konten berikut ke dalam file untuk menerapkan Deployment bernama
teadan Layanan bernamatea-svc. Konfigurasikan kondisi kustom untuk readiness gates dalam Deployment:target-health.alb.Kubernetes.alibabacloud. Ini memungkinkan klaster ACK terus memantau status pod. Pod tidak dianggap telah diluncurkan hingga memasuki status Ready. Pod yang telah diluncurkan ditambahkan ke grup server backend.apiVersion: apps/v1 kind: Deployment metadata: name: tea spec: replicas: 3 selector: matchLabels: app: tea template: metadata: labels: app: tea spec: containers: - name: tea image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 # Konfigurasikan readiness gates readinessGates: - conditionType: target-health.alb.k8s.alibabacloud --- apiVersion: v1 kind: Service metadata: name: tea-svc spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: tea type: NodePortJalankan perintah berikut untuk menerapkan Deployment dan Layanan:
kubectl apply -f tea-service.yamlJalankan perintah berikut untuk memeriksa apakah konfigurasi readiness gates berlaku:
kubectl get pods -o yaml |grep 'target-health'Output yang diharapkan:
-conditionType:target-health.alb.k8s.alibabacloud message:correspondingconditionofpodreadinessgate"target-health.alb.k8s.alibabacLoud"
Referensi
Untuk informasi lebih lanjut tentang cara mengakses Layanan dalam klaster ACK menggunakan ALB Ingresses, lihat Memulai dengan ALB Ingresses.
ALB Ingresses adalah objek API yang digunakan untuk mengelola akses pengguna eksternal ke Layanan yang diterapkan dalam klaster ACK dan menyediakan kemampuan load balancing lapisan 7. Untuk informasi lebih lanjut, lihat Konfigurasi ALB Ingress tingkat lanjut.
Untuk informasi lebih lanjut tentang cara menyelesaikan masalah terkait ALB Ingresses, lihat Pemecahan masalah pengontrol ALB Ingress dan FAQ ALB Ingress.