Distributed Cloud コネクテッドのトラブルシューティング

Google は、Google Distributed Cloud コネクテッド ハードウェアをリモートでモニタリングしてメンテナンスします。このため、Google のエンジニアは Distributed Cloud コネクテッド ハードウェアへの Secure Shell(SSH)アクセス権を持っています。Google が問題を検出すると、Google のエンジニアがお客様に連絡して、トラブルシューティングと解決を行います。お客様がご自身で問題を特定した場合は、Google サポートにすぐにご連絡いただき、診断と解決を行ってください。

Distributed Cloud コネクテッド ソフトウェアのアップグレード

このセクションでは、Metrics Explorer を使用して、Distributed Cloud コネクテッド クラスタがソフトウェア アップグレード中かどうかを確認する方法について説明します。

この手順では、次の Monitoring 指標を使用します。

  • 現在のクラスタ バージョン/edge_cluster/current_cluster_version): クラスタで実行されている Distributed Cloud コネクテッド ソフトウェアの現在のバージョンを示します。

  • ターゲット クラスタ バージョン/edge_cluster/target_cluster_version): クラスタがアップグレードする Distributed Cloud コネクテッド のターゲット バージョンを示します。

このセクションの手順を完了するには、次の前提条件を満たす必要があります。

  1. コンソールと Distributed Cloud コネクテッド プロジェクトにアクセスできること。 Google Cloud Google Cloud
  2. Monitoring 指標を表示できる Monitoring 閲覧者 IAM ロール。
  3. (省略可)返された結果をフィルタリングするための、ターゲット Distributed Cloud コネクテッド マシンの machine_id 値。

Metrics Explorer を使用してクラスタの現在のソフトウェア バージョンとターゲット ソフトウェア バージョンを確認する

  1. Metrics Explorer に移動します。

    1. コンソールで、[**モニタリング**] セクションに移動します。 Google Cloud

    2. 左側のナビゲーション ツリーで、[Metrics Explorer] をクリックします。

  2. ターゲット リソースタイプを選択します。

    1. [Metrics Explorer] ページで、[構成] ページに移動します。

    2. [指標を選択] をクリックします。

    3. 検索バーを使用して、クラスタ リソースタイプを検索します。完全なリソース識別子 edgecontainer.googleapis.com/Cluster を使用することもできます。

    4. 返された結果で、[クラスタ] リソースタイプをクリックします。

  3. クラスタの現在のソフトウェア バージョンを取得します。

    1. [指標] セクションで、current_cluster_version 値を検索します。

    2. [マシン稼働時間] 指標を選択します。完全パスは edgecontainer.googleapis.com/edge_cluster/current_cluster_version です。

    3. (省略可)[フィルタ] セクションを使用して、ターゲット machine_id 値でフィルタします。

  4. クラスタのターゲット ソフトウェア バージョンを取得します。

    1. [クエリを追加] をクリックします。

    2. [指標] セクションで、target_cluster_version 値を検索します。

    3. [ターゲット クラスタ バージョン] 指標を選択します。完全パスは edgecontainer.googleapis.com/edge_cluster/target_cluster_version です。

    4. (省略可)[フィルタ] セクションを使用して、ターゲット machine_id 値でフィルタします。

  5. 表示されたグラフで、クラスタのソフトウェア アップグレードのステータスを確認します。

    • [現在のクラスタ バージョン] 行と [ターゲット クラスタ バージョン] 行に異なる値が表示されている場合、クラスタはソフトウェア アップグレード中です。

    • [現在のクラスタ バージョン] 行と [ターゲット クラスタ バージョン] 行に同じ値が表示されている場合、クラスタはソフトウェア アップグレード中ではありません。

  6. 次のコマンドを使用して、前の手順の結果を確認します。

    gcloud edge-cloud container clusters describe CLUSTER_ID --location=REGION
    

    次のように置き換えます。

    • CLUSTER_ID: ターゲット クラスタの ID。
    • REGION: クラスタが作成された Google Cloud リージョン。

    コマンドの出力で、次のフィールドの値を確認します。

    • status フィールドの値が UPDATING の場合、クラスタはソフトウェア アップグレード中です。
    • clusterVersion フィールドと targetVersion フィールドの値が異なる場合は、Metrics Explorer から返された値と比較します。

結果を把握する

次の表に、Metrics Explorer と gcloud コマンドから返される結果を示します。

クラスタの状態 診断 解決策
正常
currentVersion 値と targetVersion 値が一致する
`status` 値が RUNNING
クラスタは、Distributed Cloud コネクテッド ソフトウェアのターゲット バージョンを実行しています。 なし
アップグレード中
値が より小さいtargetVersion
`status` 値が UPDATING
currentVersion
クラスタは、Distributed Cloud コネクテッド ソフトウェアのターゲット バージョンにアップグレードしています。 現在のクラスタ バージョンとターゲット クラスタ バージョンの値が一致するまで、Metrics Explorer でクラスタをモニタリングします。
停止
currentVersion 値が targetVersion より小さい状態が続く
`status` 値が UPDATING の状態が続く
クラスタ内の少なくとも 1 つのノードで、Distributed Cloud コネクテッド ソフトウェアのターゲット バージョンへのアップグレードが失敗しました 。 マシンの接続とシステムログを確認し、Google にお問い合わせください。
ロールバック中
currentVersion 値が targetVersion
`status` 値が UPDATING
クラスタは、Distributed Cloud コネクテッド ソフトウェアの以前のバージョンにロールバックしています。 Google にお問い合わせのうえ、ロールバックの理由を特定してください。

クラスタでのソフトウェア アップグレードが失敗した場合、またはクラスタが以前のソフトウェア バージョンにロールバックした場合は、次の点を確認してください。

  • ノードのヘルス 。次のセクションで説明するように、各物理 Distributed Cloud コネクテッド マシンにネットワーク接続があり、稼働時間が報告されていることを確認します。
  • メンテナンスの時間枠 。メンテナンス除外の時間枠が原因でソフトウェア アップグレードが一時停止されているかどうかを確認します。
  • システムログ 。システムログを調べて、Pod の強制排除のタイムアウトなど、ソフトウェア アップグレードの失敗の原因を特定します。

表に記載されている解決策で問題が解決しない場合は、影響を受けるマシンの machine_id 値と停止のタイムスタンプを添えて Google サポート にお問い合わせください。

Distributed Cloud コネクテッド マシンの再起動

このセクションでは、Metrics Explorer を使用して、Distributed Cloud コネクテッド 物理マシンが再起動したかどうかを確認し、再起動の理由を特定する方法について説明します。再起動をモニタリングすることで、計画的なメンテナンスの一環として再起動されたのか、ハードウェアの障害や電源の停止が原因で再起動されたのかを判断できます。

この手順では、次の Monitoring 指標を使用します。

  • マシン稼働時間/machine/uptime): 前回の再起動からの経過時間(秒単位)を示します。

  • マシンの再起動/machine/restart_count): デプロイ以降のターゲット マシンの再起動の合計回数を示します。

このセクションの手順を完了するには、次の前提条件を満たす必要があります。

  1. コンソールと Distributed Cloud コネクテッド プロジェクトにアクセスできること。 Google Cloud Google Cloud
  2. Monitoring 指標を表示できる Monitoring 閲覧者 IAM ロール。
  3. (省略可)返された結果をフィルタリングするための、ターゲット Distributed Cloud コネクテッド マシンの machine_id 値。

Metrics Explorer を使用してマシンの稼働時間と再起動回数を確認する

  1. Metrics Explorer に移動します。

    1. コンソールで、[**モニタリング**] セクションに移動します。 Google Cloud

    2. 左側のナビゲーション ツリーで、[Metrics Explorer] をクリックします。

  2. ターゲット リソースタイプを選択します。

    1. [Metrics Explorer] ページで、[構成] ページに移動します。

    2. [指標を選択] をクリックします。

    3. 検索バーを使用して、マシン リソースタイプを検索します。完全なリソース識別子 edgecontainer.googleapis.com/Machine を使用することもできます。

    4. 返された結果で、[マシン] リソースタイプをクリックします。

  3. マシンの稼働時間を確認します。

    1. [指標] セクションで、uptime 値を検索します。

    2. [マシン稼働時間] 指標を選択します。完全パスは edgecontainer.googleapis.com/machine/uptime です。

    3. (省略可)[フィルタ] セクションを使用して、ターゲット machine_id 値でフィルタします。

    4. 表示された時間グラフで、稼働時間グラフが継続的に上昇していることを確認します。稼働時間の値がゼロに低下して再起動した場合、マシンが再起動したことを示します。

  4. マシンの再起動回数を確認します。

    1. [指標] セクションで、restart_count 値を検索します。

    2. [マシンの再起動] 指標を選択します。完全パスは edgecontainer.googleapis.com/machine/restart_count です。

    3. (省略可)[フィルタ] セクションを使用して、ターゲット machine_id 値でフィルタします。

    4. 表示された時間グラフで、グラフの線が 0 のままになっていることを確認します。これは、再起動が発生していないことを示します。この線が 1 にスパイクした場合、マシンが再起動したことを示します。トラブルシューティングを行うために、再起動の正確なタイムスタンプをメモしてください。

    5. (省略可)グラフではなく個々のイベントを表示するには、ページの [集計] セクションに移動し、[アライメント期間] フィールドを 1 minute に、[系列ごとのアライメント] フィールドを [デルタ] に設定します。

結果を把握する

次の表に、Metrics Explorer から返される結果を示します。

クラスタの状態 診断 解決策
[安定]
[マシン稼働時間] 指標が着実に上昇している
[マシンの再起動] 指標のデルタが 0
マシンが再起動していません。 なし
クリーンな再起動
[マシン稼働時間] 指標が 0 に低下する
[マシンの再起動] 指標が 1 にスパイクする
マシンが正常に再起動し、 Google Cloudに再接続されました。 システムログを確認して、再起動の理由を特定します。
電源障害
[マシン稼働時間] 指標グラフにデータがないブレークがある
[マシンの再起動] 指標は、マシンの稼働時間のブレーク中に変更されていない
マシンが再起動する前に電源またはネットワーク接続が切断されました。 電源ケーブルとネットワーク ケーブル、ローカル ネットワーク構成、LED インジケータのステータスを確認します。
断続的
[マシン接続] 指標の値が 01 の間で交互に変化する
[ネットワーク接続] 指標の値が 01 の間で交互に変化する
ネットワーク接続が不安定、パケットロス、レイテンシが過剰。 ローカル ネットワークで輻輳とハードウェアの障害を確認します。

表に記載されている解決策で問題が解決しない場合は、影響を受けるマシンの machine_id 値と停止のタイムスタンプを添えて Google サポート にお問い合わせください。

Distributed Cloud コネクテッド マシンの接続

このセクションでは、Cloud Monitoring の Metrics Explorer 機能を使用して、Distributed Cloud コネクテッド マシンのインターネット接続と Google Cloud 接続 を確認する方法について説明します。

この手順では、次の Monitoring 指標を使用します。

  • マシン接続 (/machine/connected): マシンが に接続されているかどうかを示します Google Cloud。

  • ネットワーク接続/machine/network/connectivity): マシンのプライマリ ネットワーク インターフェースがインターネットに接続されているかどうかを示します。

このセクションの手順を完了するには、次の前提条件を満たす必要があります。

  1. コンソールと Distributed Cloud コネクテッド プロジェクトにアクセスできること。 Google Cloud Google Cloud
  2. Monitoring 指標を表示できる Monitoring 閲覧者 IAM ロール。
  3. (省略可)返された結果をフィルタリングするための、ターゲット Distributed Cloud コネクテッド マシンの machine_id 値。

Metrics Explorer を使用してマシンの接続を確認する

  1. Metrics Explorer に移動します。

    1. コンソールで、[**モニタリング**] セクションに移動します。 Google Cloud

    2. 左側のナビゲーション ツリーで、[Metrics Explorer] をクリックします。

  2. ターゲット リソースタイプを選択します。

    1. [Metrics Explorer] ページで、[クエリ] ページに移動します。

    2. 検索バーを使用して、マシン リソースタイプを検索します。完全なリソース識別子 edgecontainer.googleapis.com/Machine を使用することもできます。

    3. 返された結果で、[マシン] リソースタイプをクリックします。

  3. マシンと の接続を確認します Google Cloud:

    1. [指標] セクションで、connected 値を検索します。

    2. [マシン接続] 指標を選択します。完全パスは edgecontainer.googleapis.com/machine/connected です。

    3. (省略可)[フィルタ] セクションを使用して、ターゲット machine_id 値でフィルタします。

    4. 表示された時間グラフで、[正常] 行が 100% のままになっていることを確認します。この値が 0% または [異常] になった場合、マシンは 示された時間に との接続を失っています Google Cloud 。

  4. マシンのインターネット接続を確認します。

    1. [指標] セクションで、connectivity 値を検索します。

    2. [ネットワーク接続] 指標を選択します。完全パスは edgecontainer.googleapis.com/machine/network/connectivity です。

    3. (省略可)[フィルタ] セクションを使用して、ターゲット machine_id 値でフィルタします。

    4. 表示された時間グラフで、[正常] 行が 100% のままになっていることを確認します。この値が 0% または [異常] になった場合、マシンは 示された時間にインターネット接続を失っています。

結果を把握する

次の表に、Metrics Explorer から返される結果を示します。

クラスタの状態 診断 解決策
正常
[マシン接続] 指標の値が 1
[ネットワーク接続] 指標の値が 1
通常のオペレーション。 なし
[切断]
[マシン接続] 指標の値が 0
[ネットワーク接続] 指標の値が 1
マシンはインターネットに接続されていますが、 Google Cloudに接続できません。 Google サービスと API エンドポイントのファイアウォール ルール を確認します。Distributed Cloud コネクテッド エージェントがマシンで実行されていることを確認します。
[分離]
[マシン接続] 指標の値が 0
[ネットワーク接続] 指標の値が 0
マシンがインターネットに接続されていません。 電源ケーブルとネットワーク ケーブル、ローカル ネットワーク構成、LED インジケータのステータスを確認します。VLAN とルーティングの構成を確認します。
断続的
[マシン接続] 指標の値が 01 の間で交互に変化する
[ネットワーク接続] 指標の値が 01 の間で交互に変化する
ネットワーク接続が不安定、パケットロス、レイテンシが過剰。 ローカル ネットワークで輻輳とハードウェアの障害を確認します。

いずれかの指標の値が 0 のままになっている場合は、表に記載されているトラブルシューティングの手順に沿って解決してください。問題が解決しない場合は、影響を受けるマシンの machine_id 値と停止のタイムスタンプを添えて Google サポート にお問い合わせください。

Pending 状態のままになっている仮想マシン

次のいずれかの条件に該当する場合、仮想マシン ワークロードが Pending 状態のままになり、ノードでスケジュール設定に失敗することがあります。

  • Distributed Cloud コネクテッド が、CPU 時間、メモリ、ディスク容量などのリクエストされたリソースを仮想マシンに割り当てることができない。
  • 仮想マシンの構成に障害がある。
  • 仮想マシンのストレージに障害がある。
  • ターゲット ノードが Taint されている。

この問題を解決するには、次の操作を行います。

  1. クラスタの認証情報を取得するの説明に従って、クラスタの認証情報を取得します。

  2. 影響を受ける仮想マシンに関する情報を取得します。

    kubectl describe virtualmachine VM_NAME -n NAMESPACE
    

    次のように置き換えます。

    • VM_NAME: ターゲット仮想マシンの名前。
    • NAMESPACE: ターゲット仮想マシンの Namespace。

    このコマンドでは、次のような出力が返されます。

    Status:
    ...
    State:                    Pending
    ...
    Events:
    Type     Reason                  Age   From                       Message
    ----     ------                  ----  ----                       -------
    Normal   SuccessfulCreate        15m   virtualmachine-controller  Created virtual machine my-stuck-vm
    Warning  DiskProvisioningFailed  14m   virtualmachine-controller  Failed to provision disk: DataVolume my-stuck-vm-data-disk not ready
    Warning  PVCNotBound             14m   virtualmachine-controller  PersistentVolumeClaim my-stuck-vm-data-disk is in phase Pending
    Warning  VMINotCreated           10m   virtualmachine-controller  VirtualMachineInstance cannot be created: dependencies not ready
    

    コマンドの出力には、リソース制約、スケジューリングの失敗、ストレージの障害、その他の問題を示すメッセージが含まれている場合があります。

  3. 出力結果を調べて、次のセクションで説明するように、スケジューリングの失敗の原因を特定します。

リソースの不足

CPU、メモリ、ディスク容量などのリソースが不足していることを示すメッセージが表示されることがあります。次に例を示します。

5/8 nodes are available: 3 Insufficient memory, 3 Insufficient CPU.

この問題を解決するには、影響を受ける仮想マシンとノードでスケジュールされている他のワークロードに割り当てられているリソースを確認し、ビジネスニーズに応じて次の操作を行います。

  • ノードでスケジュールされている他のワークロードをスケールダウンする。
  • 影響を受ける仮想マシンに割り当てられるリソースの量を減らす。
  • 影響を受けるクラスタにマシンを追加する。

Taint されたノード

ターゲット ノードが Taint されていることを示すメッセージが表示されることがあります。次に例を示します。

5/8 nodes are available: 3 node(s) had taint {<taint-key>:<taint-value>}, that the pod didn't tolerate.

この問題を解決するには、次の操作を行います。

  1. 次のコマンドを使用して、ノードの Taint を確認します。

    kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
    

    このコマンドでは、次のような出力が返されます。

    NAME                           TAINTS
    node-name-1   [map[effect:PreferNoSchedule key:node-role.kubernetes.io/master] map[effect:PreferNoSchedule key:node-role.kubernetes.io/control-plane]]
    node-name-2   <none>
    
  2. 次のいずれかを行います。

    • 予期しない Taint の場合は、Taint と Toleration の説明に従って削除します。
    • 予期される Taint の場合は、Taint と Toleration の説明に従って、対応する Toleration を仮想マシンの構成に追加します。

ストレージの障害

仮想マシンのストレージに障害があることを示すメッセージが表示されることがあります。次に例を示します。

5/8 nodes are available: 3 node(s) had volume node affinity conflict, 3 node(s) had unbound immediate PersistentVolumeClaims.

このメッセージは、対応する永続ボリュームがターゲット ノードにマウントできないことを示している可能性があります。

この問題を解決するには、次の操作を行います。

  1. 次のコマンドを使用して、影響を受ける仮想マシンの Namespace 内の永続ボリューム要求(PVC)のステータスを取得します。

    kubectl get pvc -n NAMESPACE
    

    NAMESPACE は、ターゲット Namespace の名前に置き換えます。

    このコマンドでは、次のような出力が返されます。

    NAME                                               STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS            AGE
    windows-robin-disk-0                               Bound     pvc-b1a1d264-84bf-4e58-857d-f37f629d5082   25Gi       RWX            robin-block-immediate   30h
    windows-robin-disk-1                               Bound     pvc-0130b9a8-7fed-4df0-8226-d79273792a16   25Gi       RWX            robin-block-immediate   30h
    windows-robin-vm-0-restored-windows-robin-disk-0   Pending                                                                        gce-pd-gkebackup-in     26m
    
  2. 対応する PVC のステータスが Bound であることを確認します。ステータスが Pending の場合、ストレージ サブシステムがボリュームのプロビジョニングに失敗しています。このような場合は、ストレージ サブシステムの構成のトラブルシューティングを行い、適切な StorageClass が使用可能であることを確認する必要があります。