---
title: "Istilah Dasar Kubernetes, Pod, Deployment, dan Service"
description: "Penjelasan sederhana istilah Kubernetes yang paling sering muncul: cluster, node, pod, deployment, service, label, dan namespace, plus contoh YAML."
url: "https://nivelva.com/insight/istilah-dasar-kubernetes-pod-deployment-service"
category: "Server \u0026 Infrastruktur"
tags: ["kubernetes","pod","deployment","service","container"]
author: "Theresia Candiawan"
published: "2026-11-07T09:43:00+07:00"
updated: "2026-11-07T09:43:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Istilah Dasar Kubernetes, Pod, Deployment, dan Service

> **Jawaban singkat:** Pod adalah unit terkecil yang menjalankan satu atau beberapa container. Deployment menjaga jumlah pod dan mengatur update bertahap. Service memberi alamat tetap agar pod yang berganti-ganti tetap bisa dijangkau. Ketiganya terhubung lewat label.

Seorang developer yang sudah lancar memakai Docker biasanya membuka dokumentasi Kubernetes untuk pertama kali dan langsung tenggelam. Ia ingin menjalankan satu aplikasi web, tapi yang ditemui adalah pod, ReplicaSet, deployment, service, ingress, dan selector, semuanya dalam satu halaman. Padahal sebagian besar pekerjaan sehari-hari hanya memakai segelintir istilah itu.

Kabar baiknya, tiga istilah inti sudah menjelaskan hampir semuanya: pod menjalankan container, deployment menjaga pod tetap hidup dan memperbaruinya, dan service memberi alamat tetap untuk menjangkau pod. Sisanya adalah pelengkap yang bisa dipelajari sambil jalan.

## Peta besarnya: cluster, node, dan control plane

**Cluster** adalah sekumpulan mesin yang dikelola sebagai satu kesatuan. Setiap mesin di dalamnya disebut **node**, bisa berupa VPS, server fisik, atau mesin virtual.

Di dalam cluster ada **control plane**, yaitu "otak" yang menerima perintah, menyimpan keadaan cluster, dan memutuskan pod berjalan di node mana. Node pekerja menjalankan **kubelet**, agen yang memastikan container di node itu sesuai dengan yang diminta control plane.

Kamu berbicara dengan cluster lewat **kubectl**, alat baris perintah yang mengirim permintaan ke API server. Perintah seperti `kubectl get pods` atau `kubectl apply -f app.yaml` akan sangat sering kamu ketik.

Satu konsep lagi yang membedakan Kubernetes dari Docker biasa: Kubernetes bersifat **deklaratif**. Kamu tidak menyuruh "jalankan tiga container", tapi menulis "keadaan yang diinginkan adalah tiga replika". Kubernetes terus membandingkan keadaan nyata dengan keinginan itu dan memperbaiki selisihnya, misalnya membuat pod baru bila ada yang mati.

## Apa itu pod di Kubernetes?

**Pod** adalah unit terkecil yang bisa dijalankan Kubernetes. Satu pod berisi satu container atau lebih yang selalu ditempatkan bersama di node yang sama, berbagi alamat IP, dan bisa berbagi volume. Dalam praktik, kebanyakan pod hanya berisi satu container aplikasi. Container tambahan (sering disebut sidecar) dipakai untuk tugas pendamping, seperti mengirim log atau menjadi proxy.

Sifat terpenting pod: **sementara**. Pod tidak dirancang untuk hidup selamanya, dan data yang ditulis ke filesystem container ikut hilang bila tidak memakai volume. Pod bisa dihapus, dipindah, atau diganti kapan saja, dan pod pengganti mendapat nama serta IP baru. Karena itu, hampir tidak ada yang membuat pod secara langsung. Pod dibuat dan dirawat oleh objek lain, terutama deployment.

## Deployment, penjaga jumlah dan versi pod

**Deployment** menyatakan aplikasi apa yang dijalankan, dari image mana, dan berapa replika. Di baliknya, deployment membuat **ReplicaSet** yang tugasnya menjaga jumlah pod tetap sesuai angka itu.

Kekuatan deployment terasa saat update. Bila kamu mengganti versi image, deployment membuat ReplicaSet baru dan mengganti pod lama secara bertahap (rolling update), sehingga aplikasi tetap melayani selama proses berjalan. Bila versi baru bermasalah, `kubectl rollout undo deployment/web` mengembalikannya ke versi sebelumnya.

Deployment juga mengatur seberapa cepat penggantian itu, misalnya berapa pod boleh tidak tersedia sekaligus, lewat bagian `strategy` di manifest.

Untuk aplikasi yang butuh identitas tetap dan penyimpanan per replika, seperti database, Kubernetes menyediakan **StatefulSet**. Untuk agen yang harus berjalan di setiap node, seperti pengumpul log, ada **DaemonSet**. Keduanya bekerja dengan prinsip yang mirip dengan deployment.

## Kenapa butuh service bila sudah ada pod?

Karena IP pod selalu berubah, aplikasi lain tidak bisa mengandalkannya. **Service** menyelesaikan masalah ini dengan memberi satu alamat IP virtual dan nama DNS yang tetap, lalu meneruskan lalu lintas ke pod-pod yang cocok. Di dalam cluster, aplikasi lain cukup memanggil nama service, misalnya `http://web`.

Service menemukan pod lewat **label** dan **selector**. Label adalah pasangan kunci-nilai yang ditempel pada objek, misalnya `app: web`. Selector pada service berbunyi "teruskan ke semua pod berlabel `app: web`". Label inilah benang merah yang menghubungkan deployment, pod, dan service.

Ada beberapa jenis service:

| Jenis | Bisa diakses dari | Kegunaan umum |
|:--|:--|:--|
| ClusterIP (bawaan) | Hanya dari dalam cluster | Komunikasi antar layanan, misalnya aplikasi ke API internal |
| NodePort | IP setiap node pada port tertentu (rentang bawaan 30000 sampai 32767) | Uji coba atau cluster kecil tanpa load balancer |
| LoadBalancer | Alamat dari load balancer eksternal | Membuka layanan ke internet di cloud yang mendukungnya |
| ExternalName | Dipetakan ke nama DNS di luar cluster | Memberi nama internal untuk layanan eksternal |

Untuk website, biasanya service ClusterIP dipadukan dengan **Ingress**, aturan yang memetakan domain dan path ke service, dijalankan oleh ingress controller. Perkembangan terbaru soal pilihan ingress controller dibahas di [Ingress NGINX pensiun dan alternatifnya](https://nivelva.com/insight/ingress-nginx-pensiun-alternatif).

## Contoh yang menyatukan semuanya

Manifest berikut membuat deployment dengan dua replika Nginx dan service yang mengarah ke sana:

```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: nginx
          image: nginx:1.27
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  selector:
    app: web
  ports:
    - port: 80
      targetPort: 80
```

Simpan sebagai `web.yaml`, jalankan `kubectl apply -f web.yaml`, lalu lihat hasilnya dengan `kubectl get deployment,pods,service`. Perhatikan label `app: web` muncul tiga kali: di selector deployment, di template pod, dan di selector service. Bila salah satunya tidak cocok, service tidak menemukan pod dan permintaan tidak sampai ke aplikasi.

Beberapa istilah lain akan segera kamu temui. **Namespace** memisahkan objek dalam satu cluster, misalnya `staging` dan `produksi`. **ConfigMap** menyimpan konfigurasi, sedangkan **Secret** menyimpan data sensitif seperti password; isi Secret secara bawaan hanya di-encode base64, bukan dienkripsi, jadi akses ke objek ini tetap harus dibatasi. **PersistentVolumeClaim** adalah permintaan penyimpanan yang tetap ada meski pod diganti.

Untuk mencoba semua ini tanpa biaya besar, cluster kecil di satu atau dua VPS dengan K3s sudah cukup, caranya ada di [membuat cluster Kubernetes ringan dengan K3s](https://nivelva.com/insight/cluster-kubernetes-k3s). Sebelum memutuskan memakai Kubernetes untuk produksi, timbang juga alternatif yang lebih sederhana di [Docker Swarm atau Kubernetes untuk tim kecil](https://nivelva.com/insight/docker-swarm-kubernetes-tim-kecil).

Ringkasnya, pod menjalankan container, deployment menjaga jumlah dan versinya, dan service memberi alamat yang tidak berubah, sementara label mengikat ketiganya. Begitu tiga hal ini terasa wajar, istilah Kubernetes lain tinggal variasi dari pola yang sama.

## Sumber

- <https://kubernetes.io/docs/concepts/workloads/pods/>
- <https://kubernetes.io/docs/concepts/workloads/controllers/deployment/>
- <https://kubernetes.io/docs/concepts/services-networking/service/>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/istilah-dasar-kubernetes-pod-deployment-service
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
