Mendeploy, Menskalakan, dan Memantau Aplikasi Stateful

Pengantar Kubernetes

Frank Heilmann

Platform Architect and Freelance Instructor

Rekap Aplikasi Stateless

  • Ringkasan singkat: aplikasi stateless dipetakan ke "Deployment" di Kubernetes
  • Dipakai saat tiap Pod menjalankan tugas yang sama persis
  • Aplikasi stateful butuh Pod yang saling terkait dalam satu set, namun bisa mengerjakan tugas dan data berbeda
  • Banyak hal tentang Deployment juga berlaku untuk StatefulSet
Pengantar Kubernetes

Aplikasi Stateful

  • Aplikasi stateful:

    • konsep umum
    • cocok dengan Kubernetes
    • menyimpan state
  • Saat terhenti, replika (Pod) baru dapat membaca state yang disimpan dan melanjutkan dari sana

  • Contoh:
    • Backend database (mis. PostgreSQL) menyajikan data ke frontend menggunakan 3 Pod.
    • Setiap pembaruan data melalui Pod mana pun harus dipersistenkan
    • Saat sebuah Pod berhenti, Pod baru dibuat dan perlu mengambil state tersimpan
Pengantar Kubernetes

Kubernetes StatefulSet

  • Aplikasi stateful diterjemahkan menjadi "Kubernetes StatefulSet"
  • Contoh manifest berisi bagian yang sama seperti:
    • apiVersion, kind, metadata, spec, template
  • replicas menentukan jumlah Pod dalam StatefulSet
  • Lebih lanjut tentang selector nanti
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: <deployment name>
  labels:
    app: <a label for the application>
spec:
  replicas: <number of initial replicas>
  selector:
    matchLabels:
      app: <matches the label above>
  template:
    metadata:
      labels:
        app: <label to be given to each pod>
    spec:
      containers:
      - name: <container name>
        image: <the image to be used>
        ports:
        - containerPort: <ports for networking>
Pengantar Kubernetes

Mendeploy ke Kubernetes Cluster

  • StatefulSet dideploy mirip Deployment: kubectl apply -f <manifest.yml>
  • Setelah dideploy, StatefulSet dibuat berbeda dari Deployment:
    • Pod dibuat satu per satu, bukan sekaligus seperti pada Deployment
    • Pod mendapat nama yang dapat diprediksi seperti pod-0, pod-1, pod-2, dll.
  • Artinya: berbeda dengan Pod pada Deployment, Pod pada StatefulSet memiliki identitas dan state
  • Karena itu, Pod berbeda dalam StatefulSet dengan identitas berbeda dapat menjalankan peran berbeda dalam aplikasi
Pengantar Kubernetes

Menskalakan StatefulSet

  • Seperti Deployment, StatefulSet bisa diskalakan naik atau turun:
    • Ubah jumlah replicas di Manifest lalu terapkan ulang,
    • Atau gunakan perintah kubectl scale statefulsets ...
  • Saat skala naik, Pod baru dibuat satu per satu:
    • mis., pod-0, pod-1, pod-2, lalu pod-3, kemudian pod-4 ditambahkan
  • Saat skala turun, Pod yang terakhir dibuat dihapus lebih dulu:
    • mis., pertama pod-4, lalu pod-3
Pengantar Kubernetes

Monitoring StatefulSet

  • Seperti pada Deployment, monitoring memungkinkan respons terhadap berbagai masalah: outage, lonjakan beban, atau kekurangan storage
  • Di sini, kita gunakan kubectl untuk tugas monitoring dasar
  • Perintah tipikal: sama seperti pada Deployment
  • Contoh 1: kubectl get pods menampilkan semua pod dalam StatefulSet beserta statusnya
  • Contoh 2: kubectl get services menampilkan semua service yang mungkin digunakan StatefulSet
Pengantar Kubernetes

Ayo berlatih!

Pengantar Kubernetes

Preparing Video For Download...