All Products
Search
Document Center

Container Service for Kubernetes:FAQ DNS

Last Updated:Mar 25, 2026

Topik ini menjawab pertanyaan umum mengenai Domain Name System (DNS) di kluster Container Service for Kubernetes (ACK).

Mengapa exec gagal untuk Pod CoreDNS

Gejala

Anda tidak dapat menggunakan perintah kubectl -n kube-system exec -it {coredns-pod-name} bash atau perintah serupa untuk masuk ke pod CoreDNS.

Penyebab

Gambar kontainer CoreDNS dibuat berdasarkan Scratch dan tidak menyertakan lingkungan shell.

Resolusi

Anda dapat menggunakan nsenter untuk mengakses lingkungan jaringan kontainer dari pod CoreDNS. Untuk informasi lebih lanjut, lihat Periksa konektivitas jaringan pod CoreDNS. Jika Anda perlu melihat log CoreDNS, aktifkan fitur analisis log dan pemantauan CoreDNS. Untuk informasi lebih lanjut, lihat Analisis dan pantau log CoreDNS.

Mengapa CoreDNS menggunakan API yang sudah ditinggalkan?

Gejala

Saat melakukan pemeriksaan awal peningkatan kluster, Anda menemukan bahwa klien dengan user agent coredns mengakses API Kubernetes yang sudah ditinggalkan discovery.k8s.io/v1beta1. Jalur API-nya adalah /apis/discovery.k8s.io/v1beta1.

Penyebab

CoreDNS menggunakan API discovery.k8s.io/v1beta1 untuk terhubung ke server API, tetapi API ini sudah ditinggalkan atau akan segera ditinggalkan pada versi kluster Anda. Masalah ini memiliki dua kemungkinan penyebab:

  • Versi CoreDNS terlalu lama: Versi CoreDNS yang terinstal tidak mendukung API discovery.k8s.io/v1, sehingga menggunakan API discovery.k8s.io/v1beta1.

  • CoreDNS dijalankan pada versi Kubernetes yang lebih lama: CoreDNS diluncurkan pada versi Kubernetes lama (misalnya, v1.20) dan memilih API discovery.k8s.io/v1beta1 saat startup. Setelah kluster ditingkatkan dan API tersebut menjadi usang, CoreDNS tetap menggunakannya.

Resolusi

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.

  3. Pada halaman Add-ons, tingkatkan komponen CoreDNS.

    Jika halaman menunjukkan bahwa peningkatan tidak dimungkinkan, lanjutkan ke langkah berikutnya. Jika tidak, buka Langkah 3. Untuk informasi lebih lanjut tentang cara meningkatkan komponen, lihat Mengelola komponen.

  4. Jalankan perintah berikut untuk me-restart CoreDNS:

    kubectl -n kube-system rollout restart deployment coredns
    Penting

    Kesalahan resolusi DNS kadang-kadang dapat terjadi selama proses restart. Untuk informasi lebih lanjut, lihat Mitigasi timeout DNS intermiten yang disebabkan oleh cacat IPVS.

  5. Setelah CoreDNS ditingkatkan atau di-restart, jalankan perintah berikut untuk memeriksa status pod CoreDNS:

    kubectl -n kube-system get pod -l k8s-app=kube-dns

    Jika pod CoreDNS baru saja dibuat ulang dan berada dalam status Running, Anda dapat mengabaikan catatan panggilan API yang sudah ditinggalkan dari CoreDNS pada halaman pemeriksaan awal peningkatan kluster dan melanjutkan peningkatan kluster.

Kesalahan log CoreDNS: dns: buffer size too small

Gejala

Saat Anda menjalankan perintah kubectl -n kube-system logs {coredns pod} untuk melihat log pod CoreDNS, muncul pesan kesalahan dns: buffer size too small.

Penyebab

Ukuran buffer default (bufsize) untuk CoreDNS adalah 1.232 byte. Hal ini membatasi ukuran maksimum paket UDP untuk kueri DNS dari pod Kubernetes hingga 1.232 byte. Jika tanggapan DNS melebihi batas ini, resolusi nama domain akan gagal. Hal ini terutama memengaruhi kueri DNS di dalam pod yang memiliki tanggapan besar. Untuk informasi lebih lanjut, lihat isu GitHub ini.

Resolusi

Tingkatkan CoreDNS ke v1.7.1 atau versi yang lebih baru. Untuk versi sebelum v1.7.1, Anda dapat menjalankan perintah kubectl edit cm -n kube-system coredns untuk mengonfigurasi bufsize. Nilainya harus berada dalam rentang [512, 4.096]. Untuk informasi lebih lanjut, lihat dokumentasi CoreDNS.

. {
    bufsize 1220
    log
}

Permintaan mengembalikan NXDOMAIN dan NOERR setelah pembuatan layanan

Komponen CoreDNS diterapkan dengan beberapa instance pod. Jika salah satu pod tidak segera mengambil informasi terbaru dari API server setelah Service baru dibuat, beberapa permintaan dapat mengembalikan hasil yang tidak konsisten. Hasil permintaan DNS akan menjadi konsisten setelah pod CoreDNS mengambil informasi Service terbaru.

Resolusi DNS pada node Windows

  • Pod yang berjalan di node Windows tidak mendukung ClusterFirstWithHostNet. Windows memperlakukan setiap nama yang mengandung titik (.) sebagai fully qualified domain name (FQDN) dan tidak menambahkan akhiran pencarian DNS selama proses resolusi.

  • Windows mendukung beberapa resolver DNS, masing-masing dengan sedikit perbedaan perilaku. Kami merekomendasikan penggunaan cmdlet PowerShell Resolve-DnsName untuk kueri resolusi nama.

  • Berbeda dengan Linux yang dapat mencari daftar akhiran DNS untuk meresolusi nama, Windows hanya menggunakan satu akhiran DNS, yaitu akhiran DNS yang terkait dengan namespace pod tersebut. Misalnya, pod yang dibuat di namespace default menerima akhiran DNS default.svc.cluster.local. Di pod pada node Windows, Anda dapat meresolusi kubernetes.default.svc.cluster.local dan kubernetes, tetapi tidak dapat meresolusi nama yang hanya sebagian seperti kubernetes.default atau kubernetes.default.svc.

Untuk informasi lebih lanjut, lihat DNS untuk Layanan dan Pod.