rook: ceph: failed to initialize OSD
Is this a bug report or feature request?
- Bug Report
Deviation from expected behavior:
OSD prepare pod sometimes fails when creating new OSD in PVC-based cluster.
It’s due to the random failure of ceph-volume raw prepare.
I submitted an issue about this problem in Ceph issue tracker because I suspect it’s a Ceph’s problem.
https://tracker.ceph.com/issues/51034
For more details, please refer to the above-mentioned issue.
Expected behavior:
Suceed to initialize OSD
How to reproduce it (minimal and precise):
Create OSD on PVC continuously.
The reproduction probability is about 10%
** Workaround**:
Specify bluefs_buffered_io=false in rook-config-override cm.
File(s) to submit:
- Ceph related files.
- ceph.conf
- ceph-volume.log
- osd-mkfs-1622521334.log: a failure log of ceph-osd --mkfs
- Rook specific files.
- rook-ceph-osd-prepare-set1-data-5.yaml: Problemetic OSD’s deployment
- osd-prepare-set1-data-5.pod.log: the log of OSD preparing pod
- osd-prepare-event.log: prepare pod’s kubernetes event log
- cephcluster yaml: CephCluster cluster resource
Environment:
- OS: flatcar
- Kernel: 5.10.38-flatcar
- Rook version (use
rook versioninside of a Rook Pod): v1.6.3 - Storage backend version (e.g. for ceph do
ceph -v): ceph 16.2.4 - Kubernetes version (use
kubectl version): v1.20.7
Additional information:
- This problem didn’t happen in Ceph 15.2.8.
- I didn’t confirm whether this problem happen on host-based cluster.
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 19 (12 by maintainers)
edit: ok, nevermind that, I removed the memory limits, and it’s working ok for now (I guess I’ll see what happens when I deploy other stuff to the cluster)
Getting this error on a fresh test clusterThe weird thing is this is using the same version of rook (1.9.1), ceph (v17.2.0-20220420), almost the same cluster yml, and the same storageclass (deploy/examples/csi/rbd/storageclass.yml) as my production cluster which has been running for a while (but wasn’t stood up directly on 1.9.1 / v17.2.0-20220420, it was upgraded to that from an older version). I added memory limits to the cluster.yml compared to the one I used in my production cluster setup. Everything else is the same.
Here’s the diff between 1.9.1’s cluster.yaml and my file:
I created three new Debian 11.3 VMs from the netinst image with just standard system utilities and SSH server, and partitioned without swap, then set up the same kubespray inventory settings as my production cluster, deployed with kubespray 2.19.0. This is the kubespray inventory:
inventory.zip
My intent was to set up the same versions on my test cluster as in my production cluster so that I can apply upgrades to the test cluster first so that I know what to expect and how to not screw up production. (Yeah, I did that in the wrong order, should’ve had the test cluster up first…oof)
Will I need to upgrade the ceph version to get this to work?
edit: ok, nevermind that, I removed the memory limits, and it’s working ok for now (I guess I’ll see what happens when I deploy other stuff to the cluster)
This problem was fixed in v16.2.6.
I saw this in the CI, which runs v16.2.
I can try?
I’ll ask again the ceph team for more inputs.
@satoru-takeuchi I tried four or five times with different device sets of four Devices (WD Red Pro if that matters), and one time with three devices which worked directly and then a single device afterwards which did work too.
@satoru-takeuchi I’m on 16.2.4. I’m not having a PVC backed OSD, it’s raw devices with bluestore. I also don’t have rbd or CephFS here deployed, this setup is only serving RGW.
Edit: Provisioning four OSDs on four devices failed, three devices worked
@leseb I’ll answer next week because today is paid holiday.