Tangkap pesan DNS pada setiap tahap resolusi untuk mengisolasi lokasi kegagalan dalam kluster ACK Pro.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster ACK Pro.
-
File kubeconfig kluster dan konektivitas kubectl.
Latar Belakang
DNSTAP adalah format log untuk pesan DNS. CoreDNS menyertakan plugin DNSTAP bawaan yang menangkap setiap pesan DNS. ACK CoreDNS DNSTAP Analyser menerima pesan-pesan tersebut melalui TCP dan menggabungkannya menjadi catatan diagnostik per sesi.
Lihat DNSTAP untuk detail format log.
Langkah 1: Instal ACK CoreDNS DNSTAP Analyser
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Pada halaman Clusters, temukan kluster dan klik namanya. Di panel navigasi sebelah kiri, pilih Applications > Helm.
-
Pada halaman Helm, klik Deploy. Pada langkah Basic Information, konfigurasikan parameter berikut. Pilih ack-coredns-dnstap-analyser dan klik Next.
Parameter Nilai Application Name ack-coredns-dnstap-analyserNamespace kube-systemSource Marketplace (default) Chart — Use Scenarios All Chart — Supported Architecture amd64 Chart — Search box ack-coredns-dnstap-analyser -
Pada langkah Parameters, konfigurasikan Chart Version dan klik OK.
Langkah 2: Konfigurasi plugin dnstap di CoreDNS
CoreDNS menyertakan plugin dnstap. Aktifkan plugin tersebut dan arahkan ke ACK CoreDNS DNSTAP Analyser agar pesan DNS diteruskan secara otomatis.
-
Dapatkan alamat IP kluster dari layanan DNSTAP Analyser. Catat alamat ini untuk langkah berikutnya.
kubectl -n kube-system get svc dnstap-analyserDalam contoh ini, alamat IP kluster adalah
172.21.0.10. -
Buka ConfigMap CoreDNS untuk diedit.
kubectl -n kube-system edit cm coredns -o yaml -
Tambahkan direktif
dnstapke Corefile. Ganti172.21.0.10dengan alamat IP kluster dari Langkah 1.Corefile: | .:53 { # ... other plugins ... ready # Tambahkan baris ini. Bendera "full" menyertakan pesan DNS lengkap # dalam format wire pada setiap catatan, yang memberikan data diagnostik lebih kaya. dnstap tcp://172.21.0.10:6000 full kubernetes cluster.local in-addr.arpa ip6.arpa { # ... other settings ... } # ... other plugins ... reload loadbalance } -
Verifikasi bahwa CoreDNS telah memuat ulang konfigurasi.
-
Daftar semua Pod CoreDNS.
kubectl -n kube-system get pod | grep corednsOutput yang diharapkan:
coredns-7d56l 1/1 Running 0 30m coredns-s7m2t 1/1 Running 0 30m -
Tampilkan log dari sebuah Pod CoreDNS. Ganti
coredns-7d56ldengan nama Pod dari output sebelumnya.kubectl -n kube-system logs -f --tail=500 coredns-7d56lTunggu hingga satu menit. Muat ulang yang berhasil menghasilkan:
[INFO] Reloading complete
-
Langkah 3: Lihat log ACK CoreDNS DNSTAP Analyser
-
Daftar semua Pod ACK CoreDNS DNSTAP Analyser.
kubectl -n kube-system get pod | grep dnstap-analyserOutput yang diharapkan:
dnstap-analyser-bbdf879-g**** 1/1 Running 0 30m -
Streaming log. Ganti
dnstap-analyser-bbdf879-g****dengan nama Pod dari output sebelumnya.kubectl -n kube-system logs -f dnstap-analyser-bbdf879-g****
Langkah 4: Analisis log
Setiap baris log merepresentasikan satu DNS session — siklus lengkap permintaan-respons antara client, CoreDNS, dan server DNS upstream.
Cara membaca entri sesi: Periksa Status untuk memastikan keberhasilan atau kegagalan. Periksa BitMap untuk mengidentifikasi tahap resolusi yang gagal. Periksa Messages untuk muatan DNS mentah.
Bidang Status
| Status | Deskripsi |
|---|---|
Succeeded |
Kueri DNS selesai. Respons membawa kode status NXDOMAIN atau NOERROR. |
Failed |
Resolusi gagal. Respons membawa kode status error, atau koneksi upstream mengalami timeout. |
SampleLoss |
CoreDNS atau analyser menjatuhkan pesan dnstap karena kelebihan beban. Tingkatkan skala komponen yang kelebihan beban untuk meningkatkan akurasi diagnostik. |
SampleLossberarti beberapa sesi DNS tidak tertangkap. Jika entriSampleLosssering muncul, tingkatkan jumlah Pod CoreDNS atau analyser sebelum melanjutkan.
Bidang BitMap
Bitmask yang mengkodekan jenis pesan yang tertangkap dalam sesi. Gunakan untuk mengidentifikasi lokasi kegagalan dalam rantai resolusi.
| BitMap | Deskripsi |
|---|---|
1 |
CoreDNS menerima kueri client tetapi tidak mengembalikan respons. |
3 |
Domain internal terselesaikan. Kueri mengenai cache CoreDNS atau rekaman DNS Kubernetes, dan hasilnya dikembalikan ke client. |
5 |
Server DNS upstream tidak dapat dijangkau. CoreDNS meneruskan kueri tetapi tidak menerima respons. |
15 |
Domain eksternal terselesaikan. CoreDNS meneruskan kueri ke server upstream, menerima respons, dan mengembalikannya ke client. |
Bidang Messages
Bidang Messages berisi kueri dan respons DNS dalam format JSON. Uraikan berdasarkan referensi parameter DNS IANA untuk memeriksa kode respons dan tipe catatan.
(Opsional) Langkah 5: Hapus instalasi ACK CoreDNS DNSTAP Analyser
Setelah investigasi selesai, hapus analyser untuk menghindari biaya yang tidak perlu.
-
Hapus direktif
dnstapdari ConfigMap CoreDNS.-
Buka ConfigMap untuk diedit.
kubectl -n kube-system edit cm coredns -o yaml -
Hapus baris yang berisi
dnstap.Corefile: | .:53 { # ... other plugins ... ready # Hapus baris berikut. dnstap tcp://10.10.10.10:6000 full kubernetes cluster.local in-addr.arpa ip6.arpa { # ... other settings ... } # ... other plugins ... reload loadbalance } -
Verifikasi bahwa CoreDNS telah memuat ulang konfigurasi. Daftar semua Pod CoreDNS.
kubectl -n kube-system get pod | grep corednsOutput yang diharapkan:
coredns-7d56l 1/1 Running 0 30m coredns-s7m2t 1/1 Running 0 30m -
Tampilkan log dari sebuah Pod CoreDNS. Ganti
coredns-7d56ldengan nama Pod dari output sebelumnya.kubectl -n kube-system logs -f --tail=500 coredns-7d56lTunggu hingga satu menit. Muat ulang yang berhasil menghasilkan:
[INFO] Reloading complete
-
-
Hapus rilis Helm ACK CoreDNS DNSTAP Analyser.
-
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
-
Pada halaman Clusters, temukan kluster dan klik namanya. Di panel navigasi sebelah kiri, pilih Applications > Helm.
-
Pada halaman Helm, temukan ack-coredns-dnstap-analyser dan klik Delete di kolom Actions.
-