1. Taint
1.1. 정의
쿠버네티스의 Taint는 노드를 구성하여 특정 pod만 해당 노드에 스케줄링할 수
있도록 제한하는 방법이다. 특정 노드에는 Taint에 의해 영향을 받지 않는 pod만
스케줄링 된다. 쿠버네티스에는 이러한 테인트를 처리하기 위해 Toleration이라는
개념이 있다. Toleration은 pod에 설정되며, 해당 pod가 어떤 Taint에 영향을 받지
않을지 지정한다. Taint는 “key=value:effect” 형식으로 세 가지 구성 요소가 있다.
● key: Taint를 구분하는 항목
● value: key와 연관된 값, 즉 key의 상세한 속성
● effect
1.2. Taint 옵션
● NoSchedule
이 taint를 toleration 하지 않는 pod는 사용할 수 없는 노드이다.
● PreferNoSchedule
이 taint를 toleration 하지 않는 pod는 가능한 한 해당 노드에 스케줄링 되지 않으려고 시도한다.
● NoExecute
이 taint를 toleration 하지 않는 pod는 해당 노드에서 제거된다.
1.3. 예시
[admin@ubu22-01 ~ (kubernetes-admin@cluster.local:kube-system)]$ k describe nodes ubu22-01 ... Taints: node-role.kubernetes.io/control-plan:NoSchedule node-role.kubernetes.io/master:NoSchedule ... [admin1@ubu22-01 ~ (kubernetes-admin@cluster.local:kube-system)]$ k describe nodes ubu22-02 ... Taints: <none> ... |
[admin@ubu22-01 ~ (kubernetes-admin@cluster.local:kube-system)]$ vi taints.yml apiVersion: apps/v1 kind: Deployment metadata: name: test spec: replicas: 5 selector: matchLabels: app: test template: metadata: labels: app: test spec: tolerations: - key: "node-role.kubernetes.io/control-plane" operator: "Equal" effect: "NoSchedule" - key: "node-role.kubernetes.io/master" operator: "Equal" effect: "NoSchedule" containers: - image: nginx name: nginx |
[admin@ubu22-01 ~ (kubernetes-admin@cluster.local:kube-system)]$ k apply -f taints.yml deployment.apps/test created [admin1@ubu22-01 ~ (kubernetes-admin@cluster.local:kube-system)]$ kgp |