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:NoExecuteCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서는 키
collector, 값node및 taint 효과NoExecute로node1에 taint를 배치합니다.NoExecutetaint 효과를 사용해야 합니다.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 이상이 설치되어 있습니다.
-
ClusterLogForwarderCR을 생성했습니다.
절차
기존
ClusterLogForwarderCR을 지원하는ClusterLoggingCR을 생성합니다.ClusterLoggingCR YAML의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
ClusterLoggingCR을 적용합니다.oc apply -f <filename>.yaml
$ oc apply -f <filename>.yamlCopy 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