Kalau Anda pernah memakai container seperti Docker, Anda tahu masalah apa yang diselesaikannya. Aplikasi yang tadinya "jalan di laptop saya, tapi error di server" akhirnya berjalan sama persis di mana pun, karena semua kebutuhannya dibungkus rapi dalam satu paket. Selama aplikasi Anda hanya satu dan cukup dijalankan di satu server, Docker sudah lebih dari memadai.
Persoalan baru muncul ketika aplikasi Anda tumbuh. Satu container berubah menjadi puluhan, tersebar di banyak server. Lalu datang pertanyaan yang tidak bisa dijawab Docker sendirian: siapa yang menghidupkan ulang container yang tiba-tiba mati jam tiga pagi? Siapa yang membagi beban ketika pengunjung membludak? Siapa yang merilis versi baru tanpa mematikan layanan sedetik pun? Menjawab semua itu secara manual jelas tidak mungkin. Di sinilah Kubernetes adalah jawaban yang paling banyak dipakai industri, dan artikel ini akan membahas apa itu Kubernetes, cara kerjanya, hingga kapan Anda sebenarnya membutuhkannya.
Apa Itu Kubernetes?
Kubernetes adalah platform open-source untuk mengotomasi proses deployment, penskalaan, dan pengelolaan aplikasi berbasis container di banyak server sekaligus. Pekerjaan mengatur banyak container agar bekerja sebagai satu sistem yang utuh ini punya nama teknis: container orchestration (orkestrasi container). Jadi bila Docker bertugas menjalankan satu container, Kubernetes bertugas mengatur ribuan container itu supaya tetap hidup, terbagi rata, dan selalu tersedia.
Namanya diambil dari bahasa Yunani yang berarti "juru mudi" atau nahkoda kapal, sebuah kiasan yang pas untuk sesuatu yang tugasnya mengemudikan banyak muatan. Anda juga akan sering menemui sebutan K8s. Angka 8 di tengah bukan versi, melainkan singkatan: huruf K di depan, angka 8 mewakili delapan huruf di antara ("ubernete"), lalu huruf s di akhir. Jadi "kubernetes itu apa" dan "apa itu K8s" menanyakan hal yang sama persis.
Kubernetes lahir dari sistem internal Google bernama Borg, yang selama bertahun-tahun dipakai menjalankan layanan raksasa seperti Search dan Gmail. Google merilisnya sebagai proyek open-source pada 2014, lalu menyerahkan pengelolaannya ke Cloud Native Computing Foundation (CNCF). Karena itu Kubernetes tidak dimiliki satu perusahaan dan bisa Anda pakai gratis di server mana pun.
Docker vs Kubernetes: Dua Lapisan, Bukan Dua Pesaing
Salah satu pertanyaan paling umum adalah soal "apa itu Kubernetes dan Docker", seolah keduanya bersaing dan Anda harus memilih salah satu. Anggapan ini keliru. Docker dan Kubernetes bekerja di lapisan yang berbeda dan justru saling melengkapi.
Docker mengurus satu container di satu mesin: membangun image, menjalankannya, menghentikannya. Kubernetes mengurus lapisan di atasnya, yaitu mengatur banyak container lintas banyak mesin: menempatkannya di server yang tepat, menghidupkannya kembali saat mati, dan membaginya ke beberapa salinan. Bayangkan sebuah kontainer pengiriman barang. Docker adalah kontainer beserta isinya yang sudah dikemas rapi, sedangkan Kubernetes adalah pelabuhan yang mengatur ribuan kontainer itu: mana yang dibongkar duluan, ditaruh di dermaga mana, dan diangkut kapal yang mana.
Ada satu miskonsepsi yang perlu diluruskan. Banyak artikel masih menyebut Kubernetes "membutuhkan Docker" untuk berjalan. Sejak versi 1.24 yang rilis pada 2022, Kubernetes tidak lagi memakai Docker Engine sebagai mesin penjalan container-nya, melainkan runtime yang lebih ringan seperti containerd atau CRI-O. Kabar baiknya, image yang Anda buat dengan Docker tetap berjalan mulus di Kubernetes, karena formatnya sudah menjadi standar terbuka. Jadi Anda tetap bisa membangun aplikasi dengan Docker seperti biasa. Untuk memahami fondasinya, ada baiknya Anda menguasai dulu konsep dasar Docker dan container sebelum melangkah ke Kubernetes.
Diagram perbandingan Docker dan Kubernetes dalam pengelolaan container.
Cara Kerja Kubernetes: Konsep Desired State
Untuk benar-benar memahami cara kerja Kubernetes, Anda perlu satu konsep kunci: declarative (deklaratif) dengan desired state (kondisi yang diinginkan). Konsep inilah jiwa dari Kubernetes, dan sayangnya paling sering dilewati.
Prinsipnya sederhana. Anda tidak memberi Kubernetes daftar perintah langkah demi langkah. Anda cukup mendeklarasikan kondisi akhir yang Anda inginkan, misalnya "saya mau tiga salinan aplikasi ini selalu berjalan". Setelah itu, Kubernetes terus-menerus membandingkan kondisi nyata di lapangan dengan deklarasi Anda, lalu memperbaiki setiap selisih yang muncul. Proses membandingkan dan mengoreksi tanpa henti ini disebut reconciliation loop (putaran rekonsiliasi).
Analogi yang paling dekat adalah termostat pendingin ruangan, bukan resep masakan. Dengan resep, Anda memberi urutan langkah yang harus dijalankan satu per satu. Dengan termostat, Anda hanya menetapkan suhu yang diinginkan, katakanlah 24 derajat, lalu mesin yang bekerja tanpa lelah menjaga suhu itu. Ketika ruangan memanas, ia mendinginkan sendiri tanpa Anda perintah ulang. Begitulah Kubernetes bekerja: Anda menetapkan "tiga salinan harus hidup", dan bila satu salinan mati, Kubernetes otomatis membuat penggantinya agar kembali menjadi tiga. Dari sifat inilah lahir kemampuan penyembuhan diri (self-healing) dan penskalaan otomatis yang akan kita bahas nanti.
Anatomi Cluster: Control Plane dan Worker Node
Kubernetes tidak berjalan di satu server tunggal. Ia berjalan di atas cluster, yaitu sekumpulan server, baik fisik maupun virtual, yang disatukan agar bekerja seolah satu komputer besar. Bila Anda membangun cluster sendiri, tiap server ini umumnya berupa VPS (Virtual Private Server) yang saling terhubung. Setiap server dalam cluster disebut node, dan node terbagi menjadi dua peran.
Peran pertama adalah Control Plane, dahulu disebut master node. Inilah otak cluster yang membuat semua keputusan. Di dalamnya ada beberapa komponen penting:
- kube-apiserver: pintu masuk utama cluster. Semua perintah, baik dari Anda maupun antarkomponen, melewati sini.
- etcd: basis data penyimpan seluruh kondisi cluster. Inilah "buku catatan" yang memuat desired state Anda dan menjadi satu-satunya sumber kebenaran.
- kube-scheduler: penentu di node mana sebuah beban kerja baru sebaiknya ditempatkan, dengan mempertimbangkan sisa kapasitas tiap node.
- kube-controller-manager: penjaga yang menjalankan putaran rekonsiliasi, memastikan kondisi nyata selalu cocok dengan yang Anda deklarasikan.
Peran kedua adalah Worker Node, tempat aplikasi Anda benar-benar berjalan. Setiap worker node punya tiga bagian utama: kubelet (agen yang menerima instruksi dari Control Plane dan mengawasi container di node itu), kube-proxy (pengatur jaringan agar antaraplikasi bisa saling terhubung), dan container runtime seperti containerd yang bertugas menjalankan container-nya. Diagram berikut menggambarkan pembagian peran tersebut.
Diagram arsitektur Kubernetes antara control plane dan worker node.
Objek Penting: Pod, Service, dan Deployment
Ketika bekerja dengan Kubernetes, Anda tidak langsung mengurus container satu per satu. Anda berhadapan dengan objek-objek abstraksi yang lebih tinggi. Ada tiga yang paling sering Anda temui.
Pod adalah unit terkecil di Kubernetes. Sebuah pod membungkus satu container atau lebih yang saling berkaitan erat, sehingga mereka berbagi jaringan dan penyimpanan yang sama. Kubernetes tidak pernah menjalankan container secara telanjang, selalu di dalam pod. Sifat penting pod adalah fana: ia bisa mati dan digantikan kapan saja, dan pengganti itu akan mendapat alamat IP baru.
Deployment adalah objek yang mengelola pod dalam jumlah banyak sekaligus. Di sinilah Anda mendeklarasikan "saya mau tiga salinan pod ini". Deployment yang menjaga jumlah salinan tetap sesuai, sekaligus menangani pembaruan versi secara bertahap (rolling update) dan mengembalikannya ke versi lama (rollback) bila ada masalah.
Service menjawab persoalan alamat IP pod yang selalu berubah. Karena pod bisa mati dan lahir kembali dengan IP berbeda, aplikasi lain akan kebingungan mencarinya. Service menyediakan satu alamat jaringan yang tetap dan stabil untuk sekumpulan pod, lalu meneruskan permintaan yang masuk ke pod-pod yang sedang hidup. Selain ketiganya, ada pula Volume untuk penyimpanan data yang bertahan meski pod mati, serta Namespace untuk memisahkan beberapa proyek dalam satu cluster.
Fungsi dan Keunggulan Kubernetes
Setelah memahami komponennya, pertanyaan "kubernetes untuk apa" jadi lebih mudah dijawab. Berikut fungsi utama yang membuatnya banyak dipakai:
- Penyembuhan diri (self-healing): bila sebuah container atau pod mati, Kubernetes otomatis menggantinya tanpa campur tangan Anda. Layanan tetap hidup meski ada kegagalan.
- Penskalaan otomatis: saat trafik naik, Kubernetes bisa menambah jumlah salinan pod, lalu menguranginya lagi ketika trafik turun untuk menghemat sumber daya. Kemampuan ini dikenal sebagai autoscaling.
- Pembagian beban dan penemuan layanan: permintaan yang masuk dibagi rata ke semua salinan pod (load balancing), sehingga tidak ada satu pun yang kelebihan beban.
- Rilis tanpa henti layanan: dengan rolling update, versi baru aplikasi digulirkan bertahap sambil versi lama tetap melayani, jadi pengguna tidak merasakan gangguan. Jika bermasalah, rollback mengembalikannya seketika.
- Pengelolaan konfigurasi dan rahasia: data sensitif seperti kata sandi dan kunci API disimpan terpisah dari kode lewat objek Secret dan ConfigMap.
- Portabilitas: karena Kubernetes berjalan di banyak penyedia cloud maupun server sendiri, Anda tidak terkunci pada satu vendor.
Kekurangan dan Hal yang Perlu Anda Pertimbangkan
Membaca daftar keunggulan di atas, Kubernetes terdengar seperti jawaban untuk segalanya. Kenyataannya tidak sesederhana itu, dan penting bagi Anda mengenali sisi lain sebelum memutuskan mengadopsinya.
Yang pertama dan paling terasa adalah kurva belajarnya yang curam. Kubernetes punya banyak konsep, istilah, dan file konfigurasi yang harus Anda kuasai sebelum bisa memakainya dengan benar. Banyak tim membutuhkan waktu berbulan-bulan sampai benar-benar nyaman.
Yang kedua, kompleksitas operasional. Menjalankan cluster Kubernetes di produksi berarti Anda juga harus mengurus pemantauan, pencatatan log, keamanan, jaringan, dan pembaruan cluster itu sendiri. Ini pekerjaan yang biasanya menuntut tim khusus, bukan satu orang di waktu senggang. Yang ketiga adalah biaya: sebuah cluster minimal butuh beberapa node yang menyala terus, sehingga lebih mahal dibanding satu server tunggal. Untuk aplikasi kecil, ongkos dan tenaga ini kerap lebih besar daripada manfaatnya.
Kapan Anda Belum Butuh Kubernetes
Inilah bagian yang jarang disampaikan dengan jujur: tidak semua aplikasi membutuhkan Kubernetes, dan memaksakannya justru menambah beban. Sebagai patokan konkret, Anda belum membutuhkan Kubernetes bila kondisi Anda seperti ini:
- Aplikasi Anda masih berupa satu kesatuan (monolit), belum dipecah menjadi banyak layanan kecil.
- Anda cukup berjalan di satu sampai dua server, dan trafiknya relatif stabil tanpa lonjakan ekstrem.
- Tim Anda kecil dan belum punya orang yang siap mengurus cluster secara penuh.
Untuk kondisi di atas, satu VPS yang menjalankan Docker Compose, atau layanan platform-as-a-service yang mengurus server untuk Anda, sudah lebih dari cukup dan jauh lebih hemat tenaga.
Kubernetes mulai masuk akal ketika kebutuhan Anda berubah: aplikasi sudah terpecah menjadi banyak microservice yang harus dikelola bersama, trafik naik-turun tajam sehingga butuh penskalaan otomatis, ketersediaan layanan harus terjaga tanpa boleh mati, dan tim Anda sudah cukup matang untuk mengoperasikannya. Bila mayoritas syarat itu terpenuhi, barulah investasi belajar Kubernetes akan terbayar.
Managed Kubernetes: Tidak Harus Membangun dari Nol
Membaca daftar komponen tadi, Anda mungkin membayangkan harus memasang dan merawat sendiri seluruh control plane beserta node-nya. Kabar baiknya, sebagian besar perusahaan tidak melakukan itu. Mereka memakai managed Kubernetes, yaitu layanan di mana penyedia cloud yang mengurus bagian rumit control plane, sementara Anda cukup fokus menjalankan aplikasi. Contoh yang paling umum adalah Google Kubernetes Engine (GKE), Amazon EKS, dan Azure Kubernetes Service (AKS). Pendekatan ini memangkas sebagian besar beban operasional yang tadi kita bahas, dengan konsekuensi Anda membayar biaya layanannya.
Kalau tujuan Anda baru sebatas belajar dan mengenal cara kerjanya, Anda bahkan tidak perlu server sama sekali. Alat seperti Minikube atau kind mampu menjalankan cluster Kubernetes mini di dalam laptop Anda, cukup untuk berlatih membuat pod dan deployment sebelum menyentuh lingkungan produksi sungguhan.
FAQ Seputar Kubernetes
Kubernetes itu apa secara singkat? Kubernetes adalah sistem open-source yang mengatur banyak container aplikasi di banyak server sekaligus, memastikan semuanya tetap hidup, terbagi rata, dan mudah diperbarui.
Apa beda Docker dan Kubernetes? Docker menjalankan satu container di satu mesin, sedangkan Kubernetes mengatur banyak container lintas banyak mesin. Keduanya bekerja di lapisan berbeda dan saling melengkapi, bukan bersaing.
Apakah Kubernetes gratis? Ya, Kubernetes bersifat open-source dan gratis dipakai. Yang Anda bayar adalah server tempat menjalankannya, atau biaya layanan cloud bila memakai Kubernetes kelolaan penyedia.
Kesimpulan
Kubernetes adalah juru mudi yang mengatur banyak container aplikasi di skala besar, mengambil alih pekerjaan menghidupkan ulang, membagi beban, dan merilis pembaruan yang mustahil dilakukan manual. Intinya terletak pada konsep desired state: Anda mendeklarasikan kondisi yang diinginkan, dan Kubernetes yang menjaganya tetap terwujud. Ia bukan pengganti Docker, melainkan lapisan yang berdiri di atas container yang sudah Anda kenal.
Meski begitu, kekuatan Kubernetes datang bersama kompleksitas dan biaya yang nyata. Selama aplikasi Anda masih sederhana dan berjalan di sedikit server, solusi yang lebih ringan biasanya lebih bijak. Pahami dulu kebutuhan Anda sebenarnya, baru putuskan apakah saatnya beralih. Semoga artikel ini membantu.




