7.10. Windows コンテナーのワークロード関連の問題のトラブルシューティング


7.10.1. Windows Machine Config Operator がインストールされない

Windows Machine Config Operator (WMCO) のインストールプロセスを完了しているが、Operator が InstallWaiting フェーズのままである場合、問題はネットワークに関係する問題によって引き起こされている可能性があります。

WMCO では、OVN-Kubernetes を使用して OpenShift Container Platform クラスターをハイブリッドネットワークで設定する必要があります。WMCO はハイブリッドネットワークが利用可能でない状態でインストールプロセスを完了できません。これは、複数のオペレーティングシステム (OS) および OS バリアント上でノードを管理するために必要です。これは、クラスターのインストール時に完了する必要があります。

詳細は、ハイブリッドネットワークの設定 を参照してください。

7.10.2. Windows マシンがコンピュートノードにならない理由の調査

Windows マシンがコンピュートノードにならない理由には、各種の理由があります。この問題を調査する最適な方法として、Windows Machine Config Operator (WMCO) ログを収集することができます。

前提条件

  • Operator Lifecycle Manager (OLM) を使用して Windows Machine Config Operator (WMCO) をインストールしている。
  • Windows コンピュートマシンセットを作成しました。

手順

  • 以下のコマンドを実行して WMCO ログを収集します。

    $ oc logs -f deployment/windows-machine-config-operator -n openshift-windows-machine-config-operator

7.10.3. Windows ノードへのアクセス

Windows ノードは oc debug node コマンドを使用してアクセスできません。このコマンドでは、ノードで特権付き Pod を実行する必要があります。これは Windows ではまだサポートされていません。代わりとして Windows ノードは、セキュアシェル (SSH) または Remote Desktop Protocol (RDP) を使用してアクセスできます。どちらの方法にも SSH bastion が必要です。

7.10.3.1. SSH を使用した Windows ノードへのアクセス

セキュアシェル (SSH) を使用して Windows ノードにアクセスできます。

前提条件

  • Operator Lifecycle Manager (OLM) を使用して Windows Machine Config Operator (WMCO) をインストールしている。
  • Windows コンピュートマシンセットを作成しました。
  • cloud-private-key シークレットで使用されるキーおよび ssh-agent に対してクラスターを作成する際に使用されるキーを追加している。セキュリティー上の理由から、キーは使用後は ssh-agent から削除するようにしてください。
  • ssh-bastion Pod を使用して Windows ノードに接続している。

手順

  • 以下のコマンドを実行して Windows ノードにアクセスします。

    $ ssh -t -o StrictHostKeyChecking=no -o ProxyCommand='ssh -A -o StrictHostKeyChecking=no \
        -o ServerAliveInterval=30 -W %h:%p core@$(oc get service --all-namespaces -l run=ssh-bastion \
        -o go-template="{{ with (index (index .items 0).status.loadBalancer.ingress 0) }}{{ or .hostname .ip }}{{end}}")' <username>@<windows_node_internal_ip> 1 2
    1
    Amazon Web Services (AWS) の Administrator、または Microsoft Azure の capi などのクラウドプロバイダーのユーザー名を指定します。
    2
    以下のコマンドを実行して検出可能な、ノードの内部 IP アドレスを指定します。
    $ oc get nodes <node_name> -o jsonpath={.status.addresses[?\(@.type==\"InternalIP\"\)].address}

7.10.3.2. RDP を使用した Windows ノードへのアクセス

Remote Desktop Protocol (RDP) を使用して Windows ノードにアクセスできます。

前提条件

  • Operator Lifecycle Manager (OLM) を使用して Windows Machine Config Operator (WMCO) をインストールしている。
  • Windows コンピュートマシンセットを作成しました。
  • cloud-private-key シークレットで使用されるキーおよび ssh-agent に対してクラスターを作成する際に使用されるキーを追加している。セキュリティー上の理由から、キーは使用後は ssh-agent から削除するようにしてください。
  • ssh-bastion Pod を使用して Windows ノードに接続している。

手順

  1. 以下のコマンドを実行して SSH トンネルを設定します。

    $ ssh -L 2020:<windows_node_internal_ip>:3389 \ 1
        core@$(oc get service --all-namespaces -l run=ssh-bastion -o go-template="{{ with (index (index .items 0).status.loadBalancer.ingress 0) }}{{ or .hostname .ip }}{{end}}")
    1
    以下のコマンドを実行して検出可能な、ノードの内部 IP アドレスを指定します。
    $ oc get nodes <node_name> -o jsonpath={.status.addresses[?\(@.type==\"InternalIP\"\)].address}
  2. 生成されるシェル内で Windows ノードに対して SSH を実行し、以下のコマンドを実行してユーザーのパスワードを作成します。

    C:\> net user <username> * 1
    1
    AWS の Administrator、または Azure の capi などのクラウドプロバイダーのユーザー名を指定します。

RDP クライアントを使用して、localhost:2020 で Windows ノードにリモートでアクセスできるようになりました。

7.10.4. Windows コンテナーの Kubernetes ノードログの収集

Windows コンテナーロギングは Linux コンテナーロギングとは異なる仕方で機能します。Windows ワークロードの Kubernetes ノードログは、デフォルトで C:\var\logs ディレクトリーにストリーミングされます。したがって、そのディレクトリーから Windows ノードのログを収集する必要があります。

前提条件

  • Operator Lifecycle Manager (OLM) を使用して Windows Machine Config Operator (WMCO) をインストールしている。
  • Windows コンピュートマシンセットを作成しました。

手順

  1. C:\var\logs のすべてのディレクトリー下でログを表示するには、以下のコマンドを実行します。

    $ oc adm node-logs -l kubernetes.io/os=windows --path= \
        /ip-10-0-138-252.us-east-2.compute.internal containers \
        /ip-10-0-138-252.us-east-2.compute.internal hybrid-overlay \
        /ip-10-0-138-252.us-east-2.compute.internal kube-proxy \
        /ip-10-0-138-252.us-east-2.compute.internal kubelet \
        /ip-10-0-138-252.us-east-2.compute.internal pods
  2. 同じコマンドを使用してディレクトリー内のファイルをリスト表示し、個別のログファイルを表示できるようになりました。たとえば、kubelet ログを表示するには、以下のコマンドを実行します。

    $ oc adm node-logs -l kubernetes.io/os=windows --path=/kubelet/kubelet.log

7.10.5. Windows アプリケーションイベントログの収集

kubelet logs エンドポイントの Get-WinEvent shim は、Windows マシンからアプリケーションイベントログを収集するために使用できます。

前提条件

  • Operator Lifecycle Manager (OLM) を使用して Windows Machine Config Operator (WMCO) をインストールしている。
  • Windows コンピュートマシンセットを作成しました。

手順

  • Windows マシンのイベントログですべてのアプリケーションロギングのログを表示するには、以下を実行します。

    $ oc adm node-logs -l kubernetes.io/os=windows --path=journal

    同じコマンドが oc adm must-gather でログを収集する際に実行されます。

    イベントログの他の Windows アプリケーションログは、それぞれのサービスを -u フラグで指定して収集することもできます。たとえば、以下のコマンドを実行して docker ランタイムサービスのログを収集できます。

    $ oc adm node-logs -l kubernetes.io/os=windows --path=journal -u docker

7.10.6. Windows コンテナー用の Docker ログの収集

Windows Docker サービスはログを標準出力 (stdout) にストリーミングせず、Windows のイベントログにログを記録します。Docker イベントログを表示して、Windows Docker サービスが原因と予想される問題を調査できます。

前提条件

  • Operator Lifecycle Manager (OLM) を使用して Windows Machine Config Operator (WMCO) をインストールしている。
  • Windows コンピュートマシンセットを作成しました。

手順

  1. Windows ノードに SSH を実行し、PowerShell と入力します。

    C:\> powershell
  2. 以下のコマンドを実行して Docker ログを表示します。

    C:\> Get-EventLog -LogName Application -Source Docker

7.10.7. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.