Kubernetes
nodeName과 nodeSelector 차이
leaf1991
2024. 12. 19. 16:59
두 명령어 전부 특정 노드에 pod를 스케줄링하기 위한 방법임.
하지만 작동 방식과 사용 목적이 다름
1. nodeName
- 설명:
- Pod가 특정 노드에서만 실행되도록 강제합니다.
- 스케줄러가 아니라, 사용자가 직접 노드를 명시합니다.
- Pod가 지정된 노드에서 실행될 수 없으면 다른 노드로 스케줄되지 않고 실패합니다.
- 사용 예시:
- cks7262-node2 노드에서만 Pod가 실행됩니다.
spec:
nodeName: cks7262-node2
- cks7262-node2 노드에서만 Pod가 실행됩니다.
- 특징:
- 스케줄링을 완전히 우회하여 특정 노드를 직접 지정합니다.
- 단순한 테스트나 강제 배포용으로 적합합니다.
- Pod가 실패하면 다른 노드로 재스케줄링되지 않습니다.
2. nodeSelector
- 설명:
- 특정 노드에서만 실행되도록 제한하기 위해 노드의 레이블을 기준으로 필터링합니다.
- 스케줄러가 Pod를 적합한 노드로 스케줄링합니다.
- 레이블 기반 필터링을 통해 더 유연한 스케줄링이 가능합니다.
- 사용 예시:
- cks7262-node2 노드의 kubernetes.io/hostname 레이블을 기준으로 스케줄링합니다.
spec:
nodeSelector:
kubernetes.io/hostname: cks7262-node2
- cks7262-node2 노드의 kubernetes.io/hostname 레이블을 기준으로 스케줄링합니다.
- 특징:
- 레이블이 있는 노드에만 Pod를 실행할 수 있습니다.
- 레이블이 여러 노드에 있을 경우, 스케줄러가 자동으로 적합한 노드를 선택합니다.
- 노드 간 유연한 스케줄링이 가능하며, 설정이 더 동적입니다.
차이점 요약
nodeName nodeSelector
목적 | 특정 노드 강제 지정 | 레이블 기반 유연한 스케줄링 |
스케줄링 방식 | 스케줄러를 우회 | 스케줄러에 의해 관리 |
유연성 | 유연하지 않음 (노드 1개만 가능) | 유연함 (레이블로 여러 노드 선택 가능) |
실패 시 동작 | 다른 노드로 재스케줄링 불가 | 적합한 노드가 있으면 스케줄링 가능 |
사용 사례 | 테스트, 강제 노드 지정 | 프로덕션 환경에서 레이블을 활용한 배포 |