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-configconfig.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 1m1 kube-apiserver 36m kube-controllers 36m kube-state-metrics 34m kubelet 36m node-exporter 34m prometheus 36m prometheus-operator 37m- 1
etcdサービスモニター。
etcdサービスモニターが起動するには 1 分程度の時間がかかる場合があります。これで、Web インターフェイスに移動して
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-
Web インターフェイスで、
cluster-monitoring-viewロールに属するユーザーとしてログインします。 Status をクリックしてから Targets をクリックします。
etcdエントリーが表示される場合、etcdはモニターされています。
etcdがモニターされていても、Prometheus はまだetcdに対して認証できないため、メトリックスを収集できません。Prometheus 認証を
etcdに対して設定するには、以下を実行します。/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, clientAuthetcd.keyプライベートキーファイルを生成します。$ openssl genrsa -out etcd.key 2048etcd.csr証明書署名要求ファイルを生成します。$ openssl req -new -key etcd.key -out etcd.csr -subj "/CN=etcd" -config openssl.cnfetcd.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
認証を設定してから、Web インターフェイスの 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 アドレスが変更される場合は、この一覧を更新する必要があります。