분석엔진의 좀비 프로세스로 인해 df 명령어 사용 불가시

작성자 김민태 수정일 2022-10-24 09:45

#스파클링소다, #glusterfs, #SparklingSoDA3.0, #스파클링소다3.0, #SparklingSoDA3

아티클 관련 제품: SparklingSoDA3.0

들어가며


GlusterFS를 사용하는 스파클링소다 환경에서 분석엔진이 비정상 종료 되었을 경우 mount 볼륨들이 정상적으로 해제 되지 않고 계속해서 디스크 볼륨을 물고 접근이 불가능한 비정상 상태가 되어 무한히 Hang이 걸리는 경우가 있습니다.  


이 경우 해당 디스크의 접근이 불가능해지며, df 명령어가 또한 실행되지 않고 경로 하위의 탐색들이 불가 해집니다.


위와 같은 장애 발생시 아래의 가이드를 참고하여 특정 좀비 프로세스의 비정상 마운트를 해결하여 정상화가 가능합니다. 





내용


    목록



1. POD 목록에 없는 좀비 프로세스 분석 엔진 종료


 df 명령이 불가한 노드에 접속하여 아래의 명령어를 실행합니다.  


ps -ef |grep jupyter-vol-home |grep -v grep 



위 명령어 실행시 프로세스 목록들이 보여지게 되는데, 각 jupyter 파드의 이름과 프로젝트 번호 그리고 뒤의 무작위 난수이름이 붙은 프로세스가 각각 쌍으로 (2개씩) 존재하는 것을 확인할 수 있습니다. 


✓ 위 예시에서 조회 된 파드 이름 

jupyterhub-v1-2-4-7-41-8579758c8c-tn5sg 
jupyterhub-2-0-7-1-8544fc5969-k599f 


명령어 조회 결과 아래의 파드들이 검색되었습니다.

jupyterhub-v1-2-4-7-41
jupyterhub-2-0-7-1

위의 파드 이름들을 직접 마스터 노드에서 조회하여 존재하지 않는 파드를 찾아낼 수 있습니다. 


kubectl get pod | grep <파드이름>

검색 되지 않는 파드를 찾아내면 다시 df 명령어가 실행되지 않는 노드에서 PID를 kill 시킵니다.


kill –9 <마스터 노드에서 검색되지 않은 파드 프로세스의 PID> 




2. 검색 한 모든 분석 엔진이 POD 목록에 존재할 경우


위의 방법으로 k8s 클러스터에 현재 모든 분석 엔진이 기동 중일 경우에는, 중복 된 파드가 동시에 떠있을 수 있습니다.

이러한 경우 검색 된 Process에서 파드 이름 뒷 부분에 무작위로 채번 된 난수 값들까지 정확히 비교하여 종료하여야 합니다.


마찬 가지로 분석엔진 프로세스 목록을 출력합니다.


ps -ef |grep jupyter-vol-home |grep -v grep 



위 명령어로 검색 된 분석 엔진은 다음과 같습니다.


jupyterhub-2-0-7-1-8544fc5969-k599f 
j
upyterhub-2-0-7-1-8544fc5969-tn5sg 



앞 부분만 비교해본다면 jupyterhub-2-0-7-1 동일한 파드가 검색되었습니다.

하지만 뒷 부분의 무작위 난수 값들을 상세히 비교하면 조금 다른 프로세스인 것을 확인할 수 있습니다.


해당 파드 풀네임을 k8s POD 목록에서 탐색합니다.


kubectl get pod | grep <Process Full Name>


두 개의 파드 중 실제 클러스터에 존재하지 않는 파드를 찾아내 프로세스를 Kill 합니다.


kill –9 <마스터 노드에서 검색되지 않은 파드 프로세스의 PID> 




마무리


 비정상 종료되어 unmount 되지 않은 분석 엔진을 종료 하였으므로 이제 정상적인 사용 가능할 것 입니다.



아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300