Belajar Kubernetes - Episode 4 - Pengenalan dan Penjelasan Object Node
Di episode ini kita akan coba bahas salah satu object yang ada di Kubernetes yaitu Node. Kita akan mempelajari lebih dalam terkait apa itu Node dalam konteks Kubernetes

Arman Dwi Pangestu
14 Juni 2025•1 menit baca

Pendahuluan
Catatan: Untuk kalian yang ingin membaca episode sebelumnya, bisa click gambar thumbnail episode 3 di bawah ini
![]()
Sebelumnya kita sudah mengetahui jenis-jenis tool untuk instalasi Kubernetes Cluster di local mulai dari Minikube, Kind, K3s, K8s, serta tahapan cara instalasi masing-masing tool tersebut. Selanjutnya di episode ke 4 kali ini, kita akan coba bahas lebih dalam terkait salah satu object yang ada di Kubernetes yaitu Node.
Catatan: Disini saya akan menggunakan Kubernetes Cluster yang di install melalui K3s.
Node
Catatan: Terdapat beberapa istilah terkait object Node di Kubernetes dari masa ke masa
Istilah Lama Istilah Baru / Sekarang Master Node Control Plane Minion / Worker Node Node (Data Plane) Sehingga jika kalian menemukan berbagai macam istilah-istilah di atas seperti di dokumentasi, blog, dan sebagainya, nah maka penyebutan tersebut bisa saja menggunakan istilah versi lama.
Node adalah worker machine di Kubernetes. Simpel nya, Node ini adalah yang bekerja, yang menjalankan aplikasi, dan juga pokok intinya aplikasi kita mau dijalankan dimana itu sebenarnya semua ada di dalam Node (Data Plane). Jadi Master (Control Plane) itu dia tugasnya hanya melakukan manage (orchestration) dari Nodes-Nodes yang ada di Kubernetes.
Mungkin kalian akan bertanya, Node ini sebetulnya bentuknya itu seperti apa sih? Nah sebetulnya Node ini bentuknya adalah VM-VM (Virtual Machine) juga ujung-ujungnya, jadi kalau misalkan kita menggunakan layanan cloud computing itu ya nanti kita akan running satu buah VM di cloudnya, setelah itu kita daftarkan / registrasi / masukkan VM tersebut ke dalam Kubernetes Cluster sebagai role Node (Data Plane) atau kalau misalkan kita mempunyai server sendiri di data center baik itu on-premise atau colocation, bisa saja dia bukan berupa VM melainkan berupa mesin fisik langsung (biasa disebut Bare Metal) gitu di suatu rak server, jadi tanpa layer tambahan hypervisor Kubernetes nya.
3 Aplikasi yang Sudah Pasti Ada di Object Node
Nah di dalam Node tersebut sudah pasti akan ada aplikasi berikut di setiap Node nya, yaitu kubelet
, kubeproxy
dan juga container runtime
nya.
Catatan: Untuk kalian yang ingin lebih tau terkait fungsi 3 aplikasi utama yang sudah pasti ada di object Node ini, seperti
kubelet
,kubeproxy
, dancontainer runtime
, kalian bisa baca di episode 2 berikut ini Belajar Kubernetes - Episode 2 - Mengenal Konsep dan Arsitektur Kuberntes #data-plane-worker-node
kubelet
, kubeproxy
, dan container runtime
adalah 3 aplikasi utama yang pasti akan ada di object Node. Jadi walaupun kita memasukkan ratusan Node misalkan atau bahkan sampai ribuan Node, maka di setiap Node-Node tersebut itu akan selalu ada tiga aplikasi ini.
Nantinya, saat kita ingin men-deploy aplikasi di Kubernetes Cluster, kita tidak perlu lagi menentukan aplikasi tersebut akan dijalankan di Node yang mana. Berapapun jumlah Node yang ada, Kubernetes akan mengatur penempatan aplikasi secara otomatis. Setelah sebuah Node bergabung (register) ke dalam Cluster, kita bisa menganggap seluruh Node tersebut sebagai satu kesatuan sumber daya / resource, sehingga proses deployment menjadi lebih mudah dan fleksibel tanpa harus memikirkan detail lokasi Node secara spesifik.
Jika kita ingin menjalankan beberapa aplikasi yang sama secara bersamaan dalam komputer tersebut, kita bisa dengan gampang melakukan scaling aplikasinya, jadi kita sudah tidak perlu tahu mikirin lagi ada berapa jumlah Node di dalam Kubernetes nya.
Nah dengan seiringnya waktu pastinya resource server akan terbatas, seperti RAM nya kurang, Storage nya kurang, CPU nya kurang, dan sebagainya. Nah itu semua akan dihandle oleh pihak atau divisi bagian infrastruktur atau juga bagian DevOps nya.
Melihat Daftar Node
Setelah mengetahui apa itu Node dan 3 aplikasi utama yang pasti ada di dalam setiap Node, kita akan langsung mencoba bagaimana cara melihat daftar atau list Node yang ada di Kubernetes Cluster. Untuk melihatnya kalian bisa menggunakan perintah kubectl berikut ini
Catatan: Kalian bisa juga menjalankan perintah berikut dengan lebih singkat atau beberapa versi seperti
sudo kubectl get no sudo kubectl get no -o wide sudo kubectl get node sudo kubectl get nodes
Semua perintah di atas akan valid dan berhasil dijalankan
sudo kubectl get nodes -o wide
Maka hasilnya akan terlihat seperti ini
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k3s-1 Ready control-plane,master 32d v1.32.4+k3s1 20.20.20.11 <none> Ubuntu 24.04.1 LTS 6.8.0-60-generic containerd://2.0.4-k3s2
k3s-4 Ready <none> 32d v1.32.4+k3s1 20.20.20.14 <none> Ubuntu 24.04.1 LTS 6.8.0-60-generic containerd://2.0.4-k3s2
Hasil dari pengecekan Node di Kubernetes Cluster saya di atas, terdapat 2 Node yang terdaftar di cluster tersebut, dimana 1 berperan sebagai master (Control Plane), dan satunya lagi sebagai Node (Data Plane).
Melihat Detail Node
Jika kalian ingin melihat lebih jelas terkait informasi di salah satu Node yang terdaftar di atas, kalian bisa lakukan pengecekannya menggunakan perintah berikut ini
Catatan: Ganti
<nama_node>
menggunakan nama yang terdaftar di Kubernetes Cluster, dalam contoh kasus ini, saya ingin melakukan pengecekan untuk Node dengan namak3s-4
maka perintah nya adalahsudo kubectl describe node k3s-4
sudo kubectl describe node <nama_node>
Jika perintah di atas berhasil dijalankan, maka akan terlihat output seperti ini
Catatan: Informasi yang akan muncul banyak sekali, kalian bisa baca-baca lebih detail nya. Contohnya terdapat informasi seperti
- Nama Node
- Roles nya sebagai apa
- Labels
- Annotations
- Memory
- Disk
- IP Address
- Hostname
- CPU
- Operating System
- Dan sebagainya
Untuk informasi terkait Label dan Annotation nanti akan kita coba bahas lebih dalam di episode mengenai object
Label
danAnnotation
.
Name: k3s-4
Roles: <none>
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/instance-type=k3s
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=k3s-4
kubernetes.io/os=linux
node.kubernetes.io/instance-type=k3s
Annotations: alpha.kubernetes.io/provided-node-ip: 20.20.20.14
flannel.alpha.coreos.com/backend-data: {"VNI":1,"VtepMAC":"fa:a1:5d:2e:04:c3"}
flannel.alpha.coreos.com/backend-type: vxlan
flannel.alpha.coreos.com/kube-subnet-manager: true
flannel.alpha.coreos.com/public-ip: 20.20.20.14
k3s.io/hostname: k3s-4
k3s.io/internal-ip: 20.20.20.14
k3s.io/node-args: ["agent"]
k3s.io/node-config-hash: 3KNQLTBXA74TAVRJ7E44VDXDEPIWPHOZBIOTNHQ5V2AGNS2LEHJA====
k3s.io/node-env: {"K3S_TOKEN":"********","K3S_URL":"https://k3s-1.home.internal:6443"}
node.alpha.kubernetes.io/ttl: 0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Mon, 12 May 2025 12:26:54 +0000
Taints: <none>
Unschedulable: false
Lease:
HolderIdentity: k3s-4
AcquireTime: <unset>
RenewTime: Sat, 14 Jun 2025 08:10:40 +0000
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason Message
---- ------ ----------------- ------------------ ------ -------
MemoryPressure False Sat, 14 Jun 2025 08:08:00 +0000 Fri, 23 May 2025 16:26:51 +0000 KubeletHasSufficientMemory kubelet has sufficient memory available
DiskPressure False Sat, 14 Jun 2025 08:08:00 +0000 Fri, 23 May 2025 16:26:51 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure
PIDPressure False Sat, 14 Jun 2025 08:08:00 +0000 Fri, 23 May 2025 16:26:51 +0000 KubeletHasSufficientPID kubelet has sufficient PID available
Ready True Sat, 14 Jun 2025 08:08:00 +0000 Fri, 23 May 2025 16:26:51 +0000 KubeletReady kubelet is posting ready status
Addresses:
InternalIP: 20.20.20.14
Hostname: k3s-4
Capacity:
cpu: 1
ephemeral-storage: 19221248Ki
hugepages-2Mi: 0
memory: 984664Ki
pods: 110
Allocatable:
cpu: 1
ephemeral-storage: 18698430040
hugepages-2Mi: 0
memory: 984664Ki
pods: 110
System Info:
Machine ID: 66757c96469b49babccd2de1522a71b6
System UUID: 0f93b646-89e0-4562-909c-631149480756
Boot ID: a9a0c304-7c2b-46bc-b736-21a540c93c54
Kernel Version: 6.8.0-60-generic
OS Image: Ubuntu 24.04.1 LTS
Operating System: linux
Architecture: amd64
Container Runtime Version: containerd://2.0.4-k3s2
Kubelet Version: v1.32.4+k3s1
Kube-Proxy Version: v1.32.4+k3s1
PodCIDR: 10.42.1.0/24
PodCIDRs: 10.42.1.0/24
ProviderID: k3s://k3s-4
Non-terminated Pods: (2 in total)
Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits Age
--------- ---- ------------ ---------- --------------- ------------- ---
default nginx-deployment-96b9d695-9wzxn 0 (0%) 0 (0%) 0 (0%) 0 (0%) 32d
kube-system svclb-traefik-06f3ce18-cw6kn 0 (0%) 0 (0%) 0 (0%) 0 (0%) 32d
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 0 (0%) 0 (0%)
memory 0 (0%) 0 (0%)
ephemeral-storage 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Starting 39m kube-proxy
Normal RegisteredNode 39m node-controller Node k3s-4 event: Registered Node k3s-4 in Controller
Normal Starting 39m kubelet Starting kubelet.
Normal NodeAllocatableEnforced 39m kubelet Updated Node Allocatable limit across pods
Normal NodeHasSufficientMemory 39m kubelet Node k3s-4 status is now: NodeHasSufficientMemory
Normal NodeHasNoDiskPressure 39m kubelet Node k3s-4 status is now: NodeHasNoDiskPressure
Normal NodeHasSufficientPID 39m kubelet Node k3s-4 status is now: NodeHasSufficientPID
Warning Rebooted 39m kubelet Node k3s-4 has been rebooted, boot id: a9a0c304-7c2b-46bc-b736-21a540c93c54
Penutup
Pada episode 4 ini, kita telah membahas secara spesifik mengenai object Node di Kubernetes, mulai dari pengertian, peran, hingga aplikasi utama yang selalu ada di setiap Node seperti kubelet
, kubeproxy
, dan container runtime
. Kita juga sudah melihat bagaimana cara mengecek daftar Node serta detail informasi yang ada di dalamnya.
Dengan memahami konsep Node, kita jadi tahu bagaimana Kubernetes mengelola resource dan menjalankan aplikasi secara otomatis tanpa harus memikirkan detail penempatan secara manual. Pengetahuan ini sangat penting sebagai dasar sebelum mempelajari object-object Kubernetes lainnya yang lebih kompleks.
Semoga penjelasan di episode ini bisa membantu kalian memahami peran Node dalam arsitektur Kubernetes. Jangan ragu untuk bereksperimen langsung di cluster masing-masing agar semakin paham.
Bagaimana, makin paham kan tentang Node di Kubernetes? Di episode berikutnya, kita akan membahas object Kubernetes lainnya yang tidak kalah penting yaitu Pod
. Jadi, pastikan tetap semangat belajar nya.