Container Service for Kubernetes (ACK) menyediakan komponen ACK CoreDNS DNSTAP Analyser. Komponen ini mengidentifikasi dan mengklasifikasikan pesan DNS yang dipertukarkan antara klien dan CoreDNS atau antara CoreDNS dan server DNS upstream. Anda dapat menggunakan komponen ini untuk mengidentifikasi penyebab kesalahan resolusi DNS secara efisien.
Prasyarat
Sebuah 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 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 sisi kiri Konsol ACK, pilih .
Pada halaman App Catalog, masukkan ack-coredns-dnstap-analyser di kotak pencarian dan klik ikon pencarian. Di hasil pencarian, temukan dan klik ack-coredns-dnstap-analyser.
Pada halaman ack-coredns-dnstap-analyser, klik Deploy.
Di wizard Deploy, pilih kluster dan namespace, lalu klik Next. Pada wizard Parameters, konfigurasikan parameter berdasarkan kebutuhan bisnis Anda dan klik OK.
Langkah 2: Konfigurasikan Plugin DNSTAP di CoreDNS
CoreDNS sudah terinstal dengan plugin DNSTAP, yang mengirimkan 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 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 CoreDNS:
kubectl -n kube-system edit cm coredns -o yamlModifikasi pengaturan default CoreDNS berdasarkan komentar dalam cuplikan berikut.
Di ConfigMap, Anda harus mengaktifkan plugin DNSTAP dan mengatur alamat tujuannya ke alamat IP kluster 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 tidak ditampilkan. ready # Tambahkan baris berikut. Ganti 172.21.0.10 dengan alamat IP kluster sebenarnya dari CoreDNS DNSTAP Analyser. dnstap tcp://172.21.0.10:6000 full kubernetes cluster.local in-addr.arpa ip6.arpa { #Detail tidak ditampilkan. } #Detail tidak ditampilkan. 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 menampilkan log CoreDNS:
kubectl -n kube-system logs -f --tail=500 coredns-7d56lCatatanGanti coredns-7d56l dengan nama pod yang dikembalikan di langkah 4 sebelumnya.
Tunggu selama 1 menit. Jika output berikut dikembalikan dan tidak ada pengecualian yang terjadi, konfigurasi telah dimodifikasi.
[INFO] Reloading complete
Langkah 3: Lihat log 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 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 langkah 1 sebelumnya.
Langkah 4: Analisis log ACK CoreDNS DNSTAP Analyser
Di log ACK CoreDNS DNSTAP Analyser, setiap baris mencakup informasi agregat tentang sesi DNS. Sesi DNS mencakup 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 kesalahan, 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 konten kueri dan respons DNS asli dalam format JSON. Anda dapat menganalisis isi pesan berdasarkan dns-parameters-6.
Langkah 5: (Opsional) 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 yang berisi
dnstapdari ConfigMap CoreDNS:Jalankan perintah berikut untuk memodifikasi ConfigMap CoreDNS:
kubectl -n kube-system edit cm coredns -o yamlHapus baris yang berisi
dnstapdari ConfigMap CoreDNS berdasarkan konten berikut:Corefile: | .:53 { #Detail tidak ditampilkan. ready # Hapus baris berikut yang Anda tambahkan sebelumnya. dnstap tcp://10.10.10.10:6000 full kubernetes cluster.local in-addr.arpa ip6.arpa { #Detail tidak ditampilkan. } #Detail tidak ditampilkan. 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 menampilkan log CoreDNS:
kubectl -n kube-system logs -f --tail=500 coredns-7d56lCatatanGanti coredns-7d56l dengan nama pod yang dikembalikan di langkah 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 sisi kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel navigasi sisi kiri, pilih .
Di panel navigasi sisi kiri halaman detail kluster, pilih .
Pada halaman Helm, temukan ack-coredns-dnstap-analyser dan klik Delete di kolom Tindakan. Ikuti petunjuk di layar untuk menghapus ack-coredns-dnstap-analyser: