베하~! BTC_녹차공원 팀의 민물공원 입니다.
이번주는 NodeSelector에 대해 알아보겠습니다!
NodeSelector
쿠버네티스에서는 특정한 노드(들) 집합에서만 동작하거나 특정한 노드 집합에서 동작하도록 파드를 제한할 수 있어요. 이를 수행하는 방법에는 여러 가지가 있는데 권장되는 방식은 모두 레이블 셀렉터를 사용해서 선택을 편리하게 해요. 보통은 스케줄러가 자동으로 배치를 효율적으로 하기때문에 이런 제약 조건을 설정할 필요가 없어요. 하지만, 예를 들어 SSD가 장착된 머신에 파드가 배포되도록 하거나 많은 통신을 하는 두 개의 서로 다른 서비스의 파드를 동일한 가용석 영역에 배치하는 경우와 같이, 다양한 상황에서 파드가 어느 노드에 배포될지를 제어해야 하는 경우가 있어요.
nodeSelector는 노드 선택 제약사항 중 가장 간단하면서도 추천하는 방식이예요. 파드 스펙에 nodeSelector 필드를 추가하고, 타겟으로 삼고 싶은 노드가 갖고 있는 노드 레이블을 작성해요. 이렇게 되면 쿠버네티스는 사용자가 명시한 레이블을 갖고 있는 노드에만 파드를 스케줄링한답니다.
NodeSelector 실습
이번 실습도 Killercoda 에서 따라해보아요.
nginx 파드를 disk=ssd 의 레이블을 가진 노드에 배치해볼거예요.
kubectl get nodes
kubectl get nodes -l disk=ssd
node01에 disk=ssd 레이블을 추가한 후 확인합니다.
kubectl label nodes node01 disk=ssd
kubectl get nodes -l disk=ssd
nginx 파드의 yaml을 작성 후 nodeSelector를 이용해 disk=ssd 의 제약사항을 추가합니다.
kubectl run nginx --image=nginx --dry-run=client -o yaml > nginx.yaml
vi nginx.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
containers:
- image: nginx
name: nginx
resources: {}
nodeSelector:
disk: ssd
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
nginx 파드를 생성한 후 disk=ssd 의 레이블을 가진 node01에 생성이 되었는지 확인합니다.
kubectl create -f nginx.yaml
kubectl get pods -o wide
disk=ssd 의 레이블을 가진 노드에 파드가 제대로 배치 되었음을 확인했어요!
이렇게 오늘은 nodeSelector 에 대해 알아보았는데요.
다음번에는 더 흥미로운 주제로 찾아뵙겠습니다.
이상 BTC_녹차공원 팀이였습니다!
베빠~!
'INFRA > DevOps' 카테고리의 다른 글
Git Branch의 개념과 활용 (0) | 2023.09.01 |
---|---|
[DevOps]EC2 Ubuntu에 Jenkins 설치 (0) | 2023.08.30 |
[K8S] Ingress (0) | 2023.08.19 |
[DevOps] CI/CD 개념 및 도구 설명 (0) | 2023.08.18 |
[K8S] Service (0) | 2023.08.01 |
댓글