Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

40.5. Ansible ベースのヘルスチェック

追加のヘルスチェックは、OpenShift Container Platform クラスターのインストールおよび管理に使用する Ansible ベースのツール で利用できます。この正常性チェックでは、現行の OpenShift Container Platform インストールによくあるデプロイメントの問題を報告できます。

これらのチェックは、ansible-playbook コマンドの使用 (クラスターインストール で使用されるのと同じ方式) によるか、または openshift-ansibleコンテナー化されたバージョン として実行できます。ansible-playbook 方式については、チェックは openshift-ansible RPM パッケージを使って行われます。コンテナー化方式の場合は、openshift3/ose-ansible コンテナーイメージが Red Hat Container レジストリー 経由で配布されます。各方式の使用例については、後続のセクションで説明されます。

以下のヘルスチェックは、デプロイされた OpenShift Container Platform クラスターを対象に、指定された health.yml playbook を使用して Ansible インベントリーファイルに対して実行されることが意図されている診断タスクのセットのこと指します。

警告

ヘルスチェック Playbook が環境に変更を加える可能性があるため、これらの Playbook は Ansible を使ってデプロイされたクラスターで、デプロイ時に使用したものと同じインベントリーファイルを使う場合にのみ使用できます。これらの変更には、チェックで必要な情報を収集できるように依存関係をインストールすることに関連するものです。そのような状況では、docker またはネットワーク設定などの追加のシステムコンポーネントは、現在の状態がインベントリーファイルの設定と異なる場合に変更される可能があります。これらのヘルスチェックは、使用するインベントリーファイルが既存のクラスター設定に変更を加えないことが予想される場合にのみ実行してください。

表40.1 正常性診断チェック

チェック名目的

etcd_imagedata_size

このチェックは、etcd クラスターの OpenShift Container Platform イメージデータの合計サイズを測定します。このチェックは計算されたサイズがユーザー定義の制限を超える場合に失敗します。制限が指定されない場合、このチェックはイメージデータのサイズが etcd クラスターで現在使用されている領域の 50 % 以上になる場合に失敗します。

このチェックに失敗することは、etcd の多くの領域が OpenShift Container Platform イメージデータによって使用されていることを示し、これにより、最終的には etcd クラスターがクラッシュする可能性があります。

ユーザー定義の制限は etcd_max_image_data_size_bytes 変数を渡すことで設定できます。たとえば、etcd_max_image_data_size_bytes=40000000000 を設定する場合、etcd に保存されるイメージデータの合計サイズが 40 GB を超えるとチェックが失敗します。

etcd_traffic

このチェックは、etcd ホストの通常よりも高いレベルのトラフィックを検知します。etcd 期間の警告と共に journalctl ログエントリーが見つかる場合に失敗します。

etcd パフォーマンスを強化する方法についての詳細は、Recommended Practices for OpenShift Container Platform etcd Hosts および Red Hat ナレッジベース を参照してください。

etcd_volume

このチェックにより、etcd クラスターのボリューム使用がユーザー指定の最大しきい値を超えないようにできます。最大しきい値が指定されていない場合、デフォルトは合計ボリュームサイズの 90% に設定されます。

ユーザー定義の制限は、etcd_device_usage_threshold_percent 変数を渡すことで設定できます。

docker_storage

docker デーモン (ノードおよびコンテナー化されたインストール) に依存するホストでのみ実行されます。docker の合計使用量がユーザー定義制限を超えないこと確認します。ユーザー定義の制限が設定されていない場合、docker 使用量の最大しきい値のデフォルトは利用可能な合計サイズの 90% になります。

合計パーセントの使用量についてのしきい値の制限は、max_thinpool_data_usage_percent=90 などのようにインベントリーファイルの変数で設定できます。

また、このチェックは docker のストレージが サポートされる設定 を使用していることを確認します。

curatorelasticsearchfluentdkibana

この一連のチェックは、Curator、Kibana、Elasticsearch、および Fluentd Pod がデプロイされており、これらが running 状態であることを検証し、接続を制御ホストと公開される Kibana URL 間で確立できることを検証します。これらのチェックは、openshift_logging_install_logging インベントリー変数が true に設定されている場合にのみ実行され、それらが クラスターロギング が有効にされているデプロイメントで実行されるようにします。

logging_index_time

このチェックは、ロギングスタックデプロイメントにおけるログ作成から Elasticsearch によるログ集計までの通常の時間差よりも値が高くなるケースを検知します。新規のログエントリーがタイムアウト内 (デフォルトでは 30 秒内) に Elasticserach によってクエリーされない場合に失敗します。このチェックはロギングが有効にされている場合にのみ実行されます。

ユーザー定義のタイムアウトは、openshift_check_logging_index_timeout_seconds 変数を渡すことで設定できます。たとえば、openshift_check_logging_index_timeout_seconds=45 を設定すると、新規作成されるログエントリーが 45 秒を経過しても Elasticsearch でクエリーされない場合に失敗します。

sdn

このチェックは、OpenShift Container Platform SDN の以下のクラスターレベルの診断を実行します。

  • マスターホストが kubelets に接続できることを検証します。
  • ノードがパケットを相互にルート指定できることを検証します。
  • ノードアドレスを検証します。
  • HostSubnet オブジェクトを検証します。

openshift_checks_output_dir 変数を ansible-playbook コマンドで指定する場合、このチェックにより、OpenShift Container Platform API からのネットワーク関連のオブジェクトが、指定されるディレクトリーにあるログ、OVS フロー、iptables ルールその他のネットワーク設定情報と共に保存されます。変数の設定方法については、以下の ansible-playbook コマンドの使用例を参照してください。

このチェックは、oc adm diagnostics コマンドが診断 Pod をスケジュールできないか、または診断 Pod が問題のトラブルシューティングに必要な情報を十分に提供しない場合の Pod またはインフラストラクチャーの問題を診断するのに役立ちます。

注記

インストールプロセスの一部として実行されることが意図されている同様のチェックセットについては、Configuring Cluster Pre-install Checks を参照してください。証明書の有効期限をチェックするための別のチェックのセットについては、Redeploying Certificates を参照してください。

40.5.1. ansible-playbook によるヘルスチェックの実行

ansible-playbook コマンドを使用して openshift-ansible のヘルスチェックを実行するには、Playbook ディレクトリーに切り替え、クラスターのインベントリーファイルを指定し、health.yml Playbook を実行します。

$ cd /usr/share/ansible/openshift-ansible
$ ansible-playbook -i <inventory_file> \
    playbooks/openshift-checks/health.yml

コマンドラインに変数を設定するには、key=value 形式の任意の必要な変数に -e フラグを組み込みます。以下に例を示します。

$ cd /usr/share/ansible/openshift-ansible
$ ansible-playbook -i <inventory_file> \
    playbooks/openshift-checks/health.yml \
    -e openshift_check_logging_index_timeout_seconds=45 \
    -e etcd_max_image_data_size_bytes=40000000000

特定のチェックを無効にするには、Playbook を実行する前にインベントリーファイルのコンマ区切りのチェック名の一覧と共に変数 openshift_disable_check を組み込みます。以下に例を示します。

openshift_disable_check=etcd_traffic,etcd_volume

または、ansible-playbook コマンドの実行時に -e openshift_disable_check=<check1>,<check2> で変数として無効にするチェックを設定します。