korean-docs
Wave Diagnosis
CRDs

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-test

memoryAnomaly.oomkillCooldownMinutespodContainerFailures 하위 섹션 전체는 Wave 3.4.0에서 추가되었습니다. memoryAnomaly.oomkillUtilization의 기본값도 3.4.0에서 바뀌었습니다. 평균 사용률 기준 85.0에서 순간 사용률 기준 95.0이 되었습니다.

Spec 필드

필드타입필수기본값설명
memoryAnomalyobject아니요없음memory leak detection과 OOM-kill 위험 감지 설정입니다. 생략하면 내장 기본값을 사용합니다(작업은 95% 임계값으로 계속 실행됩니다).
memoryAnomaly.oomkillUtilizationnumber아니요95.0OOM-kill 메모리 사용률 임계값(퍼센트, 0~100)입니다. 컨테이너의 순간 메모리 사용률이 이 값 이상이면 플래그가 붙습니다. 예를 들어 90.0은 메모리 limit의 90% 이상을 쓰는 컨테이너를 플래그합니다.
memoryAnomaly.oomkillCooldownMinutesinteger아니요10OOM-kill 위험 이벤트가 발생한 뒤 적용되는 컨테이너별 쿨다운(분)입니다. limit 근처에 계속 머무는 컨테이너의 반복 알림을 줄이려면 값을 올리세요. 0으로 두면 쿨다운이 없어져, 에이전트가 메트릭을 보낼 때마다 위험 이벤트가 기록됩니다.
pvForecastobject아니요없음PV capacity forecasting 설정입니다. 생략하면 모든 PVC에 대한 예측이 멈춥니다(하위 섹션 전체를 생략하면 모든 PVC의 예측이 중단됩니다).
pvForecast.enabledPvcsarray아니요[]capacity forecasting에 포함할 PVC 목록입니다. 각 항목은 namespacepvcName이 필요합니다. 빈 목록은 모든 PVC의 예측을 비활성화합니다.
pvForecast.enabledPvcs[].namespacestring예(항목별)없음모니터링할 PVC의 namespace입니다.
pvForecast.enabledPvcs[].pvcNamestring예(항목별)없음모니터링할 PVC의 이름입니다.
pvCleanupobject아니요없음사용하지 않는 PV 자동 삭제 설정입니다. 생략하면 cleanup이 비활성화됩니다(enabled: false와 동일한 효과).
pvCleanup.enabledboolean예(pvCleanup이 있으면)없음바인딩된 PVC가 없는 PV를 Wave가 자동으로 삭제할지 여부입니다. CR을 제거하지 않고 cleanup만 끄려면 false로 설정하세요.
podContainerFailuresobject아니요없음Pod/Container Failures 감지 설정입니다. 감지 자체는 별도 설정 없이 항상 동작하며, 이 하위 섹션은 제외 목록만 담습니다.
podContainerFailures.excludedWorkloadsarray아니요[]감지에서 제외할 워크로드 목록입니다. 목록에 있으면 제외되고, 항목을 지우면 다시 감지 대상이 됩니다.
podContainerFailures.excludedWorkloads[].kindstring예(항목별)없음Deployment, StatefulSet, DaemonSet 중 하나입니다. 그 외의 값은 검증에 실패하며 .status.conditionsValidationFailed로 보고됩니다.
podContainerFailures.excludedWorkloads[].namespacestring예(항목별)없음제외할 워크로드의 namespace입니다.
podContainerFailures.excludedWorkloads[].namestring예(항목별)없음제외할 워크로드의 이름입니다.
⚠️

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 경로 워크로드 매핑이 OpenShift DeploymentConfig와 Argo Rollout Pod를 소유 Deployment로 해석하므로, 제외할 때도 kind: Deployment로 지정하세요.
  • oomkillUtilization은 퍼센트(0100)이며, 01 비율이 아닙니다. 예를 들어 90.0은 90%를 의미하며 9000%가 아닙니다.