Belajar Kubernetes Distributed Storage - Membuat CephCluster
Episode 5 of 28

Belajar Kubernetes Distributed Storage - Membuat CephCluster

Membuat CephCluster pertama: manifest dengan daftar node dan disk, menunggu MON MGR dan OSD membuat diri, memverifikasi health cluster lewat toolbox, serta menangani masalah umum OSD yang tidak muncul.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

Operator sudah Running (episode 4). Episode 5 adalah momen klimaks fondasi: membuat CephCluster — CRD yang menyatakan "buatkan saya Ceph di atas node-node ini". Operator akan menciptakan MON, MGR, dan OSD, lalu kita verifikasi kesehatannya.

Mengapa penting? CephCluster adalah kontrak utama. Salah konfigurasi di sini (mis. node yang salah, disk yang tidak raw) berarti waktu hilang berjam-jam. Dan karena cluster ini yang melayani storage di seluruh series, memastikan health-nya sejak awal adalah keharusan.

Manifest CephCluster (host storage)

Manifest Dasar

yaml
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
  name: rook-ceph
  namespace: rook-ceph
spec:
  cephVersion:
    image: rook/ceph:v1.20.2
  dataDirHostPath: /var/lib/rook
  mon:
    count: 3
    allowMultiplePerNode: false
  storage:
    useAllNodes: false
    useAllDevices: false
    config:
      osdsPerDevice: "1"
    nodes:
      - name: worker-1
        devices:
          - name: "sdb"
      - name: worker-2
        devices:
          - name: "sdb"
  dashboard:
    enabled: true
    port: 8443

Komponen Penting

FieldArti
cephVersion.imageImage Ceph persembahan Rook
dataDirHostPathTempat Rook menyimpan konfigurasi daemon di host — jangan di rootfs storage
mon.count3 MON (toleransi 1 gagal)
useAllNodes/useAllDevicesfalse — kita daftarkan node/disk eksplisit
osdsPerDevice1 OSD per disk
nodes[].devicesDaftar disk raw per node

Komponen yang Dibuat Rook

Setelah kubectl create -f cluster.yaml, operator mulai bekerja:

  • 3 MON — tersebar di node (biasanya di worker dengan osd? tidak, MON ditaruh sembarang node yang memenuhi scheduling).
  • MGR (active + standby) — dashboard & metric.
  • OSD daemon — satu per disk di worker-1/worker-2.
  • Service + ConfigMap terkait (mis. rook-ceph-mon).
Tunggu daemon ready
kubectl -n rook-ceph get pods -w

Diperlukan beberapa menit: Rook melakukan prepare node, memformat disk, dan menjalankan OSD.

Verifikasi Pod

Cek semua pods
kubectl -n rook-ceph get pods

Harusnya ada: rook-ceph-mon-a/b/c, rook-ceph-mgr-a, rook-ceph-mgr-b (standby), dan rook-ceph-osd-0, rook-ceph-osd-1. Semua Running/Ready.

Cek via Toolbox

Masuk ke toolbox (di deploy episode 6):

Cek status cluster (via toolbox)
# di dalam pod rook-ceph-tools
ceph -s
ceph osd tree

Output yang diharapkan:

text
  cluster:
    id: ...
  health: HEALTH_OK
  services:
    mon: 3 daemons, quorum a,b,c
    mds: 1/1 daemons up (untuk cephfs bila ada)
    osd: 2 osds: 2 up, 2 in

Health HEALTH_OK adalah target. HEALTH_WARN di awal biasanya normal (mis. PG belum penuh, atau balancer aktif) — tapi jelaskan.

Common Issues

OSD Tak Muncul

  • Pastikan disk benar-benar raw (episode 3). Jika sudah pernah diformat, Rook menolak.
  • Periksa log OSD prepare:
Log OSD prepare
kubectl -n rook-ceph logs -l app=rook-ceph-osd-prepare
  • Pastikan nama device sesuai yang ada di manifest dan benar-benar ada di node.

Resource Rendah

OSD butuh CPU/RAM. Jika node data-plane terlalu kecil (misal 1 vCPU/2GB), OSD bisa crash berulang. Tambah resource atau kurangi jumlah node OSD.

MON Gagal Start

  • Cek log rook-ceph-mon-a — biasanya konektivitas antar node (tidak bisa saling ping), atau port firewall.
  • Pastikan dataDirHostPath writable.

Warning

Jangan mengubah mon.count sembarangan setelah cluster eksis. MON adalah basis quorum — menambah/mengurangi dijaga operator, tapi mengubah desired state saat cluster tidak sehat dapat membuat quorum runtuh. Disesuaikan hanya saat HEALTH_OK.

Penutup

Inti yang harus dibawa pulang:

  • CephCluster = manifest yang menyatakan node, disk, dan image Ceph.
  • useAllNodes/useAllDevices: false + daftar eksplisit = kontrol penuh.
  • Operator membuat MON (3), MGR (active+standby), dan OSD — tunggu sampai Ready.
  • Target: ceph -shealth: HEALTH_OK, 2 osd up/in untuk lab kita.
  • OSD tak muncul → cek raw device & log osd-prepare.

Di episode 6 selanjutnya kita akan meng-deploy toolbox dan mengaktifkan Ceph dashboard — akses CLI ceph untuk diagnosa, perintah penting ceph status/osd tree/df, serta dashboard grafis dengan user yang aman. Sampai jumpa di episode 6!

Belajar Kubernetes Distributed Storage - Membuat CephCluster | Belajar Kubernetes Distributed Storage