쿠버네티스 실습 중 mysql pod가 계속 pending 상태에 빠져있어 pod describe를 봤더니 다음과 같은 에러메세지가 뜬다.
1 node had taint {}, that the pod didn-t tolerate
- 한 노드는 테인트 설정 때문에 할당이 되지 않는 상태이다.
1 node had volume node affinity confilct
- 한 노드는 affinity conflict 때문에 할당이 막혀있는 상태이다.
현재 환경 구성은 마스터노드 1대와 워커노드 1대로 총 2대의 노드를 사용중이다.
마스터 노드
마스터 노드의 정보를 확인해보면, NoSchedule이라는 Taint가 적용되어있다.
즉, 마스터 노드는 스케줄링을 허용하지 않고있다는 의미다.
따라서 1 node had taint {}, that the pod didn’t tolerate가 마스터 노드에 대해 뜨는 것은 정상이다.
워커 노드
그렇다면 1 node had volume node affinity conflict 오류는 워커노드에 대해서 뜨고 있음을 알 수 있다.
이때 node affinity는 노드의 레이블을 기반으로 파드에 스케줄링을 하는 기능이다.
따라서 node affinity conflict는 템플릿에서 정의된 노드와 노드 레이블이 뭔가 맞지 않다는 유추를 할 수 있다.
해결
먼저 워커노드에 저장공간을 생성하는 pv 템플릿을 살펴보면 nodeAffinity 에 대한 내용이 있다.
템플릿에서는 "name" key를 가지는 node를 지정해 할당하고있다.
워커노드의 Labels를 살펴보자.
"name" key를 가지는 label이 없어서 노드를 찾지 못하고있는 상태였다.
따라서 워커노드에 label을 추가해주면 파드가 제대로 스케줄링되어 문제를 해결할 수 있다.
'개인 프로젝트' 카테고리의 다른 글
[Ubuntu] mysqlclient 설치 시 'get_requires_for_build_wheel' 오류 해결 (0) | 2023.09.02 |
---|---|
[K8S] emptyDir 공유 볼륨 사용하기 (0) | 2023.08.17 |
[IaC] VirtualBox + Vagrant로 CentOS 환경 구축하기 (0) | 2023.08.09 |
[Django] 상용 환경에서 staticfiles를 찾지 못하는 에러 해결 (0) | 2023.08.07 |
[Django] WEB 서버 '400 Bad Request Error' 해결 (0) | 2023.08.07 |