rook-ceph osd 제거 및 추가

김건호·2023년 3월 27일
1

사건의 발단..

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 제거 및 추가했던 이력을 남겨둡니다.

osd 제거

tools pod 접속

kubectl exec -it -n rook-ceph rook-ceph-tools-[~]

osd 확인

ceph osd tree

제거할 osd를 확인해주세요.
제 경우 down인 osd가 있었습니다. (장치 초기화된 osd)

ceph 클러스터에서 osd 제외

ceph osd out [osd.id]

ceph의 id는 보통 0번부터 n번까지의 숫자로 되어있습니다.

제거 후, rebalancing 확인

watch ceph -s

정상 제거 및 모든 값 0인지 확인

ceph osd df

osd replica 0으로 내리기

kubectl scale --replicas=0 deploy/rook-ceph-osd-id -n rook-ceph

ceph 클러스터에서 osd 제거

osd 제외에서는 클러스터에서 osd 데이터 및 정보를 제거하고, 해당 단계에서는 osd 자체를 제거합니다.

ceph osd purge id --yes-i-really-mean-it

osd, osd key 제거 확인

osd가 제거되었는지 확인합니다.

ceph osd tree

osd key value가 제거되었는지 확인

ceph auth list

제거 되어있지 않다면 제거합니다.

ceph auth del osd.id

ceph 클러스터 설정에서 노드 및 osd 정보 삭제

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 디바이스 초기화

제거된 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-*

osd 추가

추가는 제거의 역순(❓)
cephcluster 리소스에 추가할 osd를 정의합니다.
그럼 끝입니다. 진짜요.

kubectl edit cephcluster -n rook-ceph rook-ceph

...
  storage:
    node:
    - devices:
      - name: 장치명 (lsblk로 조회 가능 or fdisk -l)
      name: 노드 이름 
profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

0개의 댓글