4.6.2. 테인트 및 톨러레이션 추가
Pod에 허용 오차를 추가하고 노드에 테인트를 추가하면 노드에 예약하거나 예약하지 않아야 하는 Pod를 노드에서 제어할 수 있습니다. 기존 Pod 및 노드의 경우 먼저 Pod에 허용 오차를 추가한 다음 노드에 테인트를 추가하여 허용 오차를 추가하기 전에 노드에서 Pod가 제거되지 않도록 합니다.
프로세스
tolerations스탠자를 포함하도록Pod사양을 편집하여 Pod에 허용 오차를 추가합니다.Equal 연산자가 있는 Pod 구성 파일 샘플
apiVersion: v1 kind: Pod metadata: name: my-pod #... spec: tolerations: - key: "key1"1 value: "value1" operator: "Equal" effect: "NoExecute" tolerationSeconds: 36002 #...예를 들면 다음과 같습니다.
Exists 연산자가 있는 Pod 구성 파일 샘플
apiVersion: v1 kind: Pod metadata: name: my-pod #... spec: tolerations: - key: "key1" operator: "Exists"1 effect: "NoExecute" tolerationSeconds: 3600 #...- 1
Exists연산자는value를 사용하지 않습니다.
이 예에서는 key
key1, valuevalue1, 테인트 effectNoExecute를 갖는node1에 테인트를 배치합니다.테인트 및 허용 오차 구성 요소 테이블에 설명된 매개변수로 다음 명령을 사용하여 노드에 테인트를 추가합니다.
$ oc adm taint nodes <node_name> <key>=<value>:<effect>예를 들면 다음과 같습니다.
$ oc adm taint nodes node1 key1=value1:NoExecute이 명령은 키가
key1, 값이value1, 효과가NoExecute인node1에 테인트를 배치합니다.참고컨트롤 플레인 노드에
NoSchedule테인트를 추가하는 경우 노드에 기본적으로 추가되는node-role.kubernetes.io/master=:NoSchedule테인트가 있어야 합니다.예를 들면 다음과 같습니다.
apiVersion: v1 kind: Node metadata: annotations: machine.openshift.io/machine: openshift-machine-api/ci-ln-62s7gtb-f76d1-v8jxv-master-0 machineconfiguration.openshift.io/currentConfig: rendered-master-cdc1ab7da414629332cc4c3926e6e59c name: my-node #... spec: taints: - effect: NoSchedule key: node-role.kubernetes.io/master #...Pod의 허용 오차가 노드의 테인트와 일치합니다. 허용 오차 중 하나가 있는 Pod를
node1에 예약할 수 있습니다.
4.6.2.1. 컴퓨팅 머신 세트를 사용하여 테인트 및 허용 오차 추가 링크 복사링크가 클립보드에 복사되었습니다!
컴퓨팅 머신 세트를 사용하여 노드에 테인트를 추가할 수 있습니다. MachineSet 오브젝트와 연결된 모든 노드는 테인트를 사용하여 업데이트됩니다. 허용 오차는 노드에 직접 추가된 테인트와 동일한 방식으로 컴퓨팅 머신 세트에 의해 추가된 테인트에 응답합니다.
프로세스
tolerations스탠자를 포함하도록Pod사양을 편집하여 Pod에 허용 오차를 추가합니다.Equal연산자가 있는 Pod 구성 파일의 예apiVersion: v1 kind: Pod metadata: name: my-pod #... spec: tolerations: - key: "key1"1 value: "value1" operator: "Equal" effect: "NoExecute" tolerationSeconds: 36002 #...예를 들면 다음과 같습니다.
Exists연산자가 있는 pod 구성 파일의 예apiVersion: v1 kind: Pod metadata: name: my-pod #... spec: tolerations: - key: "key1" operator: "Exists" effect: "NoExecute" tolerationSeconds: 3600 #...MachineSet오브젝트에 테인트를 추가합니다.테인트할 노드의
MachineSetYAML을 편집하거나 새MachineSet오브젝트를 생성할 수 있습니다.$ oc edit machineset <machineset>spec.template.spec섹션에 테인트를 추가합니다.컴퓨팅 머신 세트 사양의 테인트 예
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: name: my-machineset #... spec: #... template: #... spec: taints: - effect: NoExecute key: key1 value: value1 #...이 예제에서는 키가
key1, 값이value1, 테인트 효과가NoExecute인 테인트를 노드에 배치합니다.컴퓨팅 머신 세트를 0으로 축소합니다.
$ oc scale --replicas=0 machineset <machineset> -n openshift-machine-api작은 정보다음 YAML을 적용하여 컴퓨팅 머신 세트를 확장할 수 있습니다.
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: name: <machineset> namespace: openshift-machine-api spec: replicas: 0머신이 제거될 때까지 기다립니다.
필요에 따라 컴퓨팅 머신 세트를 확장합니다.
$ oc scale --replicas=2 machineset <machineset> -n openshift-machine-api또는 다음을 수행합니다.
$ oc edit machineset <machineset> -n openshift-machine-api머신이 시작될 때까지 기다립니다. 테인트는
MachineSet오브젝트와 연결된 노드에 추가됩니다.