ワーカー・ノードおよびアドオンの状態の監視

Kubernetes Engine (OKE)を使用して、ワーカー・ノードおよびコアKubernetesアドオンのヘルスおよびリソース使用率を監視する方法をご確認ください。

Kubernetes Engineを使用すると、ワーカー・ノードおよび主要なKubernetesアドオンのヘルスおよびリソース使用状況(CoreDNSやKubeProxyなど)を監視できます。管理対象アドオンをサポートする任意のクラスタで、ヘルスやリソースの使用状況を確認できます。運用メトリックおよびリソース・メトリックを収集することで、ワークロードが影響を受ける前に、潜在的な問題および異常を事前に検出してトラブルシューティングできます。

ヘルスおよびリソース使用率を監視できるように、Kubernetes Engineは、各ワーカー・ノードに次の2つの管理対象アドオンをデプロイします:

  • ObservabilityAgent: ObservabilityAgentアドオンは、kubelet、cAdvisor、CoreDNSおよびKubeProxyなどのソースからインフラストラクチャ・メトリックを収集します。
  • NodeProblemDetector: NodeProblemDetectorアドオンは、リソースの飽和状態やワーカー・ノード・レベルでのネットワークの問題などの問題を特定して表示します。管理対象NodeProblemDetector構成は、このツールまたは同様のツールの既存のデプロイメントとの競合を回避するように設計されています。

可観測性アドオンは、最小限のリソースを使用するように事前構成されており、大規模なカスタム構成を必要としません。スケジューリング優先度が低いため、システムおよびユーザーのワークロードがワーカー・ノード・リソースの主要な焦点のままになります。2つの可観測性アドオンのリソースがkube-systemネームスペースに追加されます。

ヘルスおよびリソース使用率を監視する場合、Kubernetes Engineは次のメトリックを収集します:

  • コンテナおよびポッドのCPU、メモリーおよびネットワーク使用量(kubeletおよびcAdvisorから)。
  • CoreDNS DNSリクエスト、エラー率およびレスポンス時間。
  • KubeProxyサービスのネットワーク統計。
  • ワーカー・ノードのヘルス情報、イベントおよび条件(NodeProblemDetectorアドオンから)。

収集されたデータは集約され、Prometheusと互換性のあるエンドポイントやツールなど、業界標準のエンドポイントやツールを使用してアクセスできるようになります。

インフラストラクチャおよびプラットフォーム・コンポーネントのメトリック・データのみが収集されることに注意してください。具体的には、識別可能なワークロードやアプリケーション・データは収集されないことに注意してください。

ヘルス監視機能の有効化および無効化

Kubernetes Engine (OKE)でヘルス監視機能を有効および無効にする方法をご覧ください。

コンソール、CLIおよびAPIを使用して、ヘルス監視機能を有効化および無効化できます。

    1. 「クラスタ」リスト・ページで、ヘルス監視機能を有効にするクラスタの名前を選択します。リスト・ページまたはクラスタの検索に関するヘルプが必要な場合は、クラスタのリストを参照してください。
    2. アドオンタブで アドオンの管理を選択します。
    3. ObservabilityAgentまたは NodeProblemDetectorの横にある Editオプションを選択します。
    4. 「<add-on name>の有効化」オプションを選択して、クラスタ・アドオンが以前にこのクラスタで有効になっていない場合はデプロイして有効にするか、クラスタ・アドオンが以前にデプロイされていても現在無効になっている場合は有効にします。
    5. 次の詳細を指定して、クラスタ・アドオンを構成します。
      • 自動更新:新しいバージョンが使用可能になったときにOracleによってアドオンが自動的に更新されるようにする場合は、このオプションを選択します。
      • バージョンの選択: Oracleがクラスタにデプロイするアドオンのバージョンを制御する場合は、このオプションを選択します。アドオンの更新はあなたが担当したことを示す警告です。このオプションを選択した場合は、クラスタにデプロイするアドオンのバージョンを「バージョン」リストから選択します。クラスタ・アドオンのサポート・バージョンを参照してください。
      • オプション:および値: (オプション)「構成の追加」を選択して、クラスタ・アドオンに引数として渡すキー/値のペアを1つ以上指定します。クラスタ・アドオンの構成引数を参照してください。
    6. 「Save changes」を選択します。

    ObservabilityAgentまたは NodeProblemDetectorアドオンを無効にするには、アドオンの横の Editオプションを選択し、Enable <add-on name>オプションを選択して Save changesを選択します。

  • oci ce cluster install-addonコマンドと必要なパラメータを使用して、ObservabilityAgentまたはNodeProblemDetectorアドオンをデプロイします:

    oci ce cluster install-addon --cluster-id <cluster-ocid> --addon-name ObservabilityAgent --region <region> [OPTIONS]
    oci ce cluster install-addon --cluster-id <cluster-ocid> --addon-name NodeProblemDetector --region <region> [OPTIONS]

    クラスタにデプロイされた ObservabilityAgentまたは NodeProblemDetectorアドオンを無効に(およびオプションで削除)するには、oci ce cluster disable-addonコマンドと必要なパラメータを使用します。

    oci ce cluster disable-addon --cluster-id <cluster-ocid> --addon-name ObservabilityAgent --is-remove-existing-add-on <true|false> [OPTIONS]
    oci ce cluster disable-addon --cluster-id <cluster-ocid> --addon-name NodeProblemDetector --is-remove-existing-add-on <true|false> [OPTIONS]

    CLIコマンドのパラメータおよび値の完全なリストは、CLIコマンド・リファレンスを参照してください。

  • クラスタにデプロイされたObservabilityAgentまたはNodeProblemDetectorアドオンをインストールまたは無効化(およびオプションで削除)するには、InstallAddon操作またはDisableAddon操作を実行します。

ラベルを使用した特定のワーカー・ノードまたはすべてのワーカー・ノードでのヘルス監視機能の有効化および無効化

ラベルを使用して、Kubernetes Engine (OKE)でワーカー・ノードでヘルス監視機能を有効および無効にする方法をご紹介します。

特定のワーカー・ノードからメトリックを収集するには、次のようにワーカー・ノードにラベルを適用します。

kubectl label node --overwrite oci.oraclecloud.com/oke-observability-agent-enabled=true <node-name>
kubectl label node --overwrite oci.oraclecloud.com/oke-node-problem-detector-enabled=true <node-name>

すべてのワーカー・ノードからメトリックを収集するには、次のようにラベルを適用します。

kubectl label node --overwrite --all oci.oraclecloud.com/oke-observability-agent-enabled=true
kubectl label node --overwrite --all oci.oraclecloud.com/oke-node-problem-detector-enabled=true

特定のワーカー・ノードでヘルス監視機能を無効にするには、次のようにワーカー・ノードにラベルを適用します。

kubectl label node --overwrite oci.oraclecloud.com/oke-observability-agent-enabled=false <node-name>
kubectl label node --overwrite oci.oraclecloud.com/oke-node-problem-detector-enabled=false <node-name>

ワーカー・ノードおよびアドオンの状態の監視

ObservabilityAgentアドオンとNodeProblemDetectorアドオンをインストールして有効化した後で、ワーカー・ノードとアドオンの状態を監視する方法をご確認ください。

ObservabilityAgentおよびNodeProblemDetectorアドオンをインストールおよび有効化した後、標準のKubernetesおよびモニタリング・ツールを使用してワーカー・ノードおよびアドオンの状態を監視します。

たとえば、ワーカー・ノードおよびアドオンに対して収集されたメトリックを問い合せてビジュアル化するには、PrometheusまたはOpenMetricsと互換性のあるモニタリング・ソリューションを使用します。これらのメトリックには、コンテナおよびポッド・リソースの使用状況、CoreDNSおよびKubeProxy統計、ワーカー・ノードのヘルス・イベントなどがあります。

ワーカー・ノード(mTLSエンドポイント)からのメトリックの直接取得

ObservabilityAgentアドオンは、各ワーカー・ノードにメトリック・エンドポイントを公開し、相互TLS (mTLS)でそれを保護します。メトリック・エンドポイントにアクセスできるのは、信頼できる認証局(CA)によって発行された有効なクライアント証明書を提示するクライアントのみです。CAは、他のコンポーネントがアイデンティティを検証し、暗号化された接続を確立できるように、証明書に署名する信頼できる発行者です。クライアント証明書は、クラスタのCAによって署名される必要があります。必要な証明書は、プロビジョニング後にワーカー・ノードで使用できます。

ワーカー・ノードからメトリックをフェッチするには、ノード(SSHなど)に接続し、次のようなコマンドを実行します。

sudo curl -v --cert /var/lib/kubelet/pki/kubelet-client-current.pem --key /var/lib/kubelet/pki/kubelet-client-current.pem --cacert /etc/kubernetes/ca.crt https://<node-private-ip>:9995/metrics 

ここでは:

  • --cert /var/lib/kubelet/pki/kubelet-client-current.pemは、クラスタCAによって信頼されるkubeletクライアント証明書を指定します。
  • --key /var/lib/kubelet/pki/kubelet-client-current.pemは、クライアント証明書の秘密キーを指定します(この構成では、同じPEMファイルに格納されます)。
  • --cacert /etc/kubernetes/ca.crtは、メトリック・エンドポイントによって提示されるサーバー証明書の検証に使用されるクラスタのルートCA証明書を指定します。
  • <node-private-ip>は、ワーカー・ノードのプライベートIPアドレスです(たとえば、10.0.10.121)。
  • https://<node-private-ip>:9995/metricsは、ノードのObservabilityAgentメトリック・エンドポイントです。

独自のメトリック・パイプライン(Prometheus互換スクレーパなど)を構成するときに、同じ証明書およびエンドポイントを使用して、ObservabilityAgentメトリックを収集およびビジュアル化できます。

アドオンの状態の確認

次のように、ObservabilityAgentおよび NodeProblemDetectorアドオンの状態を観察できます。

  • デプロイされた可観測性アドオンのDaemonSetステータスを確認するには、次のように入力します。

    kubectl get daemonset -n kube-system

    oke-dataplane-observability-agentおよびoke-node-problem-detector DaemonSetsが実行中であり、目的および準備完了のポッド数が監視対象のワーカー・ノードの数と一致することを確認します。

  • 予期しない結果や可観測性アドオンに関する問題が発生した場合は、次のように入力して、kube-systemネームスペースのObservabilityAgentおよびNodeProblemDetectorのポッド・ログを検査します:

    kubectl logs -n kube-system <pod-name>

    また、ワーカー・ノードに必要なラベルがあることも再度確認します。

クラスタ・アドオンの管理の詳細は、「クラスタ・アドオンの管理」を参照してください。