Maxima's Lab

[Kubernetes] Node Selector 개념 및 예제 코드 본문

Kubernetes

[Kubernetes] Node Selector 개념 및 예제 코드

Minima 2024. 6. 17. 22:50
728x90
SMALL

안녕하세요, 오늘은 Node Selector 개념에 대해서 알아보고 예제 코드를 적용해보겠습니다.

 

https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector

 

Assigning Pods to Nodes

You can constrain a Pod so that it is restricted to run on particular node(s), or to prefer to run on particular nodes. There are several ways to do this and the recommended approaches all use label selectors to facilitate the selection. Often, you do not

kubernetes.io

 

Node Selector 란?

: 노드에 할당된 라벨을 기반으로 파드를 특정 노드에만 스케줄링하도록 제한합니다

 

Node Selector는 Node에 할당된 Label과 Pod Spec에 정의된 Node Selector를 매칭하여 작동하며, Node가 Pod의 Node Selector 요구사항을 충족하는 라벨을 가지고 있으면 해당 파드를 해당 노드에 스케줄링할 수 있습니다.

 

다음은 Node Selector를 적용하는 YAML 파일 예시입니다.

아래 예시는 특정 Node에 SSD Storage에 대한 Label을 부여하고, Pod Spec을 통해 Node Selector을 정의하여 매칭합니다.

 

kubectl label nodes <노드 이름> disktype=ssd

 

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx
  nodeSelector:
    disktype: ssd

 

위의 YAML 파일을 통해 실행된 결과는 disktype=ssd 라벨을 가진 노드에서만 스케줄링 됩니다.

 

Node Selector 사용의 장점은 다음과 같습니다.

  1.  단순성: Node Selector는 사용법이 간단하고 이해하기 쉬워, 간단한 스케줄링 요구사항에 적합
  2.  제어: 노드 라벨을 기반으로 파드 배치를 제어하는 명확한 방법을 제공
  3.  자원 관리: Node Selector를 사용하여 특정 자원을 가진 노드에 워크로드를 효과적으로 배치 가능

 

Node Selector의 한계는 다음과 같습니다.

 

  1.  제한된 유연성: Node Selector는 라벨의 정확한 매칭만 지원하며, 더 복잡한 매칭 규칙이나 표현을 지원X
  2. 소프트 제약 없음: Node Selector는 선호도나 소프트 제약 조건을 지원하지 않습니다. 모든 지정된 제약 조건이 충족되어야만 파드를 스케줄링 가능

 

더 복잡한 Scheduling을 위해서는 Node Affinity 를 사용하면 됩니다.

 


지금까지, Node Selector의 개념과 예제 코드에 대해서 알아보았습니다.

감사드립니다.

728x90
LIST
Comments