E-nodeName으로 스케줄링 실습
개요
간단하게 노드 이름으로 스케줄링을 할 때 발생하는 일을 알아보고자 한다.
Vagrant로 Kubernetes v1.32 - Penelope 버전을 구축했다.
기본 세팅
apiVersion: v1
kind: Pod
metadata:
name: nodename
spec:
containers:
- name: nodename
image: nginx
기본으로는 정말 별 볼 일 없는 파드를 만들 것이다.
현재 노드는 이렇게 3개만 있다.
없는 노드 이름 지정하기
nodeName: worker3
없는 노드를 지정하면, 처음에는 pending 상태가 된다.
그러나 얼마 안 가 아예 failed가 떠버리는 것을 볼 수 있다.
이 순간을 노려서 describe를 찍을 수 있나 했는데, 이 즉시 파드가 삭제돼버려서 추가적으로 무언갈 볼 여지도 없다.
노드에 배치될 수 없게 자원 설정
apiVersion: v1
kind: Pod
metadata:
name: nodename
spec:
containers:
- name: nodename
image: nginx
resources:
requests:
cpu: 3
nodeName: worker1
이번에는 배치될 수 없도록 자원의 크기를 높게 잡았다.
참고로 해당 노드는 cpu를 최대 2까지 쓸 수 있다.
바로 배치될 수 없는 이유가 상태에 표시된다.
message: 'Pod was rejected: Node didn''t have enough resource: cpu, requested: 3000,
used: 650, capacity: 2000'
phase 자체가 Failed로 표시되며, 위와 같은 메시지가 출력된다.
결론
웬만해선 안 쓰는 게 역시 낫겠지?
아주 간단하지만, 그만큼 핸디캡도 있는 법이다.
특히 노드가 배정된 이후, 실제로 상태 업데이트를 받지 못하면 api서버가 그냥 실패라고 처리하고 파드를 아예 삭제시켜버리는데, 이 경우 정말 쥐도새도 모르게 사라지니까 조심해야 한다.
관련 문서
이름 | noteType | created |
---|---|---|
PDB | knowledge | 2024-08-31 |
Quality of Service | knowledge | 2025-03-09 |
어피니티 | knowledge | 2025-04-18 |
Affinity | knowledge | 2025-03-19 |
Topology Spread Constraints | knowledge | 2025-03-19 |
Scheduling Gates | knowledge | 2025-03-19 |
kube-scheduler | knowledge | 2025-03-19 |
테인트, 톨러레이션 | knowledge | 2025-03-19 |
스케줄링 제어 | knowledge | 2025-03-20 |
파드 중단 | knowledge | 2025-03-20 |
쿠버 스케줄러 시뮬레이터 소개 | knowledge | 2025-04-08 |
7W - 쿠버네티스의 스케줄링, 커스텀 스케줄러 설정 | published | 2025-03-22 |
E-nodeName으로 스케줄링 실습 | topic/explain | 2025-03-19 |