Host 클러스터
최종 수정: 2026. 1. 23.
Host 클러스터 설치
Host Cluster에 Skuber+ Observability 중앙 서버를 설치하는 방법을 안내합니다.
개요
Host Cluster는 모든 Agent Cluster의 관측성 데이터를 수집하고, 외부 ClickHouse 서버에 저장된 데이터를 조회하여 시각화하는 중앙 서버입니다.
중요: ClickHouse는 Host Cluster 내부가 아닌 외부 별도 VM 서버에 설치됩니다.
ClickHouse 서버 설치는 ClickHouse 서버 설치 문서를 참조하세요.
설치되는 컴포넌트
| 컴포넌트 | 역할 |
|---|---|
| Skuber+ Observability UI | 웹 기반 대시보드 |
| o11y-core | Service Map 백엔드 API |
| OTel Collector Gateway | OTLP 데이터 수신 게이트웨이 |
아키텍처
사전 요구사항
설치 전 다음 사항을 확인하세요:
- ClickHouse 서버 설치 완료 (필수)
- Kubernetes 1.24+ 클러스터 접근 권한
-
kubectl설치 및 클러스터 접근 설정 - LoadBalancer 또는 Ingress 설정 가능
- ClickHouse 서버로 네트워크 연결 가능 (TCP 9000)
ClickHouse 연결 정보 확인
Host 설치 전에 ClickHouse 서버 정보를 확인합니다:
# ClickHouse 서버 연결 테스트
nc -zv <clickhouse-ip> 9000
# ClickHouse 접속 확인
clickhouse-client --host <clickhouse-ip> --password '<password>' --query "SELECT 1"설치 방법
설치 스크립트 사용 (권장)
Skuber+ Observability Host는 설치 스크립트를 통해 간편하게 설치할 수 있습니다.
Step 1: 스크립트 다운로드
curl -O https://install.skuberplus.com/o11y-host-install.sh
chmod +x o11y-host-install.shStep 2: 스크립트 실행
기본 설치:
./o11y-host-install.sh \
--cluster-context <host-cluster-context> \
--external-clickhouse-host <clickhouse-ip> \
--external-clickhouse-user <username> \
--external-clickhouse-password <password>이메일 알림 포함 설치:
./o11y-host-install.sh \
--cluster-context skuber-observability \
--external-clickhouse-host 192.168.254.237 \
--external-clickhouse-user default \
--external-clickhouse-password "YourPassword" \
--enable-email-alerts \
--smtp-from "noreply@example.com" \
--smtp-hello "mail.example.com" \
--smtp-smarthost "smtp.mailgun.org:587" \
--smtp-username "postmaster@example.com" \
--smtp-password "smtp-password" \
--smtp-require-tls파라미터 설명
필수 파라미터
| 파라미터 | 설명 | 예시 |
|---|---|---|
--cluster-context |
Host 클러스터의 kubectl 컨텍스트 | skuber-observability |
--external-clickhouse-host |
ClickHouse 서버 IP 또는 호스트명 | 192.168.254.237 |
--external-clickhouse-user |
ClickHouse 사용자명 | default |
--external-clickhouse-password |
ClickHouse 비밀번호 | YourPassword |
선택 파라미터
| 파라미터 | 기본값 | 설명 |
|---|---|---|
--namespace |
skuber-observability |
설치 네임스페이스 |
--storage-class |
클러스터 기본값 | 사용할 StorageClass |
--dry-run |
- | 실제 설치 없이 검증만 수행 |
--verbose |
- | 상세 로그 출력 |
이메일 알림 파라미터 (선택)
| 파라미터 | 설명 |
|---|---|
--enable-email-alerts |
이메일 알림 활성화 |
--smtp-from |
발신자 이메일 주소 |
--smtp-hello |
SMTP HELO 도메인 |
--smtp-smarthost |
SMTP 서버 주소:포트 |
--smtp-username |
SMTP 사용자명 |
--smtp-password |
SMTP 비밀번호 |
--smtp-require-tls |
TLS 필수 여부 |
--smtp-insecure-skip-verify |
TLS 인증서 검증 건너뛰기 |
사용 예시
# 기본 설치 (검증 모드)
./o11y-host-install.sh \
--cluster-context skuber-observability \
--external-clickhouse-host 192.168.254.237 \
--external-clickhouse-user default \
--external-clickhouse-password "Wonder9595" \
--dry-run
# 실제 설치 (상세 로그)
./o11y-host-install.sh \
--cluster-context skuber-observability \
--external-clickhouse-host 192.168.254.237 \
--external-clickhouse-user default \
--external-clickhouse-password "Wonder9595" \
--verbose설치 확인
파드 상태 확인
kubectl --context=<host-context> get pods -n skuber-observability정상 설치 시 출력:
NAME READY STATUS RESTARTS AGE
skuber-observability-0 2/2 Running 0 5m
o11y-core-xxx-yyy 1/1 Running 0 5m
otel-collector-gateway-xxx-yyy 1/1 Running 0 5m서비스 상태 확인
kubectl --context=<host-context> get svc -n skuber-observabilityClickHouse 연결 확인
# o11y-core에서 ClickHouse 연결 확인
kubectl --context=<host-context> logs -n skuber-observability \
-l app.kubernetes.io/name=o11y-core --tail=20 | grep -i clickhouse서비스 접근 설정
LoadBalancer 사용 시
External IP 확인:
# UI 접근 IP
kubectl --context=<host-context> get svc skuber-observability \
-n skuber-observability \
-o jsonpath='{.status.loadBalancer.ingress[0].ip}'
# OTel Gateway IP (Agent Cluster에서 사용)
kubectl --context=<host-context> get svc otel-collector-gateway \
-n skuber-observability \
-o jsonpath='{.status.loadBalancer.ingress[0].ip}'NodePort 사용 시
NodePort 확인:
kubectl --context=<host-context> get svc -n skuber-observability -o wide접근 URL: http://<node-ip>:<node-port>
Gateway IP 기록
Agent Cluster 설치 시 필요한 Gateway IP를 기록합니다:
# Gateway IP 확인 및 기록
export HOST_GATEWAY_IP=$(kubectl --context=<host-context> get svc otel-collector-gateway \
-n skuber-observability \
-o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "Host Gateway IP: $HOST_GATEWAY_IP"
echo "Agent Cluster 설치 시 이 IP를 사용하세요: $HOST_GATEWAY_IP:4317"초기 접속
웹 UI 접속
브라우저에서 UI 서비스 주소로 접속합니다:
http://<ui-external-ip>:8080초기 화면에서 다음을 확인할 수 있습니다:
- Service Map (Agent 연결 후 데이터 표시)
- Logs Explorer
- Metrics Explorer
- Traces Explorer
Skuber+ Client 연동
Skuber+ Client에서 Observability 플러그인을 사용하려면:
- Skuber+ Client 실행
- Settings > Plugins > Observability 활성화
- Host Cluster URL 입력:
http://<ui-external-ip>:8080 - 연결 테스트 및 저장
설치 검증
컴포넌트 상태 확인
# 모든 파드 상태 확인
kubectl --context=<host-context> get pods -n skuber-observability -o wide
# 서비스 엔드포인트 확인
kubectl --context=<host-context> get endpoints -n skuber-observability로그 확인
# OTel Gateway 로그
kubectl --context=<host-context> logs -n skuber-observability \
-l app.kubernetes.io/name=otel-gateway --tail=50
# o11y-core 로그
kubectl --context=<host-context> logs -n skuber-observability \
-l app.kubernetes.io/name=o11y-core --tail=50연결 테스트
# OTel Gateway 헬스체크
kubectl --context=<host-context> exec -n skuber-observability \
-l app.kubernetes.io/name=otel-gateway -- wget -O- http://localhost:13133/health문제 해결
파드가 Pending 상태인 경우
# 파드 이벤트 확인
kubectl --context=<host-context> describe pod <pod-name> -n skuber-observability
# 일반적인 원인:
# - StorageClass 없음 → --storage-class 옵션 지정
# - 리소스 부족 → 노드 스케일업 또는 리소스 요청 감소LoadBalancer IP가 할당되지 않는 경우
# 서비스 상태 확인
kubectl --context=<host-context> describe svc otel-collector-gateway \
-n skuber-observability
# 클라우드 환경 확인:
# - AWS: AWS Load Balancer Controller 설치 필요
# - GKE: 자동 지원
# - NKS: Naver Cloud LoadBalancer 자동 지원ClickHouse 연결 오류
# 네트워크 연결 테스트
kubectl --context=<host-context> run test --rm -it --image=busybox -- \
nc -zv <clickhouse-ip> 9000
# o11y-core 로그에서 오류 확인
kubectl --context=<host-context> logs -n skuber-observability \
-l app.kubernetes.io/name=o11y-core | grep -i error다음 단계
Host Cluster 설치가 완료되면:
- Agent 클러스터 설치 - 모니터링 대상 클러스터에 Agent 설치
- 데이터 보존 설정 - 데이터 보존 기간 설정