rook-ceph-osd 하나가 계속해서 pending 상태였습니다.
노드에 접속해서 lsblk로 확인 해보니 알 수 없는 이유로 osd가 붙은 디바이스가 초기화가 되어있었습니다..
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 500G 0 disk
├─sda1 8:1 0 600M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 498.4G 0 part
└─... 253:0 0 498.4G 0 lvm /
sdb 8:0 0 500G 0 disk
└─sdb1 8:3 0 500G 0 part <-- ceph ~~~ 로 되어있어야 함
sr0 11:0 1 2.5G 0 rom
osd pod는 존재하는데 mapper고 뭐고 다 초기화되서 ❗ osd 제거 및 추가했던 이력을 남겨둡니다.
kubectl exec -it -n rook-ceph rook-ceph-tools-[~]
ceph osd tree
제거할 osd를 확인해주세요.
제 경우 down인 osd가 있었습니다. (장치 초기화된 osd)
ceph osd out [osd.id]
ceph의 id는 보통 0번부터 n번까지의 숫자로 되어있습니다.
watch ceph -s
ceph osd df
kubectl scale --replicas=0 deploy/rook-ceph-osd-id -n rook-ceph
osd 제외에서는 클러스터에서 osd 데이터 및 정보를 제거하고, 해당 단계에서는 osd 자체를 제거합니다.
ceph osd purge id --yes-i-really-mean-it
osd가 제거되었는지 확인합니다.
ceph osd tree
osd key value가 제거되었는지 확인
ceph auth list
제거 되어있지 않다면 제거합니다.
ceph auth del osd.id
cephcluster 리소스에 정의 되어 있는 storage.node.devices 정보를 제거합니다.
kubectl edit cephcluster -n rook-ceph rook-ceph
...
storage:
node:
- devices:
- name: sdb
name: worker01 <-- osd 사라진 노드 부분 삭제
storage:
node:
- devices:
- name: sdb
name: worker02
osd deploy도 제거합니다. rs도 삭제해야 하는데 보통 depoly 삭제되면 삭제됩니다.
kubectl delete deploy -n rook-ceph rook-ceph-osd-id
제거된 osd를 사용하고 있던 디바이스의 노드에서 disk 정리 및 mapper 정리를 합니다.
sudo rm -rf /mnt/cephdir
sudo sgdisk --zap-all /dev/sdb <-- 디바이스 초기화 명령어
sudo ls /dev/mapper/ceph-* | sudo xargs -l% -- dmsetup remove % <-- mapper 제거
sudo rm -rf /dev/ceph-*
추가는 제거의 역순(❓)
cephcluster 리소스에 추가할 osd를 정의합니다.
그럼 끝입니다. 진짜요.
kubectl edit cephcluster -n rook-ceph rook-ceph
...
storage:
node:
- devices:
- name: 장치명 (lsblk로 조회 가능 or fdisk -l)
name: 노드 이름