본문 바로가기

devops/Kubernetes

Kubernetes에서 특정 노드에 파드 하나만 띄우는 방법

개요

Kubernetes에서 특정 노드에 파드 하나만 띄우는 방법에 대해 알아보겠습니다. 

설정 방법

1. NodeAffinity를 이용하는 방법

NodeAffinity는 파드가 특정 노드에만 배치되도록 하는 기능입니다.

<예제>

nodeAffinity: 
  requiredDuringSchedulingIgnoredDuringExecution: 
    nodeSelectorTerms: 
      - matchExpressions: 
        - key: kubernetes.io/hostname 
          operator: In 
          values: 
          - node1

2. Taints and Tolerations를 이용하는 방법

Taints는 특정 노드에만 어떤 파드가 배치되지 않도록 하는 기능입니다. Tolerations는 특정 파드가 특정 Taints가 설정된 노드에도 배치될 수 있도록 하는 기능입니다.

<예제>

taints: 
- key: "dedicated" 
  value: "special-user" 
  effect: "NoSchedule"
tolerations: 
- key: "dedicated" 
  operator: "Equal" 
  value: "special-user" 
  effect: "NoSchedule"

3. PodAntiAffinity를 이용하는 방법

PodAntiAffinity는 파드가 특정 노드에만 배치되지 않도록 하는 기능입니다.

podAntiAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
  - labelSelector:
      matchExpressions:
      - key: app
        operator: In
        values:
        - myapp
    topologyKey: kubernetes.io/hostname

4. DaemonSet으로 배포

DaemonSet은 클러스터 전체 또는 특정 노드에 파드를 배포하는 기능입니다. 이를 이용하여 특정 노드에만 파드를 배포할 수 있습니다.

 

마치며

제약을 걸지 않고, Kubernetes를 이용하여 자동으로 파드를 재배치, 재시작, 확장 등을 하는 것이 일반적입니다. 이를 위해서는 Replication Controller, Replica Set, Deployment 등을 사용하면 됩니다. 이들을 이용하면 자동적으로 파드를 유지, 관리, 재배치 할 수 있습니다.