Memahami Jaringan di Kubernetes: Services, Ingress, dan DNS

Tantangan Jaringan di Kubernetes

Dalam lingkungan Kubernetes, Pod bersifat efemeral, artinya mereka sering dibuat dan dihancurkan, dengan alamat IP yang berubah-ubah. Sifat dinamis ini menciptakan tantangan dalam memastikan aplikasi dapat saling berkomunikasi dan dapat diakses secara konsisten dari luar klaster. Jaringan di Kubernetes harus menyediakan mekanisme yang memungkinkan Pod untuk ditemukan dan dihubungi meskipun IP-nya berubah.

Penggunaan Service untuk Akses Stabil

Untuk mengatasi masalah volatilitas alamat IP Pod, Kubernetes memperkenalkan konsep Service. Service adalah abstraksi yang mendefinisikan sekumpulan Pod (biasanya ditentukan melalui label selector) dan kebijakan untuk mengaksesnya. Service memiliki alamat IP dan nama DNS yang stabil sepanjang masa pakainya, bertindak sebagai titik akses tunggal untuk sekumpulan Pod yang berpotensi berganti-ganti di backend. Ada beberapa tipe Service utama:

  • ClusterIP: Mengekspos Service di IP internal klaster. Service ini hanya dapat diakses dari dalam klaster. Ini adalah tipe default jika tidak ditentukan.
  • NodePort: Mengekspos Service di port statis di setiap Node klaster. Service dapat diakses dari luar klaster melalui IP Node mana pun dan port statis yang ditentukan (NodePort).
  • LoadBalancer: Hanya tersedia di penyedia cloud yang mendukungnya. Tipe ini menyediakan load balancer eksternal yang merutekan traffic ke Service Anda.
  • ExternalName: Memetakan Service ke nama DNS eksternal CNAME, bukan ke Pod internal.

Resolusi Nama dengan DNS Klaster

Sistem DNS internal klaster, yang biasanya diimplementasikan oleh CoreDNS atau kube-dns, adalah komponen penting yang memungkinkan penemuan Service berdasarkan nama. Setiap Service yang dibuat secara otomatis mendapatkan entri DNS dalam format <nama-service>.<namespace>.svc.cluster.local. Pod dalam klaster dapat menggunakan nama DNS ini untuk menemukan Service lain, menghilangkan kebutuhan untuk mengetahui alamat IP Service atau Pod secara langsung. Resolusi DNS ini memudahkan komunikasi antar-aplikasi di dalam klaster.

BACA JUGA:  Kenapa Transformasi Digital Masih Terus Dorong Kolokasi di Era Serba AI?

Eksposur Eksternal dengan Ingress

Sementara Service seperti NodePort atau LoadBalancer memungkinkan akses eksternal, Ingress menyediakan cara yang lebih fleksibel dan kuat untuk mengelola akses HTTP dan HTTPS dari luar klaster ke berbagai Service internal. Ingress adalah sumber daya API yang mengelola akses eksternal ke layanan di dalam klaster, biasanya HTTP. Ingress dapat menyediakan load balancing, penghentian SSL, dan hosting virtual berbasis nama. Ingress memerlukan Ingress Controller yang berjalan di klaster untuk mengimplementasikan aturan routing yang ditentukan dalam sumber daya Ingress, merutekan traffic masuk berdasarkan nama host atau path URL ke Service backend yang sesuai.

Sumber: https://www.linuxtechi.com/kubernetes-networking-services-ingress-dns/