지난 2주차에 EKS 클러스터와 nginx 배포 관련 자원을 삭제하지 않은 상태를 기준으로 3주차가 진행됩니다.
3주차 과제의 중점은
1. 컨테이너 환경에서의 로그 수집을 위해 EFK(ElastiSearch + Fluentbit + Kibana) Stack을 구축하는 것
2. 로그 저장소인 ElastiSearch, 로그 수집기인 Fluentbit, 로그 시각화 툴인 Kibana를 EKS 환경에서 구축 입니다.
EFK(ElastiSearch + Fluentbit + Kibana)
쿠버네티스는 파드가 정상상태가 아니면 새로 생성합니다,
그러면 죽은 파드에 있는 컨테이너가 남긴 로그는 어디로 갈까요?
그렇기 떄문에 컨테이너의 로그를 로그 저장소에 수집해야합니다. (죽은 컨테이너의 로그도 남기기 위해)
Fluentd
컨테이너의 스트림 로그를 수집하는 로그 수집기 입니다. 모든 노드마다 동일하게 배포되어야합니다( Daemonset ).
과제에서는 서비스 로그 모니터링을 위해 사용하였으며
fluentd가 읽어들인 데이터는 tag, time 등으로 구성된 event로 처리됩니다.
ElasticSearch
텍스트, 숫자, 위치 기반 정보, 정형 및 비정형 데이터 등 모든 유형의 데이터를 위한 분산형 오픈 소스 검색 및 분석 엔진입니다.
과제에서는 로그를 저장하기 위한 대용량 저장소로 사용됩니다.
ElasticSearch yaml파일 작성 후 kubectl apply로 배포하여 사용하며
ElasticSearch를 NodePort type의 서비스로 배포하여 2주차 때 생성한 Nginx의 LoadBalancer에 연결하여 통신을 확인합니다.
Kibana
ElasticSearch와 연동하여 로그 시각화 합니다.
로그 시학화를 통해 문제 해결 및 예방이 가능 합니다.
Daemonset란
1. 쿠버네티스 컨트롤러(Deployment, ReplicaSet 등)
2. Daemonset은 Pod가 각각의 노드에 하나씩만 배포되게 하는 Pod 관리 컨트롤러
ElasticSearch 배포를 위해
elasticSearch.yaml 파일을 작성해 주셔야 합니다.
수업내용 특성상 elasticSearch.yaml 파일 명령어와 값을 공개할 수 없어.
과제에서 중요하게 다룬 내용을 말씀드리자면 포트 부분의 NodePort 부분과 port 부분이 중요합니다 ( ElasticSearch를 NodePort type의 서비스로 배포하여 2주차 때 생성한 Nginx의 LoadBalancer에 연결하여 통신을 확인하기 떄문 )
배포 , 배포된 pod 확인 , 배포된 서비스 확인 및 명령어 입니다.
web 화면 입니다.
배포를 위해
[EC2] → [로드밸런서] → [Listeners]탭 클릭 → [Edit]
정의한 프로토콜과 포트를 사용하여 연결요청을 확인합니다.
[EC2] → [로드밸런서] → [Security]탭 클릭 → Security Group ID 클릭 → security group 화면 에서 inbound rule 편집을 통해 LoadBalancer의 지정 포트로 외부 접근을 허용합니다.
kibana 또한
kibana.yaml 을 작성하여 NodePortType으로 배포합니다.
. Kibana 배포 후 pod, service, web 화면입니다.
ElasticSearch와 마찬가지로
리스너를 추가해주시고
Loadbalancer security group inbound rule을 추가해줍니다.
Fluentd 는 EKS 1.24 이상의 버전에서부터는 Fluentd가 아닌 FluentBit으로 대체되어 과제를 진행하였습니다.
fluentbit.yaml로 fluentd Daemonset pod을 배포하여 줍니다.
배포 및 배포된 서비스 확인입니다.
배포가 잘 되었다면 로그 수집을 위해 인덱스 패턴 생성을 해줍니다.
Management → [Index Patterns]
검색필터를 설정하여 nginx의 로그 확인 [Discover] → 검색필터 설정 → kuberntes.labels.run is my (nginx 배포 때 사용 한 Label)
EFK 구성 및 로그 시각화 까지 완료하였습니다.
저번주와 마찬가지로 EKS 클러스터는 시간당 비용이 발생하기 떄문에
kubernetes 자원을 먼저 삭제 해줍니다.
kubectl delete -f elasticSearch.yaml
kubectl delete -f kibana.yaml
kubectl delete -f fluentbit.yaml
kubectl delete -f nginx-service.yaml
kubectl delete -f nginx-deployment.yaml
그리고 저번주와 마찬가지로
EKS cluster와 Node Group 삭제해 주시면 됩니다.
콘솔에서 Nodegroup 삭제 확인은 EC2 > Autoscalingroup 삭제 확인이 되었는지 확인하시면 됩니다.
다음엔 마지막 4주차 슬랙과 연동하여 실시간 이상 확인으로 찾아 뵙겠습니다.
'AWS' 카테고리의 다른 글
AWS 교과서 - 2장 실습하기 (0) | 2024.05.18 |
---|---|
AWS 교과서 - 1장 ec2 생성 실습하기 (0) | 2024.05.14 |
대기업 IT현직자와 함께 클라우드 AWS 구축부터 운영까지 실무 AtoZ 리뷰 (4주차) (마지막) (0) | 2024.05.11 |
대기업 IT현직자와 함께 클라우드 AWS 구축부터 운영까지 실무 AtoZ 리뷰 (2주차) (0) | 2024.05.09 |
대기업 IT현직자와 함께 클라우드 AWS 구축부터 운영까지 실무 AtoZ 리뷰 (1주차) (0) | 2024.05.08 |