연재 시리즈

EKS 스터디 - 4주차 1편 - 컨트롤 플레인 로깅

악분 2023. 5. 7. 16:39
반응형

안녕하세요. 이 글은 EKS 컨트롤 플레인 로그수집 방법을 설명합니다.

 

EKS 컨트롤 플레인 로그란?

컨트롤 플레인 발생한 이벤트를 EKS 옵션을 설정하여 로그로 남길 수 있습니다. 디폴트 설정은 로깅이 비활성 되어 있습니다. 수집된 컨트롤 플레인 로그는 cloudwatch에서 있습니다.

 

로그 활성화 방법

디폴트로 비활성화 되어 있으므로 수동으로 로그옵션을 활성화해야 합니다.

 

콘솔에서 로그 활성화

EKS대시보드에서 Logging필드에서 로깅을 활성화할 있습니다.

 

컨트롤 플레인 로그는 총 5개 로깅을 선택해서 수집합니다.

 

eksctl으로 활성화

로깅 설정은 CloudWatch필드로 설정합니다.

cloudWatch:
  clusterLogging:
    enableTypes: ["api", "audit", "authenticator", "controllerManager", "scheduler"]
    logRetentionInDays: 1

 

EKS클러스터를 처음 생성하는 경우 create인자로 로깅을 설정합니다.

eksctl create cluster --config-file=<path>

 

클러스터가 기존에 있을 경우 utils인자로 로깅 설정을 업데이트합니다.

eksctl utils update-cluster-logging --config-file=<path>

 

로깅 탐색

수집된 컨트롤 플레인 로그는 cloudwatch “Log groups”에서 있습니다. Log group이름은 EKS 클러스터 이름입니다.

 

EKS로깅설정에서 선택한 로그가 Log stream으로 저장됩니다.

 

log stream 선택하면 시간대별로 쌓인 로그가 있습니다.

 

로그 검색

로그는 Log insights에서 검색할 있습니다. Log insight 쿼리를 사용하여 로그를 조회하는 기능입니다. 검색할 EKS클러스터를 선택하고 쿼리를 실행하면 원하는 컨트롤 플레인 로그를 찾을 있습니다.

 

예제: 비정상 Managed 노드를 검색

컨트롤 플레인 로그를 검색하여 장애상태를 확인할 있습니다. 예를 들어 데이터 Managed 노드가 NotReady상태를 로그로 조회 가능합니다.

 

Managed 노드를 강제로 삭제하여 NodeNotReady상태를 발생시켜보겠습니다. EC2 Instnace 선택하고 Instance 삭제합니다. Instance 삭제되면 Auto Scaling Group 다시 EC2 Instance 생성합니다.

 

Log insight메뉴로 이동해서 아래 쿼리를 실행합니다. 강제로 종료한 EC2 Instance때문에 NodeNotReady상태 로그가 검색됩니다. 만약 조회가 안된다면 5분정도 기다린 다시 검색하시면 됩니다. 아직 로그 수집이 안되어서 몇 분 기다려야 합니다.

fields @timestamp, @message
| filter @message like /NodeNotReady/
| sort @timestamp desc

 

반응형