Pengenalan Kubernetes
Konsep dasar container orchestration dengan Kubernetes
Apa itu Kubernetes
- Platform open-source untuk mengelola container secara otomatis
- Dikenal juga sebagai K8s (k + 8 huruf + s)
- Originally dibuat oleh Google, sekarang dikelola CNCF
- Standard untuk container orchestration di production
Masalah yang Diselesaikan Kubernetes
- Deployment: Deploy container ke banyak server
- Scaling: Scale up/down otomatis berdasarkan beban
- Self-healing: Restart container yang gagal
- Load balancing: Distribusi traffic ke container sehat
- Storage: Mount storage ke container sesuai kebutuhan
- Secrets: Mengelola password dan token dengan aman
Arsitektur Kubernetes
Control Plane
- API Server: Entry point untuk semua perintah
- Scheduler: Menentukan node mana untuk menjalankan pod
- Controller Manager: Menjaga state cluster sesuai keinginan
- etcd: Database key-value untuk menyimpan state cluster
Worker Node
- Kubelet: Agent yang berjalan di setiap node, komunikasi dengan control plane
- Kube-proxy: Mengatur network rules untuk service
- Container Runtime: Menjalankan container (containerd, CRI-O)
Komponen Utama
Pod
- Unit terkecil di Kubernetes
- Satu atau lebih container yang berbagi network dan storage
- Biasanya satu container per pod untuk aplikasi
Namespace
- Virtual cluster dalam satu cluster fisik
- Memisahkan resource antar tim atau environment
- Default namespace:
default
Label dan Selector
- Label: Key-value pair untuk mengidentifikasi resource
- Selector: Query untuk memilih resource berdasarkan label
Instalasi Lokal
Minikube
- Single-node Kubernetes untuk development
- Mendukung berbagai driver (Docker, VirtualBox, HyperKit)
minikube start
minikube status
kubectl get nodesKind (Kubernetes in Docker)
- Menjalankan cluster Kubernetes di Docker container
- Lebih cepat dan ringan dari Minikube
kind create clusterkubectl
- Command-line tool untuk berinteraksi dengan cluster
- Mengirim perintah ke API Server
kubectl get pods # List pod
kubectl get nodes # List node
kubectl apply -f file.yaml # Deploy dari file
kubectl delete pod nama-pod # Hapus pod
kubectl describe pod nama-pod # Detail podKonsep Declarative
- Kubernetes menggunakan model declarative
- Definisikan state yang diinginkan dalam YAML
- Kubernetes akan menjaga cluster sesuai definisi
- File YAML dideploy dengan
kubectl apply