Apa itu Kubernetes?
Kubernetes (K8s) adalah platform orkestrasi container. Jika Docker menjalankan satu container, Kubernetes mengelola ratusan/ribuan container di banyak server.
Konsep Utama
- Cluster — Kumpulan server (nodes) yang dikelola K8s
- Node — Satu server (physical atau virtual)
- Pod — Unit terkecil, berisi 1+ container
- Deployment — Mengelola replica Pod (scaling, update)
- Service — Expose Pod ke network (load balancing)
- Ingress — Route external traffic ke Service
Deployment YAML
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: my-app:latest
ports:
- containerPort: 3000
resources:
requests:
memory: "128Mi"
cpu: "250m"
limits:
memory: "256Mi"
cpu: "500m"
Service YAML
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: my-app-service
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 3000
type: LoadBalancer
Pod Lifecycle
kubectl Commands
# Apply konfigurasi
kubectl apply -f deployment.yaml
# Lihat resource
kubectl get pods
kubectl get deployments
kubectl get services
# Scale
kubectl scale deployment my-app --replicas=5
# Logs & Debug
kubectl logs pod-name -f
kubectl exec -it pod-name -- sh
kubectl describe pod pod-name