Dalam service mesh multi-kluster, server DNS setiap kluster hanya meresolusi layanan yang diterapkan secara lokal. Ketika suatu layanan di satu kluster mengirim permintaan ke layanan yang hanya ada di kluster lain, resolusi DNS gagal. Proxy DNS mengatasi masalah ini—proxy sidecar mencegat kueri DNS dan meresolusi nama layanan di seluruh kluster yang dikelola oleh lapisan kontrol Alibaba Cloud Service Mesh (ASM) yang sama.
Dokumen ini menjelaskan langkah-langkah berikut:
Menerapkan dua layanan di dua kluster berbeda:
sleepdi salah satu kluster danHTTPBindi kluster lainnya.Mengonfirmasi bahwa resolusi DNS lintas kluster gagal tanpa proxy DNS.
Mengaktifkan proxy DNS dan memverifikasi bahwa penemuan layanan lintas kluster berfungsi.
Cara kerja proxy DNS
Tanpa proxy DNS, server DNS setiap kluster hanya mengetahui layanan yang diterapkan di kluster tersebut. Jika layanan sleep di kluster m1c2 mengirim permintaan ke httpbin:8000, pencarian tersebut gagal karena tidak ada objek Service httpbin di m1c2.
Dengan proxy DNS diaktifkan, proxy sidecar mencegat kueri DNS arah keluar sebelum mencapai server DNS kluster. Lapisan kontrol ASM mempertahankan tampilan terpadu atas semua layanan di seluruh kluster yang dikelola, sehingga sidecar dapat meresolusi httpbin ke titik akhir yang benar di kluster m1c1—meskipun tidak ada objek Service lokal.

Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Dua kluster Container Service for Kubernetes (ACK) (diberi nama m1c1 dan m1c2 dalam dokumen ini) yang ditambahkan ke instans ASM. Untuk petunjuk penyiapan, lihat Langkah 1 hingga Langkah 3 dalam Gunakan gerbang serverless ASM sebagai titik masuk tunggal untuk beberapa kluster.
Injeksi proxy sidecar otomatis diaktifkan untuk namespace
default. Lihat Kelola namespace global.
Langkah 1: Terapkan layanan sleep dan HTTPBin
Terapkan masing-masing layanan ke kluster yang berbeda agar diperlukan penemuan lintas kluster.
1a. Terapkan sleep di m1c2
Terapkan YAML berikut ke kluster m1c2. Untuk petunjuk penerapan, lihat Terapkan aplikasi dalam instans ASM.
1b. Terapkan HTTPBin di m1c1
Terapkan YAML berikut ke kluster m1c1. Untuk petunjuk penerapan, lihat Terapkan aplikasi dalam instans ASM.
Langkah 2: Konfirmasi bahwa penemuan lintas kluster gagal
Sebelum mengaktifkan proxy DNS, verifikasi bahwa layanan sleep di m1c2 tidak dapat meresolusi httpbin.
Sambungkan ke kluster m1c2 menggunakan kubectl dan jalankan:
kubectl exec -it deploy/sleep -c sleep -- curl httpbin:8000Output yang diharapkan:
curl: (6) Could not resolve host: httpbinServer DNS di m1c2 tidak memiliki catatan untuk httpbin karena objek Service HTTPBin hanya ada di m1c1.
Langkah 3: Aktifkan proxy DNS dan verifikasi penemuan lintas kluster
3a. Aktifkan proxy DNS
Aktifkan fitur proxy DNS untuk instans ASM. Lihat bagian "Enable DNS Proxy" dalam Konfigurasi proxy sidecar.
3b. Terapkan ulang workload sleep
Terapkan ulang workload sleep di kluster m1c2 agar konfigurasi sidecar yang diperbarui berlaku. Lihat bagian "(Optional) Redeploy workloads" dalam Konfigurasi proxy sidecar.
3c. Uji penemuan lintas kluster
Sambungkan ke kluster m1c2 menggunakan kubectl dan jalankan perintah yang sama:
kubectl exec -it deploy/sleep -c sleep -- curl httpbin:8000Output yang diharapkan:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>httpbin.org</title>
...Tanggapan tersebut adalah halaman HTML HTTPBin yang disajikan dari kluster m1c1. Proxy sidecar di m1c2 mencegat kueri DNS, meresolusi httpbin melalui lapisan kontrol ASM, dan mengarahkan permintaan ke layanan HTTPBin di m1c1.
Topik terkait
Konfigurasi proxy sidecar — Pengaturan proxy DNS dan opsi konfigurasi sidecar
Kelola namespace global — Pengaturan injeksi sidecar di berbagai namespace
Gunakan gerbang serverless ASM sebagai titik masuk tunggal untuk beberapa kluster — Ingress multi-kluster dengan gerbang ASM