13.2. 테인트 및 허용 오차를 사용하여 로깅 Pod 배치 제어
테인트 및 허용 오차를 사용하면 노드에서 예약해야 하는 (또는 예약해서는 안 되는) Pod를 제어할 수 있습니다.
13.2.1. 테인트(Taints) 및 톨러레이션(Tolerations)의 이해 링크 복사링크가 클립보드에 복사되었습니다!
테인트를 사용하면 Pod에 일치하는 허용 오차가 없는 경우 노드에서 Pod 예약을 거부할 수 있습니다.
Node
사양(NodeSpec
)을 통해 노드에 테인트를 적용하고 Pod
사양(PodSpec
)을 통해 Pod에 허용 오차를 적용합니다. 노드에 테인트를 적용할 때 Pod에서 테인트를 허용할 수 없는 경우 스케줄러에서 해당 노드에 Pod를 배치할 수 없습니다.
노드 사양의 테인트 예
Pod
사양의 허용 오차 예
테인트 및 톨러레이션은 key, value 및 effect로 구성되어 있습니다.
매개변수 | 설명 | ||||||
---|---|---|---|---|---|---|---|
|
| ||||||
|
| ||||||
| 다음 명령 중 하나를 실행합니다.
| ||||||
|
|
컨트롤 플레인 노드에
NoSchedule
테인트를 추가하는 경우 노드에 기본적으로 추가되는node-role.kubernetes.io/master=:NoSchedule
테인트가 있어야 합니다.예를 들면 다음과 같습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
톨러레이션은 테인트와 일치합니다.
operator
매개변수가Equal
로 설정된 경우:-
key
매개변수는 동일합니다. -
value
매개변수는 동일합니다. -
effect
매개변수는 동일합니다.
-
operator
매개변수가Exists
로 설정된 경우:-
key
매개변수는 동일합니다. -
effect
매개변수는 동일합니다.
-
다음 테인트는 OpenShift Container Platform에 빌드됩니다.
-
node.kubernetes.io/not-ready
: 노드가 준비 상태에 있지 않습니다. 이는 노드 조건Ready=False
에 해당합니다. -
node.kubernetes.io/unreachable
: 노드가 노드 컨트롤러에서 연결할 수 없습니다. 이는 노드 조건Ready=Unknown
에 해당합니다. -
node.kubernetes.io/memory-pressure
: 노드에 메모리 부족 문제가 있습니다. 이는 노드 조건MemoryPressure=True
에 해당합니다. -
node.kubernetes.io/disk-pressure
: 노드에 디스크 부족 문제가 있습니다. 이는 노드 조건DiskPressure=True
에 해당합니다. -
node.kubernetes.io/network-unavailable
: 노드 네트워크를 사용할 수 없습니다. -
node.kubernetes.io/unschedulable
: 노드를 예약할 수 없습니다. -
node.cloudprovider.kubernetes.io/uninitialized
: 노드 컨트롤러가 외부 클라우드 공급자로 시작되면 이 테인트 노드에 사용 불가능으로 표시됩니다. cloud-controller-manager의 컨트롤러가 이 노드를 초기화하면 kubelet이 이 테인트를 제거합니다. node.kubernetes.io/pid-pressure
: 노드에 pid pressure가 있습니다. 이는 노드 조건PIDPressure=True
에 해당합니다.중요OpenShift Container Platform은 기본 pid.available
evictionHard
를 설정하지 않습니다.
13.2.2. Loki Pod 배치 링크 복사링크가 클립보드에 복사되었습니다!
Pod의 허용 오차 또는 노드 선택기를 사용하여 Loki Pod가 실행되는 노드를 제어하고 다른 워크로드가 해당 노드를 사용하지 못하도록 할 수 있습니다.
LokiStack CR(사용자 정의 리소스)을 사용하여 로그 저장소 Pod에 허용 오차를 적용하고 노드 사양이 있는 노드에 taint를 적용할 수 있습니다. 노드의 테인트는 테인트를 허용하지 않는 모든 Pod를 거절하도록 노드에 지시하는 키:값
쌍입니다. 다른 Pod에 없는 특정 키:값
쌍을 사용하면 해당 노드에서 로그 저장소 Pod만 실행할 수 있습니다.
노드 선택기가 있는 LokiStack의 예
이전 예제 구성에서 모든 Loki Pod는 node-role.kubernetes.io/infra: ""
라벨이 포함된 노드로 이동합니다.
노드 선택기 및 허용 오차가 있는 LokiStack CR의 예
LokiStack(CR)의 nodeSelector
및 허용 오차
필드를 구성하려면 oc explain
명령을 사용하여 특정 리소스에 대한 설명 및 필드를 볼 수 있습니다.
oc explain lokistack.spec.template
$ oc explain lokistack.spec.template
출력 예
자세한 내용은 특정 필드를 추가할 수 있습니다.
oc explain lokistack.spec.template.compactor
$ oc explain lokistack.spec.template.compactor
출력 예
13.2.3. 허용 오차를 사용하여 로그 수집기 Pod 배치 제어 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 로그 수집기 Pod에는 다음과 같은 허용 오차 구성이
있습니다.
사전 요구 사항
-
Red Hat OpenShift Logging Operator 및 OpenShift CLI(
oc
)를 설치했습니다.
절차
다음 명령을 실행하여 로깅 수집기 Pod에서 로깅 수집기 Pod를 예약할 노드에 테인트를 추가합니다.
oc adm taint nodes <node_name> <key>=<value>:<effect>
$ oc adm taint nodes <node_name> <key>=<value>:<effect>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령 예
oc adm taint nodes node1 collector=node:NoExecute
$ oc adm taint nodes node1 collector=node:NoExecute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서는 키
collector
, 값node
및 taint 효과NoExecute
로node1
에 taint를 배치합니다.NoExecute
taint 효과를 사용해야 합니다.NoExecute
는 taint와 일치하는 Pod만 스케줄링하고 일치하지 않는 기존 Pod는 제거합니다.ClusterLogging
사용자 정의 리소스(CR)의collection
스탠자를 편집하여 로깅 수집기 Pod에 대한 허용 오차를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이 허용 오차는 oc adm taint
명령으로 생성된 taint와 일치합니다. 이 허용 오차가 있는 Pod를 node1
에 예약할 수 있습니다.
13.2.4. 로깅 수집기에 대한 리소스 구성 및 스케줄링 링크 복사링크가 클립보드에 복사되었습니다!
관리자는 동일한 네임스페이스에 있고 지원되는 ClusterLogForwarder
CR과 동일한 이름이 있는 ClusterLogging
사용자 정의 리소스(CR)를 생성하여 수집기의 리소스 또는 스케줄링을 수정할 수 있습니다.
배포에서 여러 로그 전달자를 사용할 때 ClusterLogging
CR에 적용되는 스탠자는 managementState
및 collection
입니다. 다른 모든 스탠자는 무시됩니다.
사전 요구 사항
- 관리자 권한이 있습니다.
- Red Hat OpenShift Logging Operator 버전 5.8 이상이 설치되어 있습니다.
-
ClusterLogForwarder
CR을 생성했습니다.
절차
기존
ClusterLogForwarder
CR을 지원하는ClusterLogging
CR을 생성합니다.ClusterLogging
CR YAML의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
ClusterLogging
CR을 적용합니다.oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.2.5. 로깅 수집기 Pod 보기 링크 복사링크가 클립보드에 복사되었습니다!
로깅 수집기 Pod 및 실행 중인 해당 노드를 볼 수 있습니다.
절차
프로젝트에서 다음 명령을 실행하여 로깅 수집기 Pod 및 세부 정보를 확인합니다.
oc get pods --selector component=collector -o wide -n <project_name>
$ oc get pods --selector component=collector -o wide -n <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow