5.4. etcd 모니터링 구성
etcd
서비스가 올바르게 실행되지 않으면 전체 OpenShift Container Platform 클러스터가 성공적으로 작동하지 않을 수 있습니다. 따라서 etcd
모니터링을 구성하는 것이 좋습니다.
다음 단계에 따라 etcd
모니터링을 구성하십시오.
절차
모니터링 스택이 실행 중인지 확인합니다.
$ oc -n openshift-monitoring get pods NAME READY STATUS RESTARTS AGE alertmanager-main-0 3/3 Running 0 34m alertmanager-main-1 3/3 Running 0 33m alertmanager-main-2 3/3 Running 0 33m cluster-monitoring-operator-67b8797d79-sphxj 1/1 Running 0 36m grafana-c66997f-pxrf7 2/2 Running 0 37s kube-state-metrics-7449d589bc-rt4mq 3/3 Running 0 33m node-exporter-5tt4f 2/2 Running 0 33m node-exporter-b2mrp 2/2 Running 0 33m node-exporter-fd52p 2/2 Running 0 33m node-exporter-hfqgv 2/2 Running 0 33m prometheus-k8s-0 4/4 Running 1 35m prometheus-k8s-1 0/4 ContainerCreating 0 21s prometheus-operator-6c9fddd47f-9jfgk 1/1 Running 0 36m
클러스터 모니터링 스택의 구성 파일을 엽니다.
$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
config.yaml: |+
에서etcd
섹션을 추가합니다.마스터 노드의 정적 Pod에서
etcd
를 실행하는 경우 선택기를 사용하여etcd
노드를 지정할 수 있습니다.... data: config.yaml: |+ ... etcd: targets: selector: openshift.io/component: etcd openshift.io/control-plane: "true"
별도의 호스트에서
etcd
를 실행하는 경우 IP 주소를 사용하여 노드를 지정해야 합니다.... data: config.yaml: |+ ... etcd: targets: ips: - "127.0.0.1" - "127.0.0.2" - "127.0.0.3"
etcd
노드의 IP 주소가 변경되면 이 목록을 업데이트해야 합니다.
etcd
서비스 모니터가 실행 중인지 확인합니다.$ oc -n openshift-monitoring get servicemonitor NAME AGE alertmanager 35m etcd 1m 1 kube-apiserver 36m kube-controllers 36m kube-state-metrics 34m kubelet 36m node-exporter 34m prometheus 36m prometheus-operator 37m
- 1
etcd
서비스 모니터입니다.
etcd
서비스 모니터를 시작하는 데 최대 1분이 걸릴 수 있습니다.이제 웹 인터페이스로 이동하여
etcd
모니터링 상태에 대한 자세한 정보를 확인할 수 있습니다.URL을 가져오려면 다음을 실행합니다.
$ oc -n openshift-monitoring get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD ... prometheus-k8s prometheus-k8s-openshift-monitoring.apps.msvistun.origin-gce.dev.openshift.com prometheus-k8s web reencrypt None
-
https
를 사용하여prometheus-k8s
에 대해 나열된 URL로 이동합니다. 로그인합니다.
사용자가
cluster-monitoring-view
역할에 속하는지 확인합니다. 이 역할은 클러스터 모니터링 UI를 볼 수 있는 액세스를 제공합니다.예를 들어 사용자
developer를 cluster
-monitoring-view
역할에 추가하려면 다음을 실행합니다.$ oc adm policy add-cluster-role-to-user cluster-monitoring-view developer
-
웹 인터페이스에서
cluster-monitoring-view
역할에 속하는 사용자로 로그인합니다. Status(상태 )를 클릭한 다음 Targets(대상) 를 클릭합니다.
etcd 항목이 표시되면 etcd
가 모니터링됩니다.
etcd
가 모니터링되는 동안 Prometheus는 아직etcd
에 대해 인증할 수 없으므로 메트릭을 수집할 수 없습니다.etcd
에 대해 Prometheus 인증을 구성하려면 다음을 수행합니다.마스터 노드의
/etc/etcd/ca/ca.crt
및/etc/etcd/ca/ca.key
자격 증명 파일을 로컬 시스템으로 복사합니다.$ ssh -i gcp-dev/ssh-privatekey cloud-user@35.237.54.213
다음 내용을 사용하여
openssl.cnf
파일을 생성합니다.[ req ] req_extensions = v3_req distinguished_name = req_distinguished_name [ req_distinguished_name ] [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, keyEncipherment, digitalSignature extendedKeyUsage=serverAuth, clientAuth
etcd.key
개인 키 파일을 생성합니다.$ openssl genrsa -out etcd.key 2048
etcd.csr
인증서 서명 요청 파일을 생성합니다.$ openssl req -new -key etcd.key -out etcd.csr -subj "/CN=etcd" -config openssl.cnf
etcd.crt
인증서 파일을 생성합니다.$ openssl x509 -req -in etcd.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out etcd.crt -days 365 -extensions v3_req -extfile openssl.cnf
인증 정보를 OpenShift Container Platform에서 사용하는 형식으로 설정합니다.
$ cat <<-EOF > etcd-cert-secret.yaml apiVersion: v1 data: etcd-client-ca.crt: "$(cat ca.crt | base64 --wrap=0)" etcd-client.crt: "$(cat etcd.crt | base64 --wrap=0)" etcd-client.key: "$(cat etcd.key | base64 --wrap=0)" kind: Secret metadata: name: kube-etcd-client-certs namespace: openshift-monitoring type: Opaque EOF
이렇게 하면 etcd-cert-secret.yaml 파일이 생성됩니다.
인증 정보 파일을 클러스터에 적용합니다.
$ oc apply -f etcd-cert-secret.yaml
인증을 구성했으므로 웹 인터페이스의 Targets(대상) 페이지를 다시 방문하십시오.
etcd
가 올바르게 모니터링되고 있는지 확인합니다. 변경 사항을 적용하는 데 몇 분이 걸릴 수 있습니다.OpenShift Container Platform을 업데이트할 때
etcd
모니터링을 자동으로 업데이트하려면 Ansible 인벤토리 파일에서 이 변수를true
로 설정합니다.openshift_cluster_monitoring_operator_etcd_enabled=true
별도의 호스트에서
etcd
를 실행하는 경우 다음 Ansible 변수를 사용하여 IP 주소로 노드를 지정합니다.openshift_cluster_monitoring_operator_etcd_hosts=[<address1>, <address2>, ...]
etcd
노드의 IP 주소가 변경되면 이 목록을 업데이트해야 합니다.