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.

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.
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| Field | Arti |
|---|---|
cephVersion.image | Image Ceph persembahan Rook |
dataDirHostPath | Tempat Rook menyimpan konfigurasi daemon di host — jangan di rootfs storage |
mon.count | 3 MON (toleransi 1 gagal) |
useAllNodes/useAllDevices | false — kita daftarkan node/disk eksplisit |
osdsPerDevice | 1 OSD per disk |
nodes[].devices | Daftar disk raw per node |
Setelah kubectl create -f cluster.yaml, operator mulai bekerja:
osd? tidak, MON ditaruh sembarang node yang memenuhi scheduling).rook-ceph-mon).kubectl -n rook-ceph get pods -wDiperlukan beberapa menit: Rook melakukan prepare node, memformat disk, dan menjalankan OSD.
kubectl -n rook-ceph get podsHarusnya 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.
Masuk ke toolbox (di deploy episode 6):
# di dalam pod rook-ceph-tools
ceph -s
ceph osd treeOutput yang diharapkan:
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 inHealth HEALTH_OK adalah target. HEALTH_WARN di awal biasanya normal (mis. PG belum penuh, atau balancer aktif) — tapi jelaskan.
kubectl -n rook-ceph logs -l app=rook-ceph-osd-prepareOSD butuh CPU/RAM. Jika node data-plane terlalu kecil (misal 1 vCPU/2GB), OSD bisa crash berulang. Tambah resource atau kurangi jumlah node OSD.
rook-ceph-mon-a — biasanya konektivitas antar node (tidak bisa saling ping), atau port firewall.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.
Inti yang harus dibawa pulang:
useAllNodes/useAllDevices: false + daftar eksplisit = kontrol penuh.ceph -s → health: HEALTH_OK, 2 osd up/in untuk lab kita.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!