
도커(Docker)는 컨테이너 기반의 가상화 플랫폼으로, 애플리케이션을 환경에 독립적으로 실행할 수 있도록 해줍니다. 도커를 사용하면 애플리케이션과 그에 필요한 모든 의존성을 하나의 패키지(컨테이너)로 묶어 어디서든 동일한 환경에서 실행할 수 있습니다.
쿠버네티스(Kubernets, k8s)는 컨테이너 오케스트레이션 플랫폼으로, 여러 개의 컨테이너를 효율적으로 배포하고, 관리하여, 확장할 수 있도록 도와줍니다.

Master Node 안으 Scheduler 는 파드들을 관리하고 노드에 파드들을 배치하는 일을 합니다. 여기서 파드란, 쿠버네티스에서 자원을 관리하는 가장 최소의 단위입니다.
쿠버네티스에서는 일정한 룰을 통해서 파드들을 노드에 배치합니다.
Taint 는 노드를 오염시키고 내성(Tolerant)이 없는 파드는 배치할 수 없게 합니다.
Taint 설정을 통하여 스케쥴링 대상에서 특정 파드가 제외될 수 있다.
Taint 는 3가지의 effect 를 가진다.
아래와 같은 명령어를 통해서 노드에 Taint 를 설정할 수 있다.
kubernetes taint nodes <node> key=value:NoSchedule
Taint 는 노드의 "오염 표시"를 적용해 기본적으로 파드를 제한하는 반면, Toleration 은 오염된 노드에도 배치가 될 수 있도록 내성을 부여하는 것이다.
apiVersion: v1
kind: Pod
metadata:
name: toleration-example-pod
spec:
containers:
- name: nginx
image: nginx:latest
tolerations:
- key: "example-key"
operator: "Equal"
value: "example-value"
effect: "NoSchedule"
파드가 특정 노드에 포함될 수 있도록 설정
apiVersion: v1
kind: Pod
metadata:
name: node-affinity-example
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: disktype
operator: In
values:
- ssd
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: region
operator: In
values:
- us-west
containers:
- name: nginx
image: nginx
출처