파드를 노드에 할당하기

파드를 노드에 할당하기 (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)

  • 라벨과 셀렉터에 대해 더 배우기
  • 노드에 대해 더 배우기

더 알아보기 (Learn more)