Memastikan node dan disk benar-benar siap untuk OSD Ceph: persyaratan versi Kubernetes, raw device tanpa partisi tanpa filesystem tanpa LVM, mengenali lsblk dan tidak memformat, menandai node dengan label, serta memeriksa modul kernel dan konektivitas registry.

Di episode 2 kita memahami arsitektur Ceph dan Rook. Episode 3 adalah pengecekan dua level di bawah: node dan disk. Inilah bagian yang sering diremehkan — dan justru di sinilah banyak masalah lahir: OSD tidak muncul, daemon crash, atau disk terdeteksi salah.
Mengapa penting? Persyaratan raw device adalah kontrak keras. Ceph (melalui Rook) memformat sendiri disk yang aman untuk dipakai. Jika disk sudah punya partisi/filesystem/LVM, Rook menolaknya. Memahami aturan ini mencegah frustrasi di episode 5.
| Persyaratan | Detail |
|---|---|
| Kubernetes | v1.31 – v1.36 (didukung Rook v1.20) |
| Arsitektur | amd64 / arm64 |
| Node storage | Setidaknya 2 worker (lab kita), ideal 3+ untuk fault domain |
| Raw device | ≥ 1 disk/node tanpa partisi/filesystem/LVM |
| Aplikasi lain | Jangan pakai rootfs node untuk OSD |
Spesifikasi yang disarankan per worker storage: ≥ 2 vCPU, ≥ 4 GB RAM, network gigabit. Ceph OSD cukup rakus — kekurangan resource = OSD crash mendadak.
lsblk -fOutput yang benar:
NAME FSTYPE LABEL MOUNTPOINT
sda ext4 /
sdb # raw → kandidat OSD/dev/sdb tanpa FSTYPE dan tanpa MOUNTPOINT = raw device yang aman untuk OSD.
Sangat penting: jangan pernah menjalankan mkfs pada disk yang mau dipakai OSD. Biarkan raw. Rook menggunakan sgdisk --zap-all bila perlu untuk membersihkan (misal bekas disk). Jika kalian pernah memformat disk tersebut, Rook mungkin tidak mengenali sebagai device pecahan.
Catat nama device (/dev/sdb atau /dev/nvme0n1) untuk digunakan di CephCluster.spec.storage.nodes pada episode 5.
Untuk membatasi OSD hanya pada node storage, beri label:
kubectl label node worker-1 storage-node=true
kubectl label node worker-2 storage-node=trueNanti di CephCluster kita memakai storage.useAllNodes: false dan mendaftarkan node secara eksplisit — lebih aman daripada biarkan Ceph memakai semua disk di semua node.
Client (workload) memakai image RBD via CSI driver. Pastikan modul rbd tersedia di node:
modprobe rbd
lsmod | grep rbdJika tidak ada, install package ceph-common/rbd sesuai distro, atau pastikan CSI deployer menanganinya (Rook menangani ini via init container pada csi-rbdplugin).
Rook men-pull image rook/ceph:v1.20.2. Pastikan node punya akses ke registry publik atau mirror internal:
ctr image pull docker.io/rook/ceph:v1.20.2 2>/dev/null || echo "cek koneksi registry"Pada cluster offline, import image ke registry internal dan setting cephVersion.image menunjuk ke sana.
Warning
Jangan pernah menunjuk rootfs (/) untuk OSD. Rootfs biasanya punya filesystem & dipakai OS — Ceph menolak dan kalian kehabisan boot disk. Gunakan disk terpisah (bare metal) atau kosong volume (VM/cloud).
Jalankan checklist menyeluruh di kedua worker:
kubectl get nodes -o wide
kubectl label node worker-1 storage-node=true # sudah
lsblk -f
free -h
nprocChecklist:
/dev/sdb tanpa FSTYPE).rbd & ceph-common tersedia di node.rook/ceph:v1.20.2.Inti yang harus dibawa pulang:
mkfs pada disk OSD; biarkan Rook yang memformat (sgdisk --zap-all).rbd, resource cukup, dan akses image build.Di episode 4 selanjutnya kita akan menginstall Rook operator — via Helm chart atau manifest, memverifikasi Pod operator Running, memeriksa CRDs terdaftar, dan mengenal csi-operator untuk driver RBD/CephFS. Sampai jumpa di episode 4!