Kubernetes 클러스터의 성능을 관찰하고 관리하는 것은 애플리케이션 상태를 유지하고 문제를 식별하며 고가용성을 보장하는 데 매우 중요합니다. kubectl 및 Helm을 사용하여 포괄적인 모니터링 솔루션을 설정하고, Grafana, Loki 및 Prometheus를 클러스터에 배포하고, 외부 액세스를 위해 Ingress를 설정하는 과정을 안내하겠습니다.
다음 주요 단계를 다루겠습니다:
전제조건
시작하기 전에 다음 사항을 확인하세요.
1단계: 모니터링 네임스페이스 생성
네임스페이스는 Kubernetes 리소스를 논리적으로 나누고 구성하는 데 도움이 됩니다. 충돌을 방지하고 모니터링 리소스를 별도로 유지하기 위해 모니터링 도구를 위한 전용 네임스페이스를 만들 예정입니다.
1. 모니터링 네임스페이스 적용: 다음 콘텐츠를 monitoring-namespace.yml 파일에 저장합니다:
api버전: v1
종류: 네임스페이스
메타데이터:
이름: 모니터링
레이블:
app.kubernetes.io/name: 모니터링
app.kubernetes.io/instance: 모니터링
2. kubectl:
를 사용하여 네임스페이스를 적용합니다.kubectl apply -f Monitoring-namespace.yml
이 명령은 Kubernetes 클러스터에 모니터링이라는 새 네임스페이스를 생성합니다.
2단계: Helm 설치 및 Grafana 저장소 추가
Kubernetes 패키지 관리자인 Helm을 사용하면 Grafana, Loki, Prometheus와 같은 복잡한 애플리케이션을 더 쉽게 배포할 수 있습니다. Helm을 설치하고 필요한 저장소를 설정하는 방법은 다음과 같습니다.
sudo snap install helm --classic
이 명령은 Linux용 패키지 관리 시스템인 Snap을 사용하여 Helm을 설치합니다.
helm 저장소에 grafana 추가 https://grafana.github.io/helm-charts
헬름 저장소 업데이트
이렇게 하면 Helm이 Grafana 저장소의 최신 차트를 갖게 됩니다.
3단계: Helm을 사용하여 Loki, Prometheus, Grafana 배포
Helm이 설치 및 구성되었으므로 Grafana Helm 차트를 사용하여 Loki, Prometheus 및 Grafana를 배포하겠습니다.
1. Helm 설치 명령을 실행합니다:
helm 업그레이드 --install loki --namespace=grafana/loki-stack 모니터링 \
--set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.perciousVolume.enabled=false,prometheus.server.perciousVolume.enabled=false,loki.persistence.enabled=true,loki.persistence.storageClassName=gp2 ,loki.persistence.size=100Gi --set nodeSelector.name=node.kubernetes.io/description=all_production
A: Grafana: **이렇게 하면 Helm 차트 내에서 모니터링 대시보드 도구인 Grafana가 활성화됩니다.
**B: Prometheus: **프로메테우스는 측정항목 수집을 위해 활성화되는 반면, Alertmanager 및 Prometheus 서버의 영구 볼륨은 스토리지 구성을 단순화하기 위해 비활성화됩니다.
**C: Loki: 로그 집계 도구인 Loki는 gp2 스토리지 클래스를 사용하여 100Gi의 영구 볼륨 스토리지로 활성화됩니다.
--install 플래그는 스택이 이전에 배포되지 않은 경우 설치되도록 보장합니다. --upgrade 플래그는 스택이 이미 설치된 경우 최신 버전으로 업데이트합니다.
2. 설치 확인: 성공적인 설치 후 모니터링 네임스페이스에서 실행 중인 Pod의 상태를 확인합니다:
kubectl get pods -n 모니터링
Grafana, Prometheus, Loki 및 Promtail(Loki에 로그 전달)에 대한 포드가 표시됩니다.
4단계: 외부 액세스를 위한 인그레스 설정
클러스터 외부에서 Grafana, Prometheus 또는 Loki에 액세스하려면 Ingress 리소스를 구성해야 합니다. 이를 통해 모니터링 서비스에 대한 외부 HTTP/S 액세스가 허용됩니다.
*1. Ingress 리소스 생성: 다음 예제를 monitoring-ingress.yml 파일에 저장합니다.
*
api버전:네트워킹.k8s.io/v1
종류: 수신
메타데이터:
이름: 모니터링 수신
네임스페이스: 모니터링
주석:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: letsencrypt
투기:
TLS:
- 호스트:
- your-domain.com
비밀 이름: 인증서 이름
규칙:
- 호스트: your-domain.com
http:
경로:
- 길: /
pathType: 접두사
백엔드:
서비스:
이름: loki-grafana
포트:
번호: 80
이 Ingress 구성은 도메인 이름 {your-domain.com}에서 Grafana, Prometheus 및 Loki에 대한 라우팅을 설정합니다. your-domain.com을 실제 도메인으로 바꾸고 클러스터의 외부 IP를 가리키도록 DNS를 구성해야 합니다.
2. Ingress 리소스 적용:
kubectl apply -f Monitoring-ingress.yml
적용되면 Ingress 컨트롤러는 호스트 이름을 기반으로 적절한 서비스로 트래픽을 라우팅합니다.
kubectl get ingress -n 모니터링
외부에서 서비스에 액세스할 수 있도록 ADDRESS 열에 외부 IP가 있는지 확인하세요.
5단계: 모니터링 대시보드에 액세스
인그레스가 올바르게 구성되고 DNS가 클러스터를 가리키면 Grafana, Prometheus 및 Loki에 액세스할 수 있습니다.
결론
몇 가지 명령만으로 Kubernetes 클러스터에서 Helm을 사용하여 완전한 모니터링 스택을 성공적으로 배포했습니다. Helm 차트를 활용하면 Grafana, Loki, Prometheus와 같은 복잡한 애플리케이션의 배포를 단순화하는 동시에 Ingress를 통합하여 쉽게 액세스할 수 있습니다. 이제 실시간으로 로그와 지표를 모니터링할 수 있는 강력한 관측 가능성 설정이 가능해 Kubernetes 애플리케이션을 보다 효과적으로 관리하고 최적화하는 데 도움이 됩니다.
이 Helm 기반 배포는 확장성을 보장하고 업그레이드 또는 구성 변경을 단순화하여 프로덕션 환경에서 관찰 가능성을 더 쉽게 관리할 수 있게 해줍니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3