Wave Diagnosis CRDs
이 종류(kind)는 CRD Mode에서 Wave Diagnosis 작업을 설정합니다. memory leak detection, PV capacity forecasting, unused PV cleanup, Pod/Container Failures 네 가지 기능을 다룹니다.
WaveDiagnosisConfig
WaveDiagnosisConfig는 memory leak detection, PV capacity forecasting, unused PV cleanup, Pod/Container Failures라는 네 가지 Wave Diagnosis 작업을, 네 개의 독립된 하위 섹션을 통해 조정합니다. 각 하위 섹션은 독립적으로 설정하거나 생략할 수 있으며, 하위 섹션을 생략하면 해당 작업의 설정은 내장 기본값으로 돌아갑니다(각 기본값이 무엇인지는 Notes를 참고하세요).
Scope: 클러스터 범위(cluster-scoped)이며, metadata.namespace가 필요 없습니다.
apiVersion: wavek8s.com/v1alpha1
kind: WaveDiagnosisConfig
metadata:
name: diagnosis-config
spec:
# 컨테이너의 메모리 사용률이 limit의 90%에 도달하면 플래그합니다.
# 생략하면 내장 기본값 95%를 사용합니다.
memoryAnomaly:
oomkillUtilization: 90.0
# OOM-kill 위험 이벤트 사이의 컨테이너별 쿨다운. 생략하면 10분입니다.
oomkillCooldownMinutes: 30
# Monitor specific PVCs for capacity forecasting.
# Omit the entire sub-section to stop forecasting all PVCs.
pvForecast:
enabledPvcs:
- namespace: prod
pvcName: data-pvc
- namespace: prod
pvcName: logs-pvc
# Automatically delete unused PVs (PVs with no bound PVC).
# Omit the entire sub-section to disable cleanup (same as enabled: false).
pvCleanup:
enabled: true
# Pod/Container Failures 감지는 별도 설정이 필요 없습니다. 조정할 수 있는 것은
# 제외 목록뿐이며, 목록에 있는 워크로드는 감지 대상에서 빠집니다.
podContainerFailures:
excludedWorkloads:
- kind: Deployment
namespace: dev
name: flaky-integration-testmemoryAnomaly.oomkillCooldownMinutes와 podContainerFailures 하위 섹션 전체는 Wave 3.4.0에서 추가되었습니다. memoryAnomaly.oomkillUtilization의 기본값도 3.4.0에서 바뀌었습니다. 평균 사용률 기준 85.0에서 순간 사용률 기준 95.0이 되었습니다.
Spec 필드
| 필드 | 타입 | 필수 | 기본값 | 설명 |
|---|---|---|---|---|
memoryAnomaly | object | 아니요 | 없음 | memory leak detection과 OOM-kill 위험 감지 설정입니다. 생략하면 내장 기본값을 사용합니다(작업은 95% 임계값으로 계속 실행됩니다). |
memoryAnomaly.oomkillUtilization | number | 아니요 | 95.0 | OOM-kill 메모리 사용률 임계값(퍼센트, 0~100)입니다. 컨테이너의 순간 메모리 사용률이 이 값 이상이면 플래그가 붙습니다. 예를 들어 90.0은 메모리 limit의 90% 이상을 쓰는 컨테이너를 플래그합니다. |
memoryAnomaly.oomkillCooldownMinutes | integer | 아니요 | 10 | OOM-kill 위험 이벤트가 발생한 뒤 적용되는 컨테이너별 쿨다운(분)입니다. limit 근처에 계속 머무는 컨테이너의 반복 알림을 줄이려면 값을 올리세요. 0으로 두면 쿨다운이 없어져, 에이전트가 메트릭을 보낼 때마다 위험 이벤트가 기록됩니다. |
pvForecast | object | 아니요 | 없음 | PV capacity forecasting 설정입니다. 생략하면 모든 PVC에 대한 예측이 멈춥니다(하위 섹션 전체를 생략하면 모든 PVC의 예측이 중단됩니다). |
pvForecast.enabledPvcs | array | 아니요 | [] | capacity forecasting에 포함할 PVC 목록입니다. 각 항목은 namespace와 pvcName이 필요합니다. 빈 목록은 모든 PVC의 예측을 비활성화합니다. |
pvForecast.enabledPvcs[].namespace | string | 예(항목별) | 없음 | 모니터링할 PVC의 namespace입니다. |
pvForecast.enabledPvcs[].pvcName | string | 예(항목별) | 없음 | 모니터링할 PVC의 이름입니다. |
pvCleanup | object | 아니요 | 없음 | 사용하지 않는 PV 자동 삭제 설정입니다. 생략하면 cleanup이 비활성화됩니다(enabled: false와 동일한 효과). |
pvCleanup.enabled | boolean | 예(pvCleanup이 있으면) | 없음 | 바인딩된 PVC가 없는 PV를 Wave가 자동으로 삭제할지 여부입니다. CR을 제거하지 않고 cleanup만 끄려면 false로 설정하세요. |
podContainerFailures | object | 아니요 | 없음 | Pod/Container Failures 감지 설정입니다. 감지 자체는 별도 설정 없이 항상 동작하며, 이 하위 섹션은 제외 목록만 담습니다. |
podContainerFailures.excludedWorkloads | array | 아니요 | [] | 감지에서 제외할 워크로드 목록입니다. 목록에 있으면 제외되고, 항목을 지우면 다시 감지 대상이 됩니다. |
podContainerFailures.excludedWorkloads[].kind | string | 예(항목별) | 없음 | Deployment, StatefulSet, DaemonSet 중 하나입니다. 그 외의 값은 검증에 실패하며 .status.conditions에 ValidationFailed로 보고됩니다. |
podContainerFailures.excludedWorkloads[].namespace | string | 예(항목별) | 없음 | 제외할 워크로드의 namespace입니다. |
podContainerFailures.excludedWorkloads[].name | string | 예(항목별) | 없음 | 제외할 워크로드의 이름입니다. |
CR을 삭제하는 것과 작업을 끄는 것은 다릅니다. 각 작업은 삭제 시 서로 다르게 동작합니다.
- memory leak detection은 항상 실행됩니다. 삭제해도 OOM-kill 임계값이 95%로, 쿨다운이 10분으로 되돌아갈 뿐입니다(CR로는 비활성화할 수 없습니다).
- PV capacity forecasting은 모든 PVC에 대한 모니터링을 멈춥니다(빈
enabledPvcs목록과 동일합니다). - PV cleanup은 비활성화됩니다(
pvCleanup.enabled: false와 동일합니다). - Pod/Container Failures는 모든 대상을 계속 감지합니다. 제외 목록이 비워지므로, 그동안 제외돼 있던 워크로드가 다시 감지됩니다.
작업을 명시적으로 끄려면, CR은 유지한 채 해당 하위 섹션을 그에 맞게 설정하세요. Diagnosis 작업 자체를 완전히 끄려면 환경 변수 토글을 사용하세요.
참고 사항
- 네 개의 독립된 하위 섹션.
memoryAnomaly,pvForecast,pvCleanup,podContainerFailures는 서로 독립적으로 선택 사항입니다. 하나를 설정해도 다른 것에는 영향이 없습니다. memoryAnomaly를 생략하면 감지 임계값이 내장 기본값인 **95%**로, 쿨다운이 10분으로 돌아갑니다. memory leak detection 작업은 항상 실행되며, 이 하위 섹션에는enabled플래그가 없습니다. 노이즈를 줄이려면 임계값을 올리거나 쿨다운을 늘리세요. 이 CR로는 작업 자체를 끌 수 없습니다.pvForecast를 생략하면 모든 PVC의 capacity forecasting이 멈춥니다(빈enabledPvcs목록과 동일합니다). 원하는 PVC 목록으로 CR을 다시 적용하면 예측이 재개됩니다.pvCleanup을 생략하면 자동 PV 삭제가 비활성화됩니다. PV cleanup에 대한 설정 행이 없으면 Wave는 이를enabled: false로 취급합니다.pvCleanup.enabled: false를 명시적으로 설정해도 결과는 같습니다.podContainerFailures를 생략하면 감지는 켜진 채 제외 목록만 비게 됩니다. 즉 모든 Deployment, StatefulSet, DaemonSet이 감지 대상입니다.pvForecast.enabledPvcs는 전체 교체(whole-replace) 방식입니다. 재조정(reconcile)될 때마다, 저장된 PVC 목록은 CR이 선언한 내용으로 그대로 교체됩니다. 목록에 없는 PVC는 더 이상 예측되지 않습니다. 모니터링하려는 PVC는 전부 포함하세요.podContainerFailures.excludedWorkloads도 같은 전체 교체 방식입니다. 재조정될 때마다 저장된 제외 목록이 CR이 선언한 내용으로 그대로 교체됩니다.- Rollout과 DeploymentConfig Pod는
Deployment로 매핑됩니다. Wave의 push 경로 워크로드 매핑이 OpenShiftDeploymentConfig와 ArgoRolloutPod를 소유 Deployment로 해석하므로, 제외할 때도kind: Deployment로 지정하세요. oomkillUtilization은 퍼센트(0100)이며, 01 비율이 아닙니다. 예를 들어90.0은 90%를 의미하며 9000%가 아닙니다.