Kubernetes/crio

crio container root 경로 수정 방법

babbeolicoding 2025. 3. 28. 15:31

 

container root 저장 경로를 변경하는 방법은 간단하다.

최초 kubernetes를 설치할 때 /etc/containers/storage.conf 파일

graphroot = "/var/lib/containers/storage" -> 해당 경로를 바꾸면 된다.

 

하지만 이미 kubernetes가 구축된 상태에서 경로를 변경하기 위해선 사전 작업이 필요하다.

 

1. 노드에 있는 모든 pod들 제거

##master node

#node drain
kubectl drain node1 --force --ignore-daemonsets --delete-local-data

#daemonset 0개로 수정
kubectl patch daemonset kube-flannel-ds -p '{"spec": {"template": {"spec": {"nodeSelector": {"non-existing": "true"}}}}}' -n kube-flannel
kubectl patch daemonset kube-proxy -p '{"spec": {"template": {"spec": {"nodeSelector": {"non-existing": "true"}}}}}' -n kube-system

나머지 pod들이 있다면 모두 제거해야 한다.

 

2. kubelet pod 캐시 삭제

#worker node
systemctl stop crio
systemctl stop kubelet

mkdir -p {바꿀 경로}

vi /etc/containers/storage.conf
graphroot = "/var/lib/containers/storage" -> graphroot = {바꿀 경로}

#kubelet pod 캐시 삭제
rm -rf /var/lib/kubelet/pods/*

semanage fcontext -a -e /var/lib/containers/storage {바꿀 경로}
restorecon -R -v {바꿀 경로}

reboot -n

 

3. node uncordon, daemonset 재기동

#master node
uncordon node

daemonset 살리기
kubectl patch daemonset kube-flannel-ds --type json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector/non-existing"}]' -n kube-flannel
kubectl patch daemonset kube-proxy --type json -p='[{"op": "remove", "path": "/spec/template/spec/nodeSelector/non-existing"}]' -n kube-system