Penemuan layanan dan DNS


Halaman ini menjelaskan cara Google Kubernetes Engine (GKE) mengimplementasikan penemuan layanan dan DNS cluster.

Penemuan layanan

Di Kubernetes, penemuan layanan diimplementasikan dengan nama layanan yang dibuat secara otomatis yang dipetakan ke alamat IP Layanan. Nama layanan mengikuti spesifikasi standar: sebagai berikut: my-svc.my-namespace.svc.cluster-domain.example. Pod juga dapat mengakses layanan eksternal melalui namanya, seperti example.com. Untuk mengetahui informasi selengkapnya tentang cara kerja DNS di Kubernetes, lihat DNS untuk Layanan dan Pod.

DNS Cluster di GKE

Cluster Autopilot baru menggunakan Cloud DNS dan Anda tidak dapat mengubah penyedia DNS.

Untuk Standar, GKE menyediakan opsi DNS cluster berikut untuk me-resolve nama layanan dan nama eksternal:

  • kube-dns: add-on cluster yang di-deploy secara default di semua cluster GKE.
  • Cloud DNS: infrastruktur DNS cluster yang dikelola cloud yang memanfaatkan Cloud DNS dan tidak memerlukan pengelolaan server DNS dalam cluster seperti kube-dns.

Anda juga dapat mendaftarkan layanan dengan Direktori Layanan untuk GKE.

GKE juga menyediakan NodeLocal DNSCache sebagai add-on opsional yang dapat digunakan dengan kube-dns atau Cloud DNS.

kube-dns

kube-dns adalah penyedia DNS default untuk cluster Standar dan satu-satunya penyedia DNS untuk cluster Autopilot yang menjalankan versi sebelum 1.25.9-gke.400 dan 1.26.4-gke.500.

kube-dns dijalankan sebagai Deployment yang menjadwalkan pod kube-dns ke node dalam cluster.

Untuk mempelajari kube-dns lebih lanjut, lihat Menggunakan kube-dns.

Cloud DNS

Cloud DNS adalah satu-satunya penyedia DNS untuk cluster Autopilot yang menjalankan versi 1.25.9-gke.400 dan yang lebih baru, serta versi 1.26.4-gke.500 dan yang lebih baru.

Cloud DNS menyediakan resolusi DNS Pod dan Layanan tanpa penyedia DNS yang dihosting cluster seperti kube-dns. Pengontrol Cloud DNS secara otomatis menyediakan data DNS untuk pod dan layanan di Cloud DNS untuk layanan ClusterIP, headless, dan nama eksternal.

Untuk mempelajari cara mengonfigurasi Cloud DNS, lihat Menggunakan Cloud DNS untuk GKE.

NodeLocal DNSCache

NodeLocal DNSCache berjalan sebagai DaemonSet yang menjadwalkan Pod cache DNS di setiap node cluster. Cache DNS ini meningkatkan latensi pencarian DNS, membuat waktu pencarian DNS lebih konsisten, dan dapat mengurangi jumlah kueri DNS ke kube-dns atau Cloud DNS.

Untuk mempelajari cara mengonfigurasi NodeLocal DNSCache, lihat Menyiapkan NodeLocal DNSCache.

Penemuan layanan di luar satu cluster

Anda dapat mengonfigurasi penemuan layanan di luar cakupan satu cluster menggunakan salah satu metode berikut.

Direktori Layanan untuk GKE

Direktori Layanan untuk GKE menyediakan satu tampilan layanan di seluruh deployment Kubernetes Anda. Direktori Layanan dapat mendaftarkan layanan GKE dan non-GKE dalam satu registry. Direktori Layanan sangat berguna jika Anda menginginkan:

  • Antara registry tunggal untuk aplikasi Kubernetes dan non-Kubernetes dapat saling menemukan.
  • Alat penemuan layanan terkelola.
  • Untuk menyimpan metadata tentang layanan Anda yang dapat diakses oleh klien lain.
  • Untuk menetapkan izin akses pada tingkat per layanan.

Layanan Direktori Layanan dapat di-resolve melalui DNS, HTTP, dan gRPC. Direktori Layanan terintegrasi dengan Cloud DNS, dan dapat mengisi data Cloud DNS yang cocok dengan layanan di Direktori Layanan.

Untuk mempelajari lebih lanjut, lihat Mengonfigurasi Direktori Layanan untuk GKE.

/etc/resolv.conf

Untuk Pod yang menggunakan Kebijakan DNS ClusterFirst, nilai /etc/resolv.conf bergantung pada fitur mana yang diaktifkan di cluster:

Cloud DNS untuk GKE NodeLocal DNSCache Nilai /etc/resolv.conf
Diaktifkan Diaktifkan 169.254.20.10
Diaktifkan Nonaktif 169.254.169.254
Nonaktif Diaktifkan Alamat IP layanan kube-dns
Nonaktif Nonaktif Alamat IP layanan kube-dns

Langkah selanjutnya

  • Pelajari cara menggunakan Cloud DNS untuk GKE.
  • Pelajari cara memberikan resolusi DNS yang skalabel untuk cluster yang memerlukan volume kueri DNS yang tinggi menggunakan NodeLocal DNSCache.