kubernetes, helm, rancher

master node untaint is not working. (taint를 지우려고 해도 계속 생겨나는 현상)

콴트 2022. 3. 29. 01:12

VM으로 ubuntu를 사용하고 있는 나로써는, kubernetes를 cluster로 이용하기 위해서 매일 3개의 노드를 켰다, 껏다 하는

 

것이 귀찮아서 그냥 사소한 이슈는 master node에서만 실행하고 있었다.

 

그래서 항상 kube-system namespace에서 pod를 보면 항상 proxy와 coredns 2개는 항상 꺼져있었다. 그런데 cni인

 

weave-net은 왜 3개가 다 켜져있는거지? master node만 ready상태인데? 이건 또 따로 알아봐야할 것 같다.

 

일단, 오늘도 master node를 켜고 swapoff를 한 뒤, 아래와 같이 master node의 taint를 확인하고 삭제한다.

 

 

어라? 그런데 좀 이상한게 있다. 맨 마지막에 원래는 <none>이라고 나와야하는데 taint가 안사라지고 그대로 있는 것이

 

다. 이럴땐 구글링. 그런데 어딜 찾아봐도 나타나질 않는다.

 

여기서도 같은 걸 다루고 있었지만, 내가 원하는 해답은 나오질 않았다.

 

한번 생각해보자. 분명 untainted가 떴었고.... 아! kubectl edit node을 이용해 taints를 지워서 저장해보자.

 

하~참. 하지만 이걸로 확실해 진 것이 있다. 분명히 taint는 지워졌다. 하지만 다시 생겨난 것이다. 그렇다면 왜 다시 생겨

 

난 것일까? taint value 값을 자세히 보면, disk-pressure라고 되어있다. disk-pressure는 디스크 용량을 너무 많이 사용하

 

고 있다는 신호라고 한다. 그리고 찾아보니, kubelet이 여러 값들을 비교해서 디스크 용량이 많다고 느껴지면 알아서

 

taint를 해준다고 한다.

 

그래서 df -h 명령어를 통해 현재 용량을 보았고 보시다시피 거의 90%가까이 쓰고있었다.

 

 

vm에 정말 100G 정도면 넉넉하게 줬다고 생각했고, 별 다른거 설치하지도 않았는데, 왜 저렇게 많이 사용됬는지 모르겠다.

 

일단 아래 명령어로 가장 많이 쓰고있는 범인이 누구인지 알아봐야겠다.

du -sh * | sort -hr

흠.... root 폴더에 가서 찾고 찾고 찾아보니, 바로 docker의 저장소인 overlay2 폴더가 범인이였다.

 

62G면 그렇게 말이 안되는건 아닌데, VM이고, 또 하루에 몇시간 사용하지도 않으면서, docker로 띄우는 건 고작

 

kubernetes static pod 정도일 뿐인데, 왜 이렇게 많이 쌓여있는지 모르겠다. 우리 회사 하루 종일 docker로 학습돌리고,

 

취소하고, kubernetes로 inference 돌리고, 취소하고를 몇백번 반복해도 확인해보니 158G였다. 일단 내 생각에는 자꾸

 

VM를 껐다 키는 작업으로 kubernetes관련 docker들도 재시작을 계속하니, 여러 garbage들이 쌓여있었던 것 같다.

 

이제 overlay2안에서 쓸모없는 쓰레기는 치우고 다시 용량을 회복해 untaint를 해보자.

 

 

일단 master node를 깨끗하게 비워주고,

kubectl drain this_node --ignore-daemonsets --delete-local-data

 

kubelet도 잠시 멈추고, (멈추지 않고 그냥 지우면 taint가 안 없어지는 현상이 발생한다. 이건 왜 그런지 모르겠다.)

service kubelet stop

 

docker도 재시작해준다음, 쓰레기를 전부 비워보자. 

service docker restart
docker system prune --all --volumes --force

없어진 쓰레기의 용량이다. 하 개운해.

 

그리고 다시 kubelet을 실행해주고, node도 uncordon시켜준다.

service kubelet start
kubectl uncordon this_node

 

다음과 같이 용량이 많이 비워졌으며, taint도 none으로 바뀌었음을 알 수 있었다.