Notice
Recent Posts
Recent Comments
Tags
- docker
- mgmtip
- vmware
- perplexity
- mariadb
- dell
- wildfly jboss
- 진상부모_물러가라
- Network
- Path
- openldap
- admin port
- 웰카
- drbd
- n1548
- web&was apche htaccess
- data-door
- etcd
- Galera Cluster
- banner
- pod
- CentOS
- Kubernetes
- 우파푸른하늘80만이벤트
- Auth
- n15148
- 우파푸른하늘
- maxscale
- snmp
- RHEL8
- Storage
- CEP
- unix_socket
- 참교육
- MotD
- Netflix
- port description
반응형
250x250
전산쟁이의 기억노트
14. kubernetes모니터링방법 본문
728x90
반응형
Kubernetes 모니터링
- 본 문서는 Zabbix에서 Kubernetes 클러스터를 모니터링하는 절차를 설명한다.
- Zabbix 공식 방식은 Kubernetes용 Helm Chart를 배포하고, Web UI에서 공식 HTTP 템플릿을 연결해 클러스터 구성 요소를 모니터링하는 구조이다.
- 일반적으로 Kubernetes nodes by HTTP와 Kubernetes cluster state by HTTP 두 개의 핵심 템플릿부터 시작한다.
구성 개요

- Zabbix Server: 템플릿, 이벤트, 알림, 시각화를 담당한다.
- Zabbix Proxy: Kubernetes 클러스터 내부 또는 인접 위치에서 API 수집을 담당할 수 있다.
- Kubernetes API server: 클러스터 메타데이터와 상태 조회 대상.
- kube-state-metrics: 워크로드 상태 메트릭 제공.
- kubelet: 노드별 런타임 및 리소스 상태 수집 대상.
- controller-manager / scheduler: 컨트롤 플레인 상태 수집 대상.
- 주요 포트 예시는 다음과 같다.
- Zabbix Proxy -> Zabbix Server: 10051/tcp.
- Zabbix components -> Kubernetes API: 443/tcp 또는 6443/tcp.
- Zabbix components -> kubelet: 10250/tcp.
- 실제 포트는 클러스터 구성과 인증 정책에 따라 다를 수 있다.
권장 방식
- 공식 문서는 Kubernetes용 Helm Chart 설치 후, Zabbix Web UI에서 템플릿을 연결하는 흐름을 안내한다.
- 대규모 환경에서는 Zabbix Proxy를 클러스터 내부에 두고 외부 Zabbix Server와 연동하는 구성이 일반적이다.
- Zabbix는 Kubernetes를 Agent 설치 중심이 아니라, API/HTTP 기반 수집으로 모니터링하는 접근을 사용한다.
사전 준비
- Kubernetes 클러스터가 정상 동작 중이어야 한다.
- Zabbix Server가 준비되어 있어야 한다.
- Helm과 kubectl 사용이 가능해야 한다.
- Zabbix Kubernetes용 Helm Chart를 배포할 namespace를 준비한다. 일반적으로 monitoring을 사용한다.
Helm Chart 배포
- 공식 문서는 Kubernetes용 Helm Chart 설치를 선행 단계로 안내한다.
- 배포 예시는 환경에 따라 조금씩 다르지만, 기본 흐름은 repo 추가, values 확인, namespace 생성, chart 설치 순서이다.
helm repo add zabbix-chart-6.4 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.4
helm repo update
kubectl create namespace monitoring
helm show values zabbix-chart-6.4/zabbix-helm-chart > $HOME/zabbix_values.yaml
- values 파일을 환경에 맞게 수정한 뒤 Helm Chart를 배포한다.
helm install zabbix zabbix-chart-6.4/zabbix-helm-chart -n monitoring -f $HOME/zabbix_values.yaml
Token 확인
- 공식 문서는 Helm Chart 설치 후 생성된 ServiceAccount token을 사용해 Kubernetes API 접근에 활용한다.
- 예시는 다음과 같다.
kubectl get secret zabbix-zabbix-helm-chart -n monitoring -o jsonpath={.data.token} | base64 -d
- 일부 배포 예시에서는 Secret 이름이 환경에 따라 다를 수 있으므로 실제 생성된 Secret 이름을 확인해야 한다.
Web UI 사전 설정
- Zabbix Frontend에서 Kubernetes 관련 Host group을 먼저 만든다.
- Proxy를 사용하는 경우 Administration -> Proxies에서 active proxy를 생성하고, Helm values에 지정한 이름과 일치해야 한다.
- 템플릿이 기본 설치에 없으면 공식 통합 페이지에서 가져와 import 해야 한다.
주요 템플릿
공식 통합 문서에는 다음 템플릿이 포함되어 있다.
- Kubernetes nodes by HTTP
- Kubernetes cluster state by HTTP
- Kubernetes API server by HTTP
- Kubernetes Controller manager by HTTP
- Kubernetes Scheduler by HTTP
- Kubernetes kubelet by HTTP
일반적으로는 먼저 Kubernetes nodes by HTTP와 Kubernetes cluster state by HTTP를 연결한 뒤, 필요 시 control plane 템플릿을 추가한다.
Nodes Host 등록
- 첫 번째 Host는 노드 모니터링용 Host로 생성한다.
- 예시 Host name은 Kubernetes Nodes로 설정할 수 있다.
- Host group을 Kubernetes 전용 그룹으로 지정하고, Kubernetes nodes by HTTP 템플릿을 연결한다.
- HTTP item 템플릿 특성상 dummy interface가 필요할 수 있으므로 Host interface를 하나 등록한다.
주요 매크로 예시
- {$KUBE.API.ENDPOINT.URL} = https://default.svc.cluster.local:443/api
- {$KUBE.API.TOKEN} = Helm 설치 후 조회한 token 값
Cluster State Host 등록
- 두 번째 Host는 클러스터 상태 모니터링용으로 생성한다.
- 예시 Host name은 Kubernetes Cluster State로 설정할 수 있다.
- Kubernetes cluster state by HTTP 템플릿을 연결한다.
- 이 템플릿은 Kubernetes API를 이용해 클러스터 구성 요소와 control plane 노드를 발견하고, 필요한 Host와 Template을 자동 생성하는 역할을 한다.
추가 템플릿 적용
필요 시 아래 템플릿을 추가로 연결한다.
- Kubernetes API server by HTTP
- Kubernetes Controller manager by HTTP
- Kubernetes Scheduler by HTTP
- Kubernetes kubelet by HTTP
kubelet 모니터링 시 매크로 예시는 다음과 같다.
- {$KUBE.KUBELET.URL} = https://
:10250
- {$KUBE.KUBELET.URL} = https://
수집 항목 예시
- Node 상태, CPU, Memory, Pod 수
- Deployment, DaemonSet, ReplicaSet, Pod, Service, Endpoint 상태
- kubelet runtime operation, running pod 수
- scheduler 요청/지연 통계
- API server 상태
- cluster object discovery 및 상태 변화
방화벽 및 접근 제어
- Zabbix Proxy 또는 Server는 Kubernetes API endpoint에 접근할 수 있어야 한다.
- kubelet 모니터링 시 10250/tcp 접근이 필요할 수 있다.
- Token 기반 인증 정보를 사용하므로 Secret 관리와 RBAC 범위를 최소화하는 것이 중요하다.
- 가능하면 Zabbix Proxy를 클러스터 내부에 두고 외부 Zabbix Server에는 10051/tcp만 열어 두는 방식이 운영상 유리하다.
대용량 운영 추천값
- 대규모 클러스터에서는 Zabbix Proxy를 클러스터 내부에 두는 방식을 우선 검토한다.
- 모든 템플릿을 처음부터 다 붙이기보다, nodes/cluster state부터 시작해 필요한 control plane 템플릿을 추가하는 것이 좋다.
- 추천 시작 기준은 아래와 같다.
| 항목 | 추천값 |
|---|---|
| 배포 방식 | 공식 Helm Chart |
| 수집 위치 | 클러스터 내부 Proxy 우선 |
| 핵심 템플릿 | Kubernetes nodes by HTTP, Kubernetes cluster state by HTTP |
| API endpoint | 내부 DNS 또는 API VIP |
| 인증 | Helm Chart 생성 token 기반 |
| Host 구성 | Nodes / Cluster State 분리 |
| 확장 방식 | kubelet, scheduler, controller-manager 순차 적용 |
점검 항목
- Helm Chart가 정상 배포되었는지 확인한다.
- Token을 정상 조회할 수 있는지 확인한다.
- Proxy 이름이 Frontend 설정과 values 파일에서 일치하는지 확인한다.
- {$KUBE.API.ENDPOINT.URL}와 token 매크로 값이 정확한지 확인한다.
- 템플릿 import 여부, Host interface 등록, API 접근 차단은 가장 흔한 원인이므로 우선 점검한다.
운영 팁
- 처음에는 Nodes와 Cluster State 템플릿만으로 시작하고, 이후 kubelet과 control plane 템플릿을 확장하는 것이 안정적이다.
- RBAC 권한은 최소 범위로 시작하고, 필요한 메트릭이 부족할 때만 단계적으로 확장하는 것이 좋다.
- Host group, template 연결 기준, macro 이름 규칙을 표준화하면 대규모 클러스터 운영이 쉬워진다.
- kube-state-metrics와 API 기반 수집은 강력하지만, 너무 많은 항목을 한 번에 활성화하면 수집량이 급증할 수 있으므로 점진적으로 적용하는 것이 좋다.
728x90
반응형
Comments
