Apa itu Node Kubernetes?
Sebuah node Kubernetes adalah kumpulan sumber daya IT yang secara logis digunakan untuk menjalankan beban kerja satu atau lebih container dalam sebuah klaster Kubernetes.
Node berisi layanan yang diperlukan untuk menjalankan pod (istilah Kubernetes untuk kelompok container yang bekerja bersama), berkomunikasi dengan komponen control plane, mengonfigurasi jaringan, dan menjalankan beban kerja yang diberikan. Setiap node bisa menampung satu atau beberapa pod.
Bagaimana Node Kubernetes Bekerja?
Dalam Kubernetes, setiap node memiliki layanan yang dibutuhkan untuk menciptakan lingkungan runtime dan mendukung pod. Komponen ini mencakup container runtime seperti containerd, kube-proxy sebagai proxy jaringan Kubernetes, serta kubelet yang berperan sebagai pengendali Kubernetes.
Kubernetes mengatur penyebaran dan penskalaan aplikasi yang dikontainerisasi, bukan sistem perangkat keras yang mendasarinya. Node terdiri dari kumpulan sumber daya yang didefinisikan oleh infrastruktur hosting, baik di cloud, mesin fisik, atau mesin virtual (VM). Lingkungan host node juga bisa dikonfigurasi khusus sesuai kebutuhan aplikasi.
Saat pengguna membuat sebuah node, Kubernetes akan membuat objek node yang merepresentasikan node tersebut dan memastikan fungsionalitasnya berjalan dengan baik. Pod berjalan di node dengan sumber daya yang tersedia sesuai kebutuhan beban kerja dan persyaratan afinitas atau anti-afinitas terhadap pod lain.
Manajemen Node Kubernetes
Antarmuka manajemen node Kubernetes melibatkan interaksi antara tiga komponen utama: node controller, command-line interface (CLI) kubectl, dan kubelet.
Node controller mengelola siklus hidup node Kubernetes. Jika pengguna menggunakan Classless Inter-Domain Routing (CIDR), node controller akan memberikan blok CIDR kepada node saat pendaftaran. Node controller juga menjaga daftar node internal yang tersedia, memantau kesehatan node, serta menghapus pod dari node yang tidak dapat dijangkau.
Jika sebuah node dalam kondisi tidak sehat, node controller akan memeriksa ketersediaan sumber daya dasarnya dan menghapus node jika sumber daya tersebut tidak tersedia. Pembaruan Kubernetes telah meningkatkan kemampuan node controller dalam menangani masalah jaringan pada jumlah node yang besar dengan menilai seluruh klaster sebelum menghapus pod.
Kubectl adalah CLI yang memungkinkan pengguna menjalankan perintah terhadap klaster Kubernetes. Misalnya, administrator dapat menjalankan perintah kubectl untuk mencegah Kubernetes menjadwalkan pod di node tertentu.
Kubelet adalah agen yang berjalan di setiap node Kubernetes. Ia bertanggung jawab menangani pod yang berjalan di node tersebut dan berkomunikasi dengan control plane.
Kapasitas Node
Node Kubernetes yang melakukan pendaftaran sendiri akan melaporkan kapasitas dalam bentuk CPU dan volume memori saat objek node dibuat. Sebagai alternatif, administrator dapat menetapkan kapasitas ini secara manual saat membuat node.
Scheduler Kubernetes memastikan bahwa setiap pod yang berjalan pada node memiliki sumber daya yang cukup dan memastikan permintaan tidak melebihi kapasitas node. Kubernetes mengasumsikan bahwa setiap server node memiliki subnet yang berdedikasi.
Status Node
Status node Kubernetes mencakup alamat sumber daya yang dikompilasi dalam node, kondisi pod, kapasitas, dan informasi lainnya.
Ada tiga opsi untuk alamat node, tergantung pada konfigurasi cloud atau bare-metal:
- HostName, sebagaimana dilaporkan oleh kernel node, yang bisa diganti dengan parameter kubelet –hostname-override;
- ExternalIP, yaitu alamat IP node yang dapat diakses dari luar klaster; dan
- InternalIP, yaitu alamat IP node yang hanya bisa dirutekan dalam klaster.
Kondisi mengacu pada status semua node yang sedang berjalan dan dilaporkan sebagai True atau False. Beberapa contoh kondisi node meliputi:
- OutOfDisk: Menandakan ruang disk tersedia atau tidak.
- Ready: Menunjukkan kesehatan node.
- NetworkUnavailable: Mengindikasikan status konfigurasi jaringan.
Kapasitas menggambarkan sumber daya node yang tersedia, termasuk CPU, memori, dan jumlah maksimum pod yang dapat ditangani oleh node.
Informasi mencakup statistik umum, seperti nama sistem operasi dan versi. Informasi ini juga mencakup versi kernel, kubelet, kube-proxy, serta Docker jika menggunakan container Docker.
Dengan pemahaman yang lebih baik mengenai node Kubernetes, pengguna dapat mengelola dan mengoptimalkan infrastruktur Kubernetes mereka secara lebih efektif.