모니터링 중앙화 ?

 

쿠버네틱스 안에 프로메테우스가 있고 외부에 있는 서버의 메트릭 프로메테우스로 가지고 오기

 

k8s (프로메테우스 ) - 외부 서브넷에 있는 서버 (Cadvisor)

 

 

--------------------------------------------

현재 상태 : Prometheus, Grafana Helm 으로 구성

 

1. 추가 서버에서 cadvisor 설치 (컨테이너 실행 or 바이너리 파일로 실행)

참고 : os 별 (https://github.com/google/cadvisor/blob/master/docs/running.md)

컨테이너 실행이나 바이너리 파일 실행도 서버 재기동을 생각해서 docker restart, systemd 에 등록이 필요합니다.

sudo docker run -d --restart always --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor --privileged --device=/dev/kmsg gcr.io/cadvisor/cadvisor:latest

2. 프로메테우스 설정 파일에 하기 내용 추가

extraScrapeConfigs: |
  - job_name: 'test-api'  
    scrape_interval: 5s  
    static_configs:  
    - targets: ['172.3.61.111:8080']
      labels:
        type: AWS-EC2

 

3. 프로메테우스 target 에서 수집이 잘되는지 확인

 

모니터링 구성 (import 13946)- 그라파나 버전에 따라 많은 수정이 필요합니다.

 

 

 

 

혹시 몰라서 테스트

 

kube-prometheus-stack 에서 동일하게 구성하기

https://malwareanalysis.tistory.com/566
https://www.jacobbaek.com/1540

프로메테우스 설정 파일에 하기 내용 추가 (헬름)

prometheus:
  prometheusSpec:
    additionalScrapeConfigs:
      - job_name: "test-api"
        scrape_interval: 5s
        static_configs:
          - targets: ["172.3.61.111:8080"]
            labels:
              type: AWS-EC2

 

 

 

 

1.kubepug

 

https://kubepug.xyz/usage/

 

Usage - Kubepug - Kubernetes PreUpgrade API Deprecation checker

Usage Quick start Simply calling Kubepug without flags will result on the current Kubernetes context to be checked against the latest stable version. As an example, assuming you have a running Kubernetes cluster on version v1.19, and you have PodSecurityPo

kubepug.xyz

https://boostbrothers.github.io/2023-07-16-infra-eks-update/

참고 문서

 

Gitops를 활용한 AWS EKS Blue-Green 업데이트 적용기 | 비브로스 기술 블로그

안녕하세요, 비브로스 백엔드팀에서 인프라를 맡고 있는 박진홍입니다.

boostbrothers.github.io

 

2. kubent

https://github.com/doitintl/kube-no-trouble

 

GitHub - doitintl/kube-no-trouble: Easily check your clusters for use of deprecated APIs

Easily check your clusters for use of deprecated APIs - GitHub - doitintl/kube-no-trouble: Easily check your clusters for use of deprecated APIs

github.com

참고 :

https://jenakim47.tistory.com/97

 

Kubernetes Deprecated API Version Check 방법 (클러스터 버전 업그레이드 사전 작업)

개요 Kubernetes Version을 업그레이드하기 전에 현재 사용 중인 API Version이 Deprecated 되지 않는지 확인해야 한다. Deprecated 된다면 클러스터를 업그레이드 하기 전에 해당 워크로드를 업그레이드해야

jenakim47.tistory.com

https://www.jacobbaek.com/1506

최근 eks 클러스터를 구성하면서 node group 서브넷을 지정하지 않고 생성하여 프라이빗, 퍼블릿이 설정되었습니다.

 

eks 노드그룹에서 퍼블릭 서브넷을 사용하는 경우 퍼블릿 ipr가 자동으로 할당되고  2024년 2월 1일 부터 퍼블릭 ip 비용 정책이 변경되어

 

불 필요 비용이 발생할 것으로 생각 후 eks worknode 서브넷 그룹 변경하고 합니다!

 

 

 

 

처음에는 node그룹과 연결된 ASG 에서 서브넷을 수정 후 잘 처리가 됐다고 생각했지만, 추후 문제가 발생했습니다.

 

eks 버전 업데이트 및 최신 패치가 적용된 이미지 업데이트가 실패 했습니다.

 

이유는 eks 노드 그룹을 지정하고 있는 서브넷과 ASG 서브넷일 달라서 Degraded 상태로 변경되었습니다.

 

조치 방법은 기존 node를 마이그레이션 하는 방법 밖에 없습니다....

 

다행이 eksctl 클러스터를 구성해서 편하게 마이그레이션 했습니다.

 

방법 : https://docs.aws.amazon.com/eks/latest/userguide/migrate-stack.html

 

Migrating to a new node group - Amazon EKS

You must also tag your new Auto Scaling group appropriately (for example, k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/my-cluster) and update the command for your Cluster Autoscaler deployment to point to the newly tagged Auto Scaling group.

docs.aws.amazon.com

 

저는 node group yaml 작성 후 신규 노드 그룹을 생성 후 기존 node를 제거 했습니다.

 

현재 운영하는 서비스가 없어서 추가 이슈 사항이 있는지 확인 안해봤습니다. (실제 운영 서비스가 있으면 이슈가 있는지 확인이 필요합니다.)

 

참고 : 노드 health 방법

eksctl utils nodegroup-health --name=test-node  --cluster=test-eks

+ Recent posts