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.local. 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 memodifikasi 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 berjalan 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.

Cakupan VPC Cloud DNS

Cluster yang menggunakan Cloud DNS untuk DNS cluster harus beroperasi dalam salah satu dari dua mode yang tersedia: cakupan cluster GKE atau cakupan Virtual Private Cloud (VPC).

Saat Anda mengonfigurasi cluster dalam cakupan cluster, data DNS hanya dapat di-resolve dalam cluster menggunakan <svc>.<ns>.svc.cluster.local skema. Ini adalah perilaku yang sama seperti kube-dns.

Saat Anda mengonfigurasi cluster dalam cakupan VPC, Data DNS untuk layanan cluster dapat di-resolve dalam seluruh VPC. Artinya, klien di VPC yang sama atau terhubung ke VPC melalui Cloud VPN atau Cloud Interconnect dapat langsung me-resolve Data DNS untuk Layanan di cluster GKE. Anda juga dapat mengonfigurasi nama DNS cluster yang unik sehingga klien non-GKE dapat me-resolve Data DNS. Misalnya, klien non-GKE dapat me-resolve gke-svc.ns.svc.cluster1 dari gke-svc.ns.svc.cluster2.

Untuk mempelajari DNS cakupan VPC lebih lanjut, lihat Menggunakan Cloud DNS untuk GKE.

Layanan Multi-cluster

Layanan Multi-cluster menyediakan penemuan layanan multi-cluster dan load balancing untuk GKE yang memanfaatkan objek Layanan yang ada. Layanan Multi-cluster dapat ditemukan dan diakses di seluruh cluster GKE dengan satu alamat IP virtual. Ini adalah perilaku yang sama dengan Layanan ClusterIP yang dapat diakses dalam satu cluster.

Layanan Multi-cluster menggabungkan layanan di seluruh cluster dan membuatnya dapat ditangani sebagai satu data DNS multi-cluster menggunakan <svc>.<ns>.svc.clusterset.local skema. Hal ini memberikan nama unik untuk layanan tertentu, yang konsisten dan dapat ditangani dari cluster GKE mana pun yang menggunakan Layanan multi-cluster.

Untuk mempelajari Layanan Multi-cluster lebih lanjut, lihat Layanan Multi-cluster.

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.