NodeSelector

nodeSelector는 노드 선택 제약의 가장 간단한 권장 형식입니다. nodeSelector는 PodSpec의 필드값으로 키-값 쌍의 맵을 지정합니다. Pod가 노드에서 실행될 수 있으려면 노드에 표시된 각 키-값 쌍이 레이블로 있어야합니다 (추가 레이블도 가질 수 있음).

1. 노드에 레이블 부착

kubectl get nodes를 실행하여 클러스터 노드의 이름을 가져옵니다.

kubectl get nodes

이 목록의 첫 번째 노드에 새 레이블 disktype = ssd를 추가합니다.

하지만 먼저 selector 옵션으로 이전 항목을 필터링하여 레이블이 어떤 노드에도 할당되지 않았는지 확인하겠습니다.

kubectl get nodes --selector disktype=ssd

결과는 다음과 같습니다.

첫 번째 노드에 레이블을 추가하기 위해 다음 명령을 실행 합니다.

# export the first node name as a variable
export FIRST_NODE_NAME=$(kubectl get nodes -o json | jq -r '.items[0].metadata.name')

# add the label to the node
kubectl label nodes ${FIRST_NODE_NAME} disktype=ssd

결과는 다음과 유사합니다.

2. 레이블이 있는 노드에 nginx Pod 배포

이제 파드 사양에서nodeSelector를 사용하여 간단한 파드 생성 파일을 생성하고 실행 합니다.

cat <<EoF > ~/environment/pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd
EoF

kubectl apply -f ~/environment/pod-nginx.yaml

그리고 파드는 레이블을 연결한 노드에 예약 됩니다. 다음을 실행하여 작동하는지 확인 할 수 있습니다.

kubectl get pods -o wide

결과로 위에서 레이블을 지정한 노드에 파드가 위치하는 것을 확인 할 수 있습니다.

Last updated