본문 바로가기

kubernetes, helm, rancher

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

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으로 바뀌었음을 알 수 있었다.