8장. 클러스터 로깅 배포
OpenShift Container Platform 클러스터를 4.4에서 4.5로 업데이트한 후 OpenShift Elasticsearch Operator 및 Cluster Logging Operator를 4.4에서 4.5로 업데이트할 수 있습니다.
클러스터 로깅 4.5에는 새로운 Elasticsearch 버전인 Elasticsearch 6.8.1과 강화된 보안 플러그인인 OpenDistro for Elasticsearch가 도입되었습니다. 새로운 Elasticsearch 버전은 Elasticsearch 데이터가 인프라, 애플리케이션 및 감사 유형별로만 인덱싱되는 새로운 Elasticsearch 데이터 모델을 도입합니다. 이전에는 데이터가 유형(인프라 및 애플리케이션) 및 프로젝트별로 인덱싱되었습니다.
새로운 데이터 모델로 인해 업데이트는 기존 사용자 정의 Kibana 인덱스 패턴 및 시각화를 새 버전으로 마이그레이션하지 않습니다. 업데이트 후 새 인덱스와 일치하도록 Kibana 인덱스 패턴 및 시각화를 다시 생성해야 합니다.
이러한 변경의 특성으로 인해 클러스터 로깅을 4.5로 업데이트할 필요가 없습니다. 그러나 OpenShift Container Platform 4.6으로 업데이트할 때 클러스터 로깅을 4.6으로 업데이트해야 합니다.
8.1. 클러스터 로깅 배포
OpenShift Container Platform 클러스터를 업데이트한 후 OpenShift Elasticsearch Operator 및 Cluster Logging Operator에 대한 서브스크립션을 변경하여 클러스터 로깅을 4.5에서 4.6으로 업데이트할 수 있습니다.
업데이트하는 경우:
- Cluster Logging Operator를 업데이트하기 전에 OpenShift Elasticsearch Operator를 업데이트해야 합니다.
OpenShift Elasticsearch Operator와 Cluster Logging Operator를 모두 업데이트해야 합니다.
OpenShift Elasticsearch Operator를 업데이트하고 Cluster Logging Operator는 업데이트하지 않으면 Kibana를 사용할 수 없습니다.
OpenShift Elasticsearch Operator보다 Cluster Logging Operator를 먼저 업데이트하면 Kibana가 업데이트되지 않고 Kibana 사용자 정의 리소스(CR)가 생성되지 않습니다. 이 문제를 해결하려면 Cluster Logging Operator Pod를 삭제하십시오. Cluster Logging Operator Pod가 재배포되면 Kibana CR이 생성됩니다.
클러스터 로깅 버전이 4.5 이전인 경우 4.6으로 업데이트하기 전에 클러스터 로깅을 4.5로 업그레이드해야 합니다.
사전 요구 사항
- OpenShift Container Platform 클러스터를 4.5에서 4.6으로 업데이트합니다.
클러스터 로깅 상태가 정상인지 확인합니다.
-
모든 Pod가
ready
상태입니다. - Elasticsearch 클러스터는 정상입니다.
-
모든 Pod가
- Elasticsearch 및 Kibana 데이터를 백업합니다.
프로세스
OpenShift Elasticsearch Operator를 업데이트합니다.
-
웹 콘솔에서 Operator
설치된 Operator를 클릭합니다. -
openshift-operators-redhat
프로젝트를 선택합니다. - OpenShift Elasticsearch Operator를 클릭합니다.
-
서브스크립션
채널을 클릭합니다. - 서브스크립션 업데이트 채널 변경 창에서 4.6을 선택하고 저장을 클릭합니다.
몇 초 정도 기다린 후 Operator
설치된 Operator를 클릭합니다. OpenShift Elasticsearch Operator가 4.6으로 표시됩니다. 예를 들면 다음과 같습니다.
OpenShift Elasticsearch Operator 4.6.0-202007012112.p0 provided by Red Hat, Inc
상태 필드가 성공으로 표시될 때까지 기다립니다.
-
웹 콘솔에서 Operator
Cluster Logging Operator 업데이트:
-
웹 콘솔에서 Operator
설치된 Operator를 클릭합니다. -
openshift-logging
프로젝트를 선택합니다. - Cluster Logging Operator를 클릭합니다.
-
서브스크립션
채널을 클릭합니다. - 서브스크립션 업데이트 채널 변경 창에서 4.6을 선택하고 저장을 클릭합니다.
몇 초 정도 기다린 후 Operator
설치된 Operator를 클릭합니다. Cluster Logging Operator가 4.6으로 표시됩니다. 예를 들면 다음과 같습니다.
Cluster Logging 4.6.0-202007012112.p0 provided by Red Hat, Inc
상태 필드가 성공으로 표시될 때까지 기다립니다.
-
웹 콘솔에서 Operator
로깅 구성 요소를 확인합니다.
모든 Elasticsearch Pod가 ready 상태인지 확인합니다.
$ oc get pod -n openshift-logging --selector component=elasticsearch
출력 예
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk 2/2 Running 0 31m elasticsearch-cdm-1pbrl44l-2-5c6d87589f-gx5hk 2/2 Running 0 30m elasticsearch-cdm-1pbrl44l-3-88df5d47-m45jc 2/2 Running 0 29m
Elasticsearch 클러스터가 정상인지 확인합니다.
$ oc exec -n openshift-logging -c elasticsearch elasticsearch-cdm-1pbrl44l-1-55b7546f4c-mshhk -- es_cluster_health
{ "cluster_name" : "elasticsearch", "status" : "green", } ...
Elasticsearch Cron 작업이 생성되었는지 확인합니다.
$ oc project openshift-logging
$ oc get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE curator 30 3,9,15,21 * * * False 0 <none> 20s elasticsearch-im-app */15 * * * * False 0 <none> 56s elasticsearch-im-audit */15 * * * * False 0 <none> 56s elasticsearch-im-infra */15 * * * * False 0 <none> 56s
로그 저장소가 4.6으로 업데이트되고 인덱스가
녹색
인지 확인합니다.$ oc exec -c elasticsearch <any_es_pod_in_the_cluster> -- indices
출력에
app-00000x
,infra-00000x
,audit-00000x
,.security
인덱스가 포함되어 있는지 확인합니다.예 8.1. 인덱스가 녹색 상태인 샘플 출력
Tue Jun 30 14:30:54 UTC 2020 health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open infra-000008 bnBvUFEXTWi92z3zWAzieQ 3 1 222195 0 289 144 green open infra-000004 rtDSzoqsSl6saisSK7Au1Q 3 1 226717 0 297 148 green open infra-000012 RSf_kUwDSR2xEuKRZMPqZQ 3 1 227623 0 295 147 green open .kibana_7 1SJdCqlZTPWlIAaOUd78yg 1 1 4 0 0 0 green open infra-000010 iXwL3bnqTuGEABbUDa6OVw 3 1 248368 0 317 158 green open infra-000009 YN9EsULWSNaxWeeNvOs0RA 3 1 258799 0 337 168 green open infra-000014 YP0U6R7FQ_GVQVQZ6Yh9Ig 3 1 223788 0 292 146 green open infra-000015 JRBbAbEmSMqK5X40df9HbQ 3 1 224371 0 291 145 green open .orphaned.2020.06.30 n_xQC2dWQzConkvQqei3YA 3 1 9 0 0 0 green open infra-000007 llkkAVSzSOmosWTSAJM_hg 3 1 228584 0 296 148 green open infra-000005 d9BoGQdiQASsS3BBFm2iRA 3 1 227987 0 297 148 green open infra-000003 1-goREK1QUKlQPAIVkWVaQ 3 1 226719 0 295 147 green open .security zeT65uOuRTKZMjg_bbUc1g 1 1 5 0 0 0 green open .kibana-377444158_kubeadmin wvMhDwJkR-mRZQO84K0gUQ 3 1 1 0 0 0 green open infra-000006 5H-KBSXGQKiO7hdapDE23g 3 1 226676 0 295 147 green open infra-000001 eH53BQ-bSxSWR5xYZB6lVg 3 1 341800 0 443 220 green open .kibana-6 RVp7TemSSemGJcsSUmuf3A 1 1 4 0 0 0 green open infra-000011 J7XWBauWSTe0jnzX02fU6A 3 1 226100 0 293 146 green open app-000001 axSAFfONQDmKwatkjPXdtw 3 1 103186 0 126 57 green open infra-000016 m9c1iRLtStWSF1GopaRyCg 3 1 13685 0 19 9 green open infra-000002 Hz6WvINtTvKcQzw-ewmbYg 3 1 228994 0 296 148 green open infra-000013 KR9mMFUpQl-jraYtanyIGw 3 1 228166 0 298 148 green open audit-000001 eERqLdLmQOiQDFES1LBATQ 3 1 0 0 0 0
로그 수집기가 4.6으로 업데이트되었는지 확인합니다.
$ oc get ds fluentd -o json | grep fluentd-init
출력에
fluentd-init
컨테이너가 포함되어 있는지 확인합니다."containerName": "fluentd-init"
로그 시각화 프로그램이 Kibana CRD를 사용하여 4.6으로 업데이트되었는지 확인합니다.
$ oc get kibana kibana -o json
출력에
ready
상태가 있는 Kibana pod가 포함되어 있는지 확인합니다.예 8.2. Kibana Pod가 준비된 샘플 출력
[ { "clusterCondition": { "kibana-5fdd766ffd-nb2jj": [ { "lastTransitionTime": "2020-06-30T14:11:07Z", "reason": "ContainerCreating", "status": "True", "type": "" }, { "lastTransitionTime": "2020-06-30T14:11:07Z", "reason": "ContainerCreating", "status": "True", "type": "" } ] }, "deployment": "kibana", "pods": { "failed": [], "notReady": [] "ready": [] }, "replicaSets": [ "kibana-5fdd766ffd" ], "replicas": 1 } ]
Curator가 4.6으로 업데이트되었는지 확인합니다.
$ oc get cronjob -o name
cronjob.batch/curator cronjob.batch/elasticsearch-im-app cronjob.batch/elasticsearch-im-audit cronjob.batch/elasticsearch-im-infra
출력에
elasticsearch-im-*
인덱스가 포함되어 있는지 확인합니다.
업데이트 후 작업
Log Forwarding API를 사용하여 로그를 전달하는 경우 OpenShift Elasticsearch Operator 및 Cluster Logging Operator가 4.6으로 완전히 업데이트되면 LogForwarding 사용자 정의 리소스(CR)를
교체해야 합니다.
ClusterLogForwarder
CR로