[OpenShift Origin: OKD] Metric Server 설치 방법

2020. 9. 27. 21:25Engineering/Container&Kubernetes

Content

  1. Metric Server란
  2. Metric Server Storage
  3. Metric Server 수동 설치 방법
  4. Metric Server 자동 설치 적용하기

OKD 플랫폼에서 노드 자원을 모니터링 하기 위한 Metric Server 대해 이해하고, 설치하는 방법에 대해 알아봅니다.

 


1. Metric Server란

Kubernetes 구성요소로 kubelet 있습니다.

kubelet 클러스터를 구성하는 모든 노드의 자원 정보(metric)을 수집합니다.

 

OKD 플랫폼의 Metric Server Kubelet 여러 노드들로부터 수집하는 metric 정보들을  하나의 OKD 콘솔에서 통합하여 보여줍니다.

Metric Server 수집하는 metric으로는 노드들의 CPU, 메모리, network 사용량 있습니다.

 

OKD Metric Server 기본적으로 Hawkular Metrics 라는 엔진을 사용합니다.

Hawkular Metircs 엔진은 수집한 metric 데이터를 Cassandra DB 저장하는 녀석입니다.

 

OKD 에서 제공하는 부가적인 기능들

Metric Server가 설치 되어야만 사용 가능한 기능들 있습니다.

대표적으로 아래 2가지 입니다.

  • Horizontal Pod Autoscaler (HPA)
    : 
    노드 자원 사용량에 따라 POD 수를 scale in/out 하므로 metric server 필요합니다.
  • Prometheus & Grafana 
    : metric server
     통해 수집된 자원량을 시각화 하고, alert 자동 발송 등의 기능을 제공하는 컨테이너 모니터링 도구 입니다. Metric server 기반으로 동작하기 때문에  기능 사용을 위해서는metric server 설치가 필수적입니다.

 

기본적으로 제공되는 OKD 자동설치 Ansible 스크립트에는 Metric Server 설치 옵션이 False로 설정되어 있으므로,

아래 2가지 기능 사용을 위해서는 Metric Server 수동으로 설치하시거나

OKD 자동 설치 스크립트의 metric server 설치 옵션값을 바꿔 주셔야 합니다.

(수동설치 자동설치 방법은 3, 4 장에서 소개드리겠습니다.)

 

2. Metric Server Storage

Metric Server 수집하는 데이터들은 어디에 저장될까요?

2가지 옵션이 있습니다.

  • POD Volume
  • Persistent Storage

입니다.

 

2-1. POD Volume

POD Volume POD 사용하는 임시 저장 공간입니다.

POD 생애주기를 따르기 때문에, POD가 삭제되면 POD Volume도 함께 삭제 됩니다.

따라서 Metric Server 스토리지를 POD Volume으로 설정하는 경우,

Metric Server POD 삭제되면 metric 데이터들도 함께 삭제됩니다.

 

*POD Volume을 Metric Server Storage로 사용하는 경우, Cassandra POD가 실행되고 있는 노드의 /var/lib/origin/openshift.local.volumes/pods에 데이터가 저장됩니다.

 

2-2. Persistent Storage

Persistent volume (PV) metric 데이터를 저장하도록 설정할 있습니다.

PV는 POD가 삭제되어도 데이터가 삭제되지 않는 저장소 입니다.

따라서 metric 데이터가 날아가지 않도록 유지해야하는 경우,

Persistent Storage(Volume) 사용하는 것이 권장됩니다.

 

 

3. Metric Server 수동 설치 방법

앞서 말씀드렸지만 OKD 기본 설치 스크립트를 사용하신 경우, metric server 설치되지 않습니다.

 

상황에서 HPA 사용하시는 경우,

아래와 같이 'Failed Get Resource Metric' 이라는 에러가 발생합니다.

 

 

그럼 이제 Metric Server 설치되어 있지 않은 OKD 클러스터에

Metric Server 수동으로 설치하는 법을 알려드리겠습니다.

 

Metric Server 수동설치 또한 Ansible 스크립트로 제공되고 있습니다.

덕분에 아주 손쉽게 ansible 명령 하나로 완료할 있습니다.

$ ansible-playbook -i [inventory file] /usr/share/ansible/openshift-ansible/playbooks/metrics-server/config.yaml -e openshift_metrics_server_install=true

명령을 실행하면, 설치 과정에 대한 로그를 출력해주며,

마지막으로 'INSTALLER STATUS' 보여줍니다.

사진 처럼 INSTALLER STATUS 모두 Complete이면 정상 설치 완료 것입니다!

 

설치가 되었으면, openshift-metrics-server라는 네임스페이스가 새로 생성된 것을 보실 있습니다.

그리고 openshift-metrics-server 네임스페이스에 metrics-server라는 POD running하고 있다면 설치하신 metrics-server 정상 동작하고 있다는 뜻입니다!

$ oc get ns
$ oc get pod --namespace=openshift-metrics-server

 

그럼, metric server 자원을 수집 하고 있는지도 확인해 볼까요?

아래 명령 수행시, 노드 자원 정보가 표기되고 있으면 metric server 동작하고 있는 것입니다.

$ oc admin top node

 

4. Metric Server 자동 설치 적용하기

그럼, OKD 설치 스크립트에 Metric Server 자동으로 설치되도록 수정하여 봅시다.

 

Inventory 파일에 아래 줄을 추가 합니다.

[OSEv3:vars]

openshift_metrics_install_metrics=true

 

그리고, Metric server 스토리지 옵션을 설정 해야합니다.

특별한 설정을 하지 않는 경우 POD Volume의 emptyDir 타입으로 Metric server 볼륨이 설정 됩니다.

 

Persistent Volume Metric server 볼륨으로 사용하고 싶은 경우,

다양한 볼륨 종류에 따라 옵션값들을 설정 해주셔야 합니다.

 

저는 NFS 볼륨이 특정 노드에 마운트되어 있는 NFS 볼륨을 Metric Server 볼륨으로 사용하는 경우만 설명드리겠습니다.

Persistent Volume 설정하는 방법은 공식문서 참고하시기 바랍니다.

 

예를 들어, 제가 nfs.example.com 호스트 네임을 갖는 노드에

'/exports/metrics' 경로로 NFS 볼륨을 마운트한 상황 가정합시다.

그리고 NFS 볼륨을 Metric Server 볼륨으로 사용하려면 아래와 같은 옵션들을 설정하면 됩니다.

 

[OSEv3:vars]



# nfs_directory must conform to DNS-1123 subdomain must consist of lower case

# alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character



openshift_metrics_storage_kind=nfs

openshift_metrics_storage_access_modes=['ReadWriteOnce']

openshift_metrics_storage_host=nfs.example.com

openshift_metrics_storage_nfs_directory=/exports

openshift_metrics_storage_volume_name=metrics

openshift_metrics_storage_volume_size=10Gi