Ceph 노드 재시작하기
노드 한 대 재시작
for _option in noout; do
kubectl rook-ceph ceph osd set ${_option}
done
kubectl cordon <node>
kubectl drain <node> --ignore-daemonsets --delete-emptydir-data
해당 노드에 접속하거나 IPMI 등을 통해 노드를 재시작합니다.
kubectl uncordon <node>
for _option in noout; do
kubectl rook-ceph ceph osd unset ${_option}
done
전체 노드 재시작
Reference
스토리지를 사용하는 모든 서비스 scale down
Ceph OSD 설정
for _option in noout nodown norebalance nobackfill norecover pause; do
kubectl rook-ceph ceph osd set ${_option}
done
노드 재시작 전에 ceph이 OSD 상태를 체크하거 나 복구하려는 시도를 위의 명령어로 막아야합니다.
Rook 컴포넌트 scale down
- Rook Operator
- CephFS plugin provisioner
- RBD plugin provisioner
- OSD
- MON
- MGR
- Etc.
kubectl -n rook-ceph scale deployment rook-ceph-operator --replicas=0
for _category in rook-ceph-rgw csi-cephfsplugin-provisioner csi-rbdplugin-provisioner rook-ceph-osd rook-ceph-mon rook-ceph-mgr rook-ceph-exporter rook-ceph-crashcollector; do
for _item in $(kubectl get deployment -n rook-ceph | awk '/^'"${_category}"'/{print $1}'); do
kubectl -n rook-ceph scale deployment ${_item} --replicas=0;
while [[ $(kubectl get deployment -n rook-ceph ${_item} -o jsonpath='{.status.readyReplicas}') != "" ]]; do
sleep 5;
done;
done;
done
노드 정비/재시작
Rook 컴포넌트 scale up
- MON
- OSD, MGR
- Etc.
- Rook Operator
for _item in $(kubectl get deployment -n rook-ceph | awk '/^rook-ceph-mon/{print $1}'); do
kubectl -n rook-ceph scale deployment ${_item} --replicas=1;
while [[ $(kubectl get deployment -n rook-ceph ${_item} -o jsonpath='{.status.replicas}') != "1" ]]; do
sleep 5;
done;
done
for _category in rook-ceph-mgr rook-ceph-osd; do
for _item in $(kubectl get deployment -n rook-ceph | awk '/^'"${_category}"'/{print $1}'); do
kubectl -n rook-ceph scale deployment ${_item} --replicas=1;
while [[ $(kubectl get deployment -n rook-ceph ${_item} -o jsonpath='{.status.replicas}') != "1" ]]; do
sleep 5;
done;
done;
done
for _category in rook-ceph-exporter rook-ceph-crashcollector; do
for _item in $(kubectl get deployment -n rook-ceph | awk '/^'"${_category}"'/{print $1}'); do
kubectl -n rook-ceph scale deployment ${_item} --replicas=1;
while [[ $(kubectl get deployment -n rook-ceph ${_item} -o jsonpath='{.status.replicas}') != "1" ]]; do
sleep 5;
done;
done;
done
kubectl -n rook-ceph scale deployment rook-ceph-operator --replicas=1
Operator가 실행되면 자동으로 컴포넌트들을 복구합니다.
Ceph OSD 설정
for _option in noout nodown norebalance nobackfill norecover pause; do
kubectl rook-ceph ceph osd unset ${_option}
done
재시작 후 k8s 상태를 확인합니다. 문제가 없으면 재시작 전에 set
했던 플래그들을 모두 unset
명령어로 해제합니다.