관찰기능 이란 데이터 또는 프로세스를 볼 수 있는 기능을 말한다.
EKS 환경에서는 다양한 호스트와 컴포넌트들이 존재하며 이러한 컴포넌트는 영속적이지 않다. 따라서 전체적인 상황을 확인하여 인사이트를 얻고 안정적으로 운영하기 위해서는 관찰기능이 필요하다.
관찰기능을 지원해주는 다양한 오픈 소스도구들이 존재하며
EKS안의 정보들을 수집하기 위하여 daemonset으로 워커노드들에 에이전트를 설치하고, clusterdml 컨트롤플레인 로깅을 활성화 하고 IAM을 통하여 정보를 전달 해준다.
ex) Prometheus 모니터링
클러스터 내부의 지표들을 확인하여 노드 또는 Pod 들은 확장되고 축소 될 수 있다.
쿠버네티스에서는 3가지 방법의 자동 확장 기능을 제공 한다.
노드의 수를 최대,최소,필요 3가지로 지정해서 상황에 맞게 노드의 개수를 조정 한다. 평균 수요가 늘어난다면 노드의 개수가 늘어나며 수요가 줄어든다면 노드의 개수가 줄어든다.
노드의 개수가 줄어드는 과정에서 Pod가 종료되고 다시 시작될 수 있다.Pod는 노드간 이동의 개념이 아니라 제거되고 다시 생성되는 개념이다.
Cpu 사용률 또는 쿠버네티스 지표서버를 통해 정의한 지표를 기준으로 서비스를 자동으로 스케일 아웃하거나 스케일 인하는 구성요소로 Pod의 개수를 조절 한다.
Pod에 예약된 Cpu 및 메모리를 자동으로 조정하여 애플리케이션의 크기를 적절히 조정해준다. 즉 Pod의 성능을 조정한다.
클러스터 환경에서 로그 정보를 수집하고 인사이트를 얻기 위해서는 3가지 단계를 수행해야한다.
인기있는 세가지 오픈 소스인 Elastic Search, Logstash, Kibana로 로그를수집하는 아키텍처를 ELK 스택이라고 한다.
Pod의 로그
pod의 로느는 파드의 /var/log/pod/ 경로에 아래와 같이 존재하며
{namespace}{pod_name}/{container-name}/{count-number}.log
노드의 /var/log/conainers 경로에는 노드안의 파드들의 log가
{pod_name}{namespace}_{container-name}.log 형태로 존재한다.
ELK에서 Logstash 대신 Fluentd 를 사용한 아키텍처 이다.