졍
지영이 블로그
졍
전체 방문자
오늘
어제
  • 분류 전체보기 (95)
    • 네트워크 (12)
    • 시스템설계 (6)
    • AWS (7)
    • Elasticsearch (3)
    • Python (5)
    • 자료구조, 알고리즘 (9)
    • 코딩테스트 (29)
    • NCP (8)
    • 운영체제 (7)
    • 개인 프로젝트 (8)
    • Github (1)
    • 여행 (0)
      • 2024동유럽 (0)
    • 대학원 (0)
      • 논문정리 (0)

최근 글

최근 댓글

hELLO · Designed By 정상우.
졍

지영이 블로그

[K8S] 'node had volume node affinity conflict' 문제 해결
개인 프로젝트

[K8S] 'node had volume node affinity conflict' 문제 해결

2023. 8. 18. 16:19

쿠버네티스 실습 중 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 에 대한 내용이 있다.

persistentvolume template

템플릿에서는 "name" key를 가지는 node를 지정해 할당하고있다.

 

워커노드의 Labels를 살펴보자.

"name" key를 가지는 label이 없어서 노드를 찾지 못하고있는 상태였다.

 

따라서 워커노드에 label을 추가해주면 파드가 제대로 스케줄링되어 문제를 해결할 수 있다.

노드에 label 추가
pod 할당 성공
pod describe 정보

 

'개인 프로젝트' 카테고리의 다른 글

[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
    졍
    졍

    티스토리툴바