Recraftory

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 nodes

Kind (Kubernetes in Docker)

  • Menjalankan cluster Kubernetes di Docker container
  • Lebih cepat dan ringan dari Minikube
kind create cluster

kubectl

  • 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 pod

Konsep Declarative

  • Kubernetes menggunakan model declarative
  • Definisikan state yang diinginkan dalam YAML
  • Kubernetes akan menjaga cluster sesuai definisi
  • File YAML dideploy dengan kubectl apply