16.11.5. 노드 문제 제거
OpenShift Container Platform은 노드에 연결할 수 없으며 노드 가 준비되지 않은 상태를 테인트로 표시하도록 구성할 수 있습니다. 이를 통해 기본값인 5분을 사용하는 대신 연결할 수 없거나 준비되지 않은 노드에 바인딩된 상태로 유지되는 시간을 포드당 사양으로 지정할 수 있습니다.
Taint Based Evictions 기능이 활성화되면 노드 컨트롤러에 의해 테인트가 자동으로 추가되고 Ready
노드에서 Pod를 제거하기 위한 일반 논리가 비활성화됩니다.
-
노드가 준비되지 않은 상태가 되면
node.kubernetes.io/not-ready:NoExecute
테인트가 추가되고 Pod를 노드에서 예약할 수 없습니다. 기존 Pod는 허용 오차 기간 동안 유지됩니다. -
노드가 연결할 수 없는 상태가 되면
node.kubernetes.io/unreachable:NoExecute
테인트가 추가되고 Pod를 노드에 예약할 수 없습니다. 기존 Pod는 허용 오차 기간 동안 유지됩니다.
테인트 기반 제거를 활성화하려면 다음을 수행합니다.
마스터 구성 파일(/etc/origin/master/master-config.yaml)을 수정하여
kubernetesMasterConfig
섹션에 다음을 추가합니다.kubernetesMasterConfig: controllerArguments: feature-gates: - TaintBasedEvictions=true
테인트가 노드에 추가되었는지 확인합니다.
$ oc describe node $node | grep -i taint Taints: node.kubernetes.io/not-ready:NoExecute
변경 사항을 적용하려면 OpenShift를 다시 시작하십시오.
# master-restart api # master-restart controllers
Pod에 허용 오차를 추가합니다.
tolerations: - key: "node.kubernetes.io/unreachable" operator: "Exists" effect: "NoExecute" tolerationSeconds: 6000
또는
tolerations: - key: "node.kubernetes.io/not-ready" operator: "Exists" effect: "NoExecute" tolerationSeconds: 6000
노드 문제로 인해 Pod 제거의 기존 속도 제한 동작을 유지 관리하기 위해 시스템은 속도가 제한된 방식으로 테인트를 추가합니다. 이렇게 하면 마스터가 노드에서 분할되는 등의 시나리오에서 대규모 Pod 제거가 방지됩니다.