프로메테우스는 시계열 DB이며, 파드가 Empty Dir이 기본 속성인 것을 생각하면,
파드가 죽었을 경우 그 동안 수집한 메트릭이 모두 사라진다는 것을 알 수 있습니다.
따라서 이를 방지하기 위해서 PVC를 통해 볼륨을 매핑하여 사용하여야 하는데,
AWS에서 EBS의 경우 Zone을 선택하여 사용해야하기 때문에,
이중화 삼중화 사중화등으로 구성한 경우, 프로메테우스가 해당 볼륨을 제대로 매핑할 수 없는 경우가 생깁니다.
물론, affinity 설정을 통해 PVC한 볼륨과 맞게 프로메테우스를 띄우시는 것도 방법입니다.
하지만, 이중화 구성을 못하기 때문에 EFS를 사용하여 해결하는 방법을 알아보도록 하겠습니다.
--- 수정 사항 ----------------------------------------------------------------------------
아래 구성 전 방화벽을 2049포트로 세팅하여 EFS와 노드간 SG 통신을 열어주셔야 합니다.
또한 VPC에서 DNS관련 세팅이 안되어있다면 쿼리가 되지 않으니 꼭 세팅해주시기 바랍니다.
-----------------------------------------------------------------------------------------
먼저, EFS Provisioner를 Helm을 통해 깔아서 EFS StorageClass, PV의 세팅을 해주도록 하겠습니다.
저는 아래와 같은 Value.yaml을 만들어서 매핑하여 사용하였습니다.
nodeSelector:
nodegroup-type: MANAGE
efsProvisioner:
efsFileSystemId: {efs_id}
awsRegion: ap-northeast-2
provisionerName: {ProvisionName}
storageClass:
reclaimPolicy: Retain
이후 Helm을 통해 설치하도록 하겠습니다. 아래 명령어를 입력해주세요
Helm2
helm install --name efs-provisioner stable/efs-provisioner --values ./values.yaml
Helm3
helm install -f ./values.yaml efs-provisioner stable/efs-provisioner
마지막으로, PVC를 생성하여 실제 EFS를 마운트 하도록 하겠습니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: prometheus-pvc
namespace: prometheus
annotations:
volume.beta.kubernetes.io/storage-class: aws-efs
labels:
type: prometheus-pvc
spec:
storageClassName: aws-efs
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
EFS Provisioner의 세팅은 끝났습니다.
이제 구성한 PVC를 가지고 Prometheus 세팅에서 EFS를 사용하시면 됩니다.
예시를 들어드리면 아래와 같습니다.
server:
resources:
requests:
memory: "1Gi"
limits:
memory: "2Gi"
nodeSelector:
nodegroup-type: MANAGE
persistentVolume:
enabled: true
storageClass: aws-efs
size: 60Gi
mountPath: /data/prometheus/server
existingClaim: prometheus-pvc
위와 같이 values.yaml을 세팅한 후, Helm을 통해 프로메테우스를 설치 및 업그레이드해주시면 볼륨이 매핑 됩니다.
helm upgrade -f ./values.yaml -n prometheus prometheus stable/prometheus
스케줄링이 걸려있는 EKS의 모니터링 상태입니다.
서버를 죽였다가 살리더라도, Prometheus 서버가 죽었을 시점에만 데이터가 없고
그 외에는 이전 수집된 메트릭이 잘 나오는 것을 확인할 수 있습니다.
'EKS > Prometheus & Grafana' 카테고리의 다른 글
Grafana - EKS Custom DashBoard 구성하기 (0) | 2020.07.25 |
---|---|
Grafana - Image Render Plugin & Slack Alert 연동 (0) | 2020.07.25 |
EKS Mornitoring - 2. AlertManager 세팅 (0) | 2020.02.10 |
EKS Mornitoring - 1. Prometheus & Grafana 세팅 (0) | 2020.02.06 |