파드를 노드에 할당하기
파드를 노드에 할당하기 (Assign Pods to Nodes)
이 페이지에서는 쿠버네티스 클러스터의 특정 노드에 쿠버네티스 Pod를 할당하는 방법을 보여드려요.
출처: 문서
본문
시작하기 전에 (Before you begin)
쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 구성돼 있어야 해요. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 두 개 이상 있는 클러스터에서 실행하는 것을 권장해요. 아직 클러스터가 없다면 minikube로 만들거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있어요.
- iximiuz Labs
- Killercoda
- KodeKloud
버전을 확인하려면 kubectl version을 입력하세요.
노드에 라벨 추가하기 (Add a label to a node)
클러스터의 노드와 그 라벨을 나열해요.
kubectl get nodes --show-labels
출력은 다음과 비슷해요.
NAME STATUS ROLES AGE VERSION LABELS
worker0 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker0
worker1 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker1
worker2 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker2
노드 중 하나를 선택하고 그 노드에 라벨을 추가해요.
kubectl label nodes <your-node-name> disktype=ssd
여기서 <your-node-name>은 선택한 노드의 이름이에요.
선택한 노드에 disktype=ssd 라벨이 있는지 확인해요.
kubectl get nodes --show-labels
출력은 다음과 비슷해요.
NAME STATUS ROLES AGE VERSION LABELS
worker0 Ready <none> 1d v1.13.0 ...,disktype=ssd,kubernetes.io/hostname=worker0
worker1 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker1
worker2 Ready <none> 1d v1.13.0 ...,kubernetes.io/hostname=worker2
앞선 출력에서 worker0 노드에 disktype=ssd 라벨이 있는 것을 볼 수 있어요.
선택한 노드에 스케줄링될 파드 만들기 (Create a pod that gets scheduled to your chosen node)
이 파드 구성 파일은 disktype: ssd 노드 셀렉터를 가진 파드를 설명해요. 즉 이 파드는 disktype=ssd 라벨이 있는 노드에 스케줄링돼요.
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
disktype: ssd
pods/pod-nginx.yaml — 구성 파일을 사용해 선택한 노드에 스케줄링될 파드를 생성해요.
kubectl apply -f https://k8s.io/examples/pods/pod-nginx.yaml
파드가 선택한 노드에서 실행 중인지 확인해요.
kubectl get pods --output=wide
출력은 다음과 비슷해요.
NAME READY STATUS RESTARTS AGE IP NODE
nginx 1/1 Running 0 13s 10.200.0.4 worker0
특정 노드에 스케줄링될 파드 만들기 (Create a pod that gets scheduled to specific node)
nodeName을 설정해 파드를 특정 노드 하나에 스케줄링할 수도 있어요.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
nodeName: foo-node # 파드를 특정 노드에 스케줄링
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
pods/pod-nginx-specific-node.yaml — 구성 파일을 사용해 foo-node에만 스케줄링될 파드를 생성해요.
다음 단계 (What's next)
- 라벨과 셀렉터에 대해 더 배우기
- 노드에 대해 더 배우기