0Pricing
DevOps Bootcamp · Pelajaran

DNS dan Penemuan Layanan

Pahami cara Pod menemukan satu sama lain menggunakan DNS bawaan Kubernetes, serta cara kerja penemuan layanan di balik layar.

DNS dan Penemuan Layanan adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.

Masalah Penemuan Layanan

Pod terus dibuat dan dihapus, dan alamat IP-nya sering berubah. Menetapkan IP secara langsung akan segera menimbulkan masalah. Kubernetes mengatasi hal ini dengan penemuan layanan berbasis DNS.

Alih-alih menggunakan IP, Anda berkomunikasi dengan nama yang stabil.

DNS Kluster

Setiap kluster menjalankan layanan DNS (biasanya CoreDNS). Layanan ini secara otomatis membuat catatan DNS untuk Layanan dan Pod, sehingga nama mengarah ke ClusterIP yang tepat.

Nama DNS Layanan

Sebuah Layanan memperoleh nama DNS dengan pola yang dapat diprediksi:

service-name.namespace.svc.cluster.local

Di dalam ruang nama yang sama, Anda cukup menggunakan service-name yang singkat.

# from a Pod in the same namespace
curl http://payment-service:8080

# fully qualified, from any namespace
curl http://payment-service.shop.svc.cluster.local:8080

Ruang Nama dan Penamaan

Ruang nama merupakan bagian dari nama tersebut. Untuk mengakses Layanan di ruang nama lain, sertakan ruang nama itu: service.namespace.

# Pod in 'frontend' namespace calling 'backend' namespace
curl http://api.backend.svc.cluster.local

Menguji DNS dari Pod

Anda dapat menjalankan Pod sementara untuk menguji resolusi nama.

kubectl run dnstest --image=busybox:1.36 --rm -it --restart=Never -- nslookup payment-service

Cara CoreDNS Menyelesaikan Nama

Saat sebuah Pod meminta nama, permintaan tersebut dikirim ke CoreDNS. CoreDNS mencari Layanan yang cocok dan mengembalikan ClusterIP-nya. Untuk Layanan tanpa kepala, CoreDNS langsung mengembalikan IP Pod.

Layanan Tanpa Kepala

Layanan tanpa kepala (clusterIP: Tidak ada) melewati satu IP virtual. DNS justru mengembalikan setiap IP Pod, yang penting bagi aplikasi berstatus yang mengakses Pod secara langsung.

apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  clusterIP: None
  selector:
    app: db
  ports:
  - port: 5432

Catatan DNS Pod

Dengan Layanan tanpa kepala, setiap Pod pendukung juga dapat memperoleh catatan DNS sendiri. Ini berguna untuk StatefulSets karena Pod memiliki identitas stabil seperti db-0 dan db-1.

# stable per-Pod name in a StatefulSet
curl http://db-0.db.default.svc.cluster.local:5432

Memeriksa resolv.conf Pod

Kubernetes memasukkan konfigurasi DNS ke setiap Pod. Domain pencarian memungkinkan nama singkat diselesaikan dengan benar.

kubectl exec -it mypod -- cat /etc/resolv.conf
# nameserver 10.96.0.10
# search default.svc.cluster.local svc.cluster.local cluster.local

Variabel Lingkungan dibandingkan DNS

Kubernetes juga memasukkan informasi koneksi Layanan sebagai variabel lingkungan, tetapi hanya untuk Layanan yang sudah ada saat Pod dimulai. DNS lebih disarankan karena selalu mencerminkan kondisi terkini.

Kesalahan Umum DNS

  • Lupa menyertakan ruang nama saat memanggil Layanan lintas ruang nama
  • Mengharapkan DNS untuk Layanan tanpa Pod yang cocok (tanpa titik akhir)
  • Menyimpan IP lama dalam cache aplikasi alih-alih menyelesaikan kembali namanya

Pemeriksaan Singkat

Pilih format nama DNS yang benar.

Rangkuman

Anda telah mempelajari bahwa Kubernetes menggunakan CoreDNS untuk memberikan nama DNS yang stabil kepada Layanan dengan mengikuti pola service.namespace.svc.cluster.local. Nama singkat berfungsi di dalam satu ruang nama, Layanan tanpa kepala mengekspos IP setiap Pod, dan DNS selalu mencerminkan kondisi kluster terkini.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “DNS dan Penemuan Layanan” gratis?

Ya — teks lengkap “DNS dan Penemuan Layanan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “DNS dan Penemuan Layanan”?

Pahami cara Pod menemukan satu sama lain menggunakan DNS bawaan Kubernetes, serta cara kerja penemuan layanan di balik layar. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?

Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “DNS dan Penemuan Layanan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?

Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuka Akses Aplikasi dengan Service
  2. Jenis Service: ClusterIP, NodePort, LoadBalancer
  3. Ingress untuk Akses Eksternal
  4. DNS dan Penemuan Layanan
← Kembali ke DevOps Bootcamp