Container Service for Kubernetes (ACK) menyediakan komponen ACK CoreDNS DNSTAP Analyser yang dapat digunakan untuk mengidentifikasi dan mengklasifikasikan pesan DNS yang dipertukarkan antara klien dan CoreDNS atau antara CoreDNS dan server DNS upstream. Komponen ini membantu mengidentifikasi penyebab kesalahan resolusi DNS secara efisien.
Prasyarat
Kluster ACK Pro telah dibuat. Untuk informasi lebih lanjut, lihat Buat Kluster ACK Pro.
File kubeconfig dari kluster ACK Pro telah diperoleh dan kluster terhubung menggunakan kubectl. Untuk informasi lebih lanjut, lihat Dapatkan File kubeconfig dari Kluster dan Gunakan kubectl untuk Terhubung ke Kluster.
Informasi Latar Belakang
dnstap adalah format log untuk pesan DNS. Anda dapat menggunakan dnstap untuk mendiagnosis kesalahan resolusi DNS pada server DNS. Untuk informasi lebih lanjut, lihat dnstap.
Langkah 1: Instal ACK CoreDNS DNSTAP Analyser
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel sisi kiri halaman detail kluster, pilih .
Di halaman Helm, klik Deploy. Di langkah Basic Information, konfigurasikan parameter berdasarkan tabel berikut.
Parameter
Contoh
Application Name
ack-coredns-dnstap-analyser
Namespace
kube-system
Source
Nilai default: Marketplace.
Chart
Pilih All untuk parameter Use Scenarios.
Pilih amd64 untuk parameter Supported Architecture.
Masukkan ack-coredns-dnstap-analyser dalam kotak pencarian.
Pilih ack-coredns-dnstap-analyser dan klik Next.
Di langkah Parameters, konfigurasikan parameter Chart Version dan klik OK.
Langkah 2: Konfigurasi Plugin DNSTAP di CoreDNS
CoreDNS sudah terinstal dengan plugin DNSTAP untuk mengirim pesan DNSTAP. Pesan DNS yang dikirim dan diterima oleh plugin DNSTAP dapat diteruskan ke ACK CoreDNS DNSTAP Analyser. Sebelum menggunakan ACK CoreDNS DNSTAP Analyser untuk mendiagnosis kesalahan resolusi CoreDNS, Anda harus mengonfigurasi dan mengaktifkan plugin DNSTAP di CoreDNS. Setelah plugin DNSTAP dikonfigurasi, CoreDNS akan meneruskan pesan DNS yang dikirim dan diterima oleh plugin DNSTAP ke ACK CoreDNS DNSTAP Analyser untuk diagnosis otomatis.
Jalankan perintah berikut untuk menanyakan dan mencatat alamat IP kluster dari ACK CoreDNS DNSTAP Analyser di namespace kube-system. Alamat IP ini digunakan untuk mengonfigurasi plugin DNSTAP. Dalam contoh ini, alamat IP adalah 172.21.0.10.
kubectl -n kube-system get svc dnstap-analyserJalankan perintah berikut untuk memodifikasi ConfigMap dari CoreDNS:
kubectl -n kube-system edit cm coredns -o yamlModifikasi pengaturan default CoreDNS berdasarkan komentar dalam cuplikan berikut.
Dalam ConfigMap, Anda harus mengaktifkan plugin DNSTAP dan menetapkan alamat tujuannya ke alamat IP kluster dari ACK CoreDNS DNSTAP Analyser. Dengan cara ini, pesan DNS yang dikirim dan diterima oleh plugin DNSTAP dapat diteruskan ke ACK CoreDNS DNSTAP Analyser.
Corefile: | .:53 { #Detail dihilangkan. ready # Tambahkan kode. Ganti 172.21.0.10 dengan alamat IP kluster aktual dari CoreDNS DNSTAP Analyser. dnstap tcp://172.21.0.10:6000 full kubernetes cluster.local in-addr.arpa ip6.arpa { #Detail dihilangkan. } #Detail dihilangkan. reload loadbalance }Jalankan perintah berikut untuk menanyakan semua pod yang menjalankan CoreDNS:
kubectl -n kube-system get pod | grep corednsOutput yang diharapkan:
coredns-7d56l 1/1 Running 0 30m coredns-s7m2t 1/1 Running 0 30mJalankan perintah berikut untuk menanyakan log CoreDNS:
kubectl -n kube-system logs -f --tail=500 coredns-7d56lCatatanGanti coredns-7d56l dengan nama pod yang dikembalikan di Sublangkah 4 dari langkah ini.
Tunggu selama 1 menit. Jika output berikut dikembalikan dan tidak ada pengecualian yang terjadi, konfigurasi telah dimodifikasi.
[INFO] Reloading complete
Langkah 3: Lihat log dari ACK CoreDNS DNSTAP Analyser
Jalankan perintah berikut untuk menanyakan semua pod yang menjalankan ACK CoreDNS DNSTAP Analyser:
kubectl -n kube-system get pod | grep dnstap-analyserOutput yang diharapkan:
dnstap-analyser-bbdf879-g**** 1/1 Running 0 30mJalankan perintah berikut untuk menampilkan log dari ACK CoreDNS DNSTAP Analyser:
kubectl -n kube-system logs -f dnstap-analyser-bbdf879-g****CatatanGanti dnstap-analyser-bbdf879-gpfkm dengan nama pod yang dikembalikan di Sublangkah 1 dari langkah ini.
Langkah 4: Analisis log dari ACK CoreDNS DNSTAP Analyser
Dalam log dari ACK CoreDNS DNSTAP Analyser, setiap baris mencakup informasi agregat tentang sesi DNS. Sesi DNS berisi semua permintaan dan respons yang dipertukarkan antara klien, CoreDNS, dan server DNS upstream. Sesi DNS mencakup bidang-bidang berikut:
Status: Nilai bidang Status bervariasi berdasarkan skenario.
Status
Deskripsi
Berhasil
Nama domain berhasil diselesaikan. Respons membawa kode status NXDOMAIN atau NOERROR.
Gagal
Nama domain gagal diselesaikan. Respons membawa kode status error, atau koneksi ke server DNS upstream habis waktu.
SampleLoss
CoreDNS atau ACK CoreDNS DNSTAP Analyser kelebihan beban dan menjatuhkan pesan DNSTAP. Dalam kasus ini, Anda harus meningkatkan jumlah pod yang menjalankan CoreDNS atau ACK CoreDNS DNSTAP Analyser untuk mengurangi beban pada setiap pod. Ini meningkatkan akurasi hasil diagnosis.
BitMap: Menunjukkan jenis pesan DNSTAP yang ditangkap dari sesi. Anda dapat mengidentifikasi kemungkinan penyebab kesalahan resolusi DNS berdasarkan jenis pesan.
BitMap
Deskripsi
1
CoreDNS menerima kueri DNS dari klien tetapi tidak mengembalikan respons ke klien.
3
Nama domain internal diselesaikan. Kueri DNS yang dikirim dari klien mengenai cache DNS lokal CoreDNS atau catatan DNS di kluster Kubernetes. Hasilnya dikembalikan ke klien.
5
Koneksi ke server DNS upstream gagal. CoreDNS meneruskan kueri DNS yang dikirim dari klien ke server DNS upstream. Server DNS upstream tidak mengembalikan hasil.
15
Nama domain eksternal diselesaikan. CoreDNS meneruskan kueri DNS yang dikirim dari klien ke server DNS upstream. Server DNS upstream menyelesaikan nama domain dan mengembalikan hasil ke CoreDNS. Kemudian, CoreDNS mengembalikan hasil ke klien.
Pesan: Bidang ini mencatat isi dari kueri dan respons DNS asli dalam format JSON. Anda dapat menganalisis isi pesan berdasarkan dns-parameters-6.
(Opsional) Langkah 5: Uninstal ACK CoreDNS DNSTAP Analyser
Setelah Anda mengidentifikasi penyebabnya, kami sarankan Anda menguninstal ACK CoreDNS DNSTAP Analyser untuk menghindari biaya yang tidak perlu. Untuk menguninstal ACK CoreDNS DNSTAP Analyser, lakukan langkah-langkah berikut:
Hapus baris kode yang berisi
dnstapdari ConfigMap CoreDNS:Jalankan perintah berikut untuk memodifikasi ConfigMap CoreDNS:
kubectl -n kube-system edit cm coredns -o yamlHapus baris kode yang berisi
dnstapdari ConfigMap CoreDNS berdasarkan konten berikut:Corefile: | .:53 { #Detail dihilangkan. ready # Hapus baris berikut yang Anda tambahkan. dnstap tcp://10.10.10.10:6000 full kubernetes cluster.local in-addr.arpa ip6.arpa { #Detail dihilangkan. } #Detail dihilangkan. reload loadbalance }Jalankan perintah berikut untuk menanyakan semua pod yang menjalankan CoreDNS:
kubectl -n kube-system get pod | grep corednsOutput yang diharapkan:
coredns-7d56l 1/1 Running 0 30m coredns-s7m2t 1/1 Running 0 30mJalankan perintah berikut untuk menanyakan log CoreDNS:
kubectl -n kube-system logs -f --tail=500 coredns-7d56lCatatanGanti coredns-7d56l dengan nama pod yang dikembalikan di Sublangkah c sebelumnya.
Tunggu selama 1 menit. Jika output berikut dikembalikan dan tidak ada pengecualian yang terjadi, konfigurasi telah dimodifikasi.
[INFO] Reloading complete
Uninstal ACK CoreDNS DNSTAP Analyser.
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel navigasi sisi kiri, pilih .
Di panel sisi kiri halaman detail kluster, pilih .
Di halaman Helm, temukan ack-coredns-dnstap-analyser dan klik Delete di kolom Tindakan. Ikuti petunjuk di layar untuk menghapus ack-coredns-dnstap-analyser: