BIAYABLOG

Kubernetes adalah: Pengertian, Komponen, dan Beda dengan Docker

Tim Helipod
Diterbitkan 6 menit baca

Kubernetes adalah platform open source untuk mengatur (mengorkestrasi) container dalam jumlah banyak: menjalankannya di beberapa server, menjaga jumlahnya tetap sesuai, menyalakan ulang yang mati, membagi traffic, dan menambah atau mengurangi jumlah container sesuai beban. Nama Kubernetes sering disingkat K8s (ada 8 huruf antara "K" dan "s").

Kubernetes awalnya dikembangkan oleh Google berdasarkan pengalaman menjalankan sistem internal bernama Borg, lalu dirilis sebagai open source pada 2014. Sekarang proyek ini dikelola oleh Cloud Native Computing Foundation (CNCF).

Artikel ini menjelaskan kenapa Kubernetes dibutuhkan, komponen utamanya, contoh YAML sederhana, bedanya dengan Docker, kapan kamu sebenarnya tidak perlu mengelola Kubernetes sendiri, dan bagaimana Helipod memakainya.

Baca juga: Docker Compose adalah: Pengertian dan Contohnya dan DevOps adalah: Pengertian dan Prinsipnya


Kubernetes Adalah Jawaban untuk Masalah Apa?#

Docker membuat aplikasi mudah dibungkus dalam container. Masalah baru muncul ketika jumlah container bertambah:

  • Container mana harus jalan di server mana?
  • Apa yang terjadi kalau satu container crash pukul 3 pagi?
  • Bagaimana menambah container saat traffic naik, lalu menguranginya lagi?
  • Bagaimana merilis versi baru tanpa mematikan aplikasi?
  • Bagaimana container saling menemukan alamat satu sama lain?

Menjawab semua itu secara manual sangat melelahkan. Kubernetes mengotomasinya dengan pendekatan deklaratif: kamu menulis kondisi yang diinginkan (misalnya "jalankan 3 replika aplikasi ini"), dan Kubernetes terus bekerja supaya kondisi nyata sama dengan yang kamu tulis.


Komponen Utama Kubernetes#

Objek Fungsi
Cluster Kumpulan mesin yang dikelola Kubernetes, terdiri dari control plane dan node
Node Satu mesin (fisik atau virtual) tempat container berjalan
Pod Unit terkecil, berisi satu atau beberapa container yang berbagi network dan storage
Deployment Mengatur jumlah replika pod dan proses update versi (rolling update)
Service Alamat jaringan tetap untuk sekumpulan pod, sekaligus load balancing
Ingress Aturan routing HTTP/HTTPS dari luar cluster ke service, termasuk domain
HPA Horizontal Pod Autoscaler, menambah atau mengurangi jumlah pod berdasarkan metrik seperti CPU

Pod#

Pod bersifat sementara. Kalau pod mati, Kubernetes membuat pod baru dengan alamat IP yang berbeda. Karena itu kamu hampir tidak pernah membuat pod langsung, melainkan lewat Deployment.

Deployment dan Rolling Update#

Saat kamu mengganti versi image di Deployment, Kubernetes menyalakan pod versi baru sedikit demi sedikit dan mematikan pod lama setelah yang baru siap. Hasilnya, aplikasi tetap melayani request selama rilis.

Service dan Ingress#

Service memberi nama DNS internal yang stabil, misalnya api, sehingga aplikasi lain cukup memanggil http://api tanpa peduli IP pod. Ingress membuka service itu ke internet lewat domain.


Contoh YAML Kubernetes#

Berikut Deployment dengan 2 replika, Service, dan HPA untuk aplikasi web sederhana:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: ghcr.io/contoh/web:1.0.0
          ports:
            - containerPort: 3000
          resources:
            requests:
              cpu: 250m
              memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 3000
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web
  minReplicas: 2
  maxReplicas: 5
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 70

File ini diterapkan dengan kubectl apply -f web.yaml. HPA akan menambah pod sampai maksimal 5 kalau rata-rata pemakaian CPU melewati 70% dari nilai requests, dan menguranginya lagi saat beban turun.


Kubernetes vs Docker#

Pertanyaan "Kubernetes atau Docker?" sebenarnya kurang tepat, karena keduanya bekerja di level berbeda.

Aspek Docker Kubernetes
Fungsi utama Membangun dan menjalankan container Mengatur banyak container di banyak mesin
Skala Biasanya satu mesin Banyak node dalam cluster
Self-healing Terbatas (restart policy) Pod yang mati diganti otomatis
Autoscaling Tidak bawaan HPA bawaan
Kurva belajar Relatif mudah Cukup curam

Biasanya kamu memakai Docker (atau tool sejenis) untuk membangun image, lalu Kubernetes menjalankan image itu. Kubernetes sendiri tidak bergantung pada Docker Engine untuk menjalankan container, tapi image buatan Docker tetap bisa dipakai karena mengikuti standar OCI.


Kapan Kamu Tidak Perlu Mengelola Kubernetes Sendiri#

Kubernetes kuat, tapi mengelola cluster sendiri bukan pekerjaan kecil. Kamu harus mengurus upgrade versi, keamanan control plane, networking (CNI), ingress controller, sertifikat SSL, monitoring, dan backup. Untuk banyak tim, beban ini lebih besar daripada manfaatnya.

Kamu mungkin tidak perlu menjalankan cluster sendiri kalau:

  • Aplikasimu hanya satu atau beberapa service.
  • Tim belum punya orang yang paham operasional Kubernetes.
  • Satu VPS dengan Docker Compose sudah cukup menampung traffic.
  • Yang kamu butuhkan sebenarnya hanya autoscaling, rolling update, dan domain dengan SSL.

Untuk kebutuhan sederhana, satu VPS dengan Docker sudah sering cukup. Kalau ingin fitur Kubernetes tanpa mengurus clusternya, pilihan lain adalah platform terkelola.


Kubernetes di Helipod#

Helipod menjalankan aplikasi di atas Kubernetes, tapi kamu tidak perlu menulis YAML atau mengelola cluster. Kamu cukup deploy dari repository GitHub atau GitLab, atau dari Docker image. Helipack mendeteksi framework dan membuat Dockerfile, atau kamu memakai Dockerfile sendiri.

Yang kamu dapat:

  • Pod untuk setiap service, dengan web terminal ke container dan real-time logs.
  • Horizontal autoscaling (HPA) untuk menambah pod saat beban naik. Lihat autoscaling otomatis di Helipod dan Horizontal Pod Autoscaler di Helipod.
  • Custom domain dengan SSL otomatis, peran yang di Kubernetes biasa diisi Ingress.
  • Internal network antar service dalam satu project, mirip Service di Kubernetes.
  • Persistent volume untuk data yang harus bertahan saat pod diganti.

Biayanya pay-as-you-go dan ditagih harian dari wallet, misalnya 0,25 vCPU + 256 MB RAM + 1 GB storage sekitar Rp 775 per hari (kira-kira Rp 23.250 per bulan). Harga bisa berubah, cek halaman harga untuk angka terbaru.


FAQ#

Kubernetes adalah pengganti Docker?#

Bukan. Docker dipakai untuk membangun dan menjalankan container, sedangkan Kubernetes mengatur banyak container di banyak mesin. Keduanya saling melengkapi.

Apa itu pod di Kubernetes?#

Pod adalah unit terkecil di Kubernetes yang berisi satu atau beberapa container dengan network dan storage bersama.

Apakah Kubernetes cocok untuk proyek kecil?#

Mengelola cluster sendiri biasanya berlebihan untuk proyek kecil. Platform terkelola atau satu VPS dengan Docker sering lebih praktis.

Apa itu HPA?#

HPA (Horizontal Pod Autoscaler) adalah fitur Kubernetes yang otomatis menambah atau mengurangi jumlah pod berdasarkan metrik seperti pemakaian CPU.

Apakah di Helipod saya perlu belajar kubectl?#

Tidak. Deploy, environment variables, domain, logs, dan autoscaling diatur lewat dashboard Helipod.


Pakai Kubernetes Tanpa Mengurus Cluster#

Kalau kamu ingin pod, autoscaling, dan rolling update tanpa mengelola control plane, coba deploy aplikasimu di Helipod. Lihat rincian biayanya di halaman harga.

Artikel terkait

Lihat semua

Siap coba Helipod?

Deploy aplikasi kamu sekarang. Gratis, tanpa kartu kredit.

Mulai Gratis →
WhatsApp