ClickHouseCluster 및
KeeperCluster 객체에 Kubernetes 이벤트를 기록합니다. 이러한 이벤트는 operator가
리컨실리에이션 과정에서 수행한 작업을 보여줍니다. 즉, 리소스 변경이 어디에서 실패했는지,
클러스터가 언제 준비 상태가 되었는지, 왜 스케일링이 차단되었는지 등을 추적할 수 있으며,
사용자가 일반적으로 확인하는 로그에는 남지 않는 실패도 드러냅니다. 또한
메트릭을 보완하여,
사람이 읽을 수 있는 이력을 사용자 지정 리소스에 직접 연결합니다.
clickhouse-controller는 ClickHouseCluster 객체에 이벤트를 보고하고,
keeper-controller는 KeeperCluster 객체에 이벤트를 보고합니다. 리소스
수명 주기 실패 이벤트에는 해당 이벤트와 관련된 소유 객체도 함께 참조됩니다(예:
StatefulSet, Service, ConfigMap, 시크릿, 파드 중단 예산,
PersistentVolumeClaim 또는 version-probe Job). 그 외 이벤트는 클러스터
자체만 참조합니다.
Kubernetes API server는 TTL이 지나면 이벤트를 만료시킵니다. 기본값은 1시간입니다
(
--event-ttl). 따라서 이벤트는 최근 활동을 보여주는 단기적인 신호일 뿐이며,
지속적으로 보존되는 감사 추적용 기록은 아닙니다.이벤트 확인
kubectl describe를 실행하는 것이며, 그러면 하단에
가장 최근의 이벤트가 표시됩니다:
events 리소스에 쿼리를 실행한 다음 관련 객체 또는 유형으로 필터링합니다:
ClickHouseCluster 이벤트(clickhouse-controller)와 KeeperCluster 이벤트
(keeper-controller)를 구분할 수 있습니다.
이벤트 Reason 참고
Normal
이벤트는 예상된 진행 상황을 나타내고, Warning 이벤트는 실패 또는
사용자가 조치해야 하는 상태를 나타냅니다.
리소스 수명 주기
ClickHouseCluster와 KeeperCluster 모두에서 이 이벤트가 발생합니다.
클러스터 준비 상태
스케일링
KeeperCluster에서 발생하는 이벤트입니다.
HorizontalScaleBlocked는 Keeper 스케일링 요청이 아무 일도 일어나지 않는 것처럼
보일 때 확인해야 하는 이벤트입니다. 오퍼레이터는 split 위험을 피하기 위해
의도적으로 변경을 보류하고 기존 쿼럼을 유지합니다. 이벤트 메시지에는 변경을
막은 제약 조건이 명시됩니다.외부 시크릿
ClickHouseCluster에 대해 이 이벤트가 발생합니다. 자세한 내용은
구성 가이드의 External Secret 기능을 참조하십시오.
버전 확인
ClickHouseCluster 및 KeeperCluster의 버전 확인에서 발생합니다.
VersionProbeFailed는 ClickHouse 버전 프로브 Job에만 해당합니다.
ClickHouse 서버 경고
마지막 Reason은 성격이 다릅니다. 이는 오퍼레이터 자체의 동작을 설명하는 것이 아닙니다. 각
준비된 레플리카에서 오퍼레이터는 주기적으로 서버의
system.warnings 테이블을 조회하고,
각 행을 해당 행이 나온 레플리카 이름을 접두사로 붙여 클러스터의 Warning 이벤트로 다시 게시합니다.
이렇게 하면 ClickHouse 자체의 구성 및 런타임 경고(더 이상 사용되지 않는 설정, 낮은 제한값, 안전하지 않은 옵션)를 각 레플리카에 대해
clickhouse-client 세션을 열지 않고도 kubectl로 확인할 수 있는 이벤트로 바꿀 수 있습니다.
이벤트, 메트릭 및 조건
- 이벤트 (이 가이드) — 최근에 발생한 내용으로, 사람이 읽기 쉽고 객체에 연결되어 있습니다. “이 클러스터에서 방금 무슨 일이 있었는지”를 파악하고
kubectl describe로 대화형 문제 해결을 수행하는 데 가장 적합합니다. 시간이 지나면 만료됩니다. - 사용자 지정 리소스의
status.conditions— 현재 상태에 대한 지속적인 단일 진실 소스입니다 (준비 완료, 외부 시크릿 유효, 스케일 허용, 버전 동기화). 스크립트와 GitOps 헬스 게이트에 가장 적합합니다. 다음 명령으로 확인하십시오:kubectl get clickhousecluster <name> -o jsonpath='{.status.conditions}'. - 메트릭 — 지속적으로 유지되며 수치로 표현됩니다. 대시보드와 reconcile 오류율이 지속될 때 알림을 설정하는 데 가장 적합합니다.
Warning 이벤트와 False 조건은 같은 문제를 서로 다른 두 관점에서 설명하는 경우가 많습니다. 이벤트는 발생 시점과 메시지를 포착하고, 조건은 해소될 때까지 해당 상태를 반영합니다.
이벤트로 문제 해결하기
FailedCreate/FailedUpdate반복 — 연산자가 리소스를 적용하지 못하고 있습니다. 이벤트 메시지에는 API 오류(admission 거부, 할당량, 잘못된 spec)가 포함됩니다. 리컨실리에이션은 재시도되므로 일시적인 원인은 저절로 해소되지만, 지속되는 원인은 spec 또는 클러스터를 수정해야 합니다.- 이에 대응하는
ClusterReady없이ClusterNotReady가 발생 — 클러스터가 복구되지 못하고 있습니다. 이벤트 메시지에는 준비되지 않은 세그먼트나 quorum 문제가 명시되므로, 해당 파드를 확인하십시오. HorizontalScaleBlocked— 의도한 수평 확장/축소가 안전을 위해 보류된 상태입니다. 강제로 진행하기 전에 정확한 제약 사항을 메시지에서 확인하십시오.ExternalSecretNotFound/ExternalSecretInvalid— 시크릿 이름 또는 그 안의 키를 수정하십시오. 연산자가 이를 사용할 수 있게 되면 해당ExternalSecretValid조건이True로 바뀝니다.ClickHouseWarning— 문제는 연산자가 아니라 ClickHouse 내부에 있습니다. 메시지는system.warnings의 행을 보듯이 해석하십시오.
- operator 모니터링 — 메트릭과 상태 프로브로, 이벤트와 달리 지속적으로 확인할 수 있는 신호입니다.
- 스케일링 —
HorizontalScaleBlocked가 무엇을 보호하는지, 그리고 Keeper quorum이 스케일링을 어떻게 제한하는지 설명합니다. - 구성 — external-secret 이벤트의 기반이 되는 External Secret 기능입니다.