This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.13.6. トラブルシューティング
13.6.1. インストーラーワークフローのトラブルシューティング
インストール環境のトラブルシューティングを行う前に、ベアメタルへのインストーラーでプロビジョニングされるインストールの全体的なフローを理解することは重要です。以下の図は、環境におけるステップごとのトラブルシューティングフローを示しています。
					 
				
					ワークフロー 1/4 は、install-config.yaml ファイルにエラーがある場合や Red Hat Enterprise Linux CoreOS (RHCOS) イメージにアクセスできない場合のトラブルシューティングのワークフローを説明しています。トラブルシューティングについての提案は、Troubleshooting install-config.yaml を参照してください。
				
					 
				
					ワークフロー 2/4 は、ブートストラップ仮想マシンの問題、クラスターノードを起動できないブートストラップ仮想マシン、および  ログの検査 についてのトラブルシューティングのワークフローを説明しています。provisioning ネットワークなしに OpenShift Container Platform クラスターをインストールする場合は、このワークフローは適用されません。
				
					 
				
ワークフロー 3/4 は、PXE ブートしないクラスターノード のトラブルシューティングのワークフローを説明しています。RedFish 仮想メディアを使用してインストールする場合、各ノードは、インストーラーがノードをデプロイするために必要な最小ファームウェア要件を満たしている必要があります。詳細は、前提条件セクションの仮想メディアを使用したインストールのファームウェア要件を参照してください。
					 
				
ワークフロー 4/4 は、アクセスできない API から 検証済みのインストール までのトラブルシューティングのワークフローを説明します。
13.6.2. install-config.yaml のトラブルシューティング
					install-config.yaml 設定ファイルは、OpenShift Container Platform クラスターの一部であるすべてのノードを表します。このファイルには、apiVersion、baseDomain、imageContentSources、および仮想 IP アドレスのみで設定されるがこれらに制限されない必要なオプションが含まれます。OpenShift Container Platform クラスターのデプロイメントの初期段階でエラーが発生した場合、エラーは install-config.yaml 設定ファイルにある可能性があります。
				
手順
- YAML-tips のガイドラインを使用します。
- syntax-check を使用して YAML 構文が正しいことを確認します。
- Red Hat Enterprise Linux CoreOS (RHCOS) QEMU イメージが適切に定義され、 - install-config.yamlで提供される URL 経由でアクセスできることを確認します。以下に例を示します。- curl -s -o /dev/null -I -w "%{http_code}\n" http://webserver.example.com:8080/rhcos-44.81.202004250133-0-qemu.x86_64.qcow2.gz?sha256=7d884b46ee54fe87bbc3893bf2aa99af3b2d31f2e19ab5529c60636fbd0f1ce7- $ curl -s -o /dev/null -I -w "%{http_code}\n" http://webserver.example.com:8080/rhcos-44.81.202004250133-0-qemu.x86_64.qcow2.gz?sha256=7d884b46ee54fe87bbc3893bf2aa99af3b2d31f2e19ab5529c60636fbd0f1ce7- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力が - 200の場合、ブートストラップ仮想マシンイメージを保存する Web サーバーからの有効な応答があります。
13.6.3. ブートストラップ仮想マシンの問題
OpenShift Container Platform インストールプログラムは、OpenShift Container Platform クラスターノードのプロビジョニングを処理するブートストラップノードの仮想マシンを起動します。
手順
- インストールプログラムをトリガー後の約 10 分から 15 分後に、 - virshコマンドを使用してブートストラップ仮想マシンが機能していることを確認します。- sudo virsh list - $ sudo virsh list- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Id Name State -------------------------------------------- 12 openshift-xf6fq-bootstrap running - Id Name State -------------------------------------------- 12 openshift-xf6fq-bootstrap running- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- ブートストラップ仮想マシンの名前は常にクラスター名で始まり、その後にランダムな文字セットが続き、bootstrap という単語で終わります。 - ブートストラップ仮想マシンが 10 - 15 分後に実行されていない場合は、実行されない理由についてトラブルシューティングします。発生する可能性のある問題には以下が含まれます。 
- libvirtdがシステムで実行されていることを確認します。- systemctl status libvirtd - $ systemctl status libvirtd- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ブートストラップ仮想マシンが動作している場合は、これにログインします。 
- virsh consoleコマンドを使用して、ブートストラップ仮想マシンの IP アドレスを見つけます。- sudo virsh console example.com - $ sudo virsh console example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 重要- provisioningネットワークなしで OpenShift Container Platform クラスターをデプロイする場合、- 172.22.0.2などのプライベート IP アドレスではなく、パブリック IP アドレスを使用する必要があります。
- IP アドレスを取得したら、 - sshコマンドを使用してブートストラップ仮想マシンにログインします。注記- 直前の手順のコンソール出力では、 - ens3で提供される IPv6 IP アドレスまたは- ens4で提供される IPv4 IP を使用できます。- ssh core@172.22.0.2 - $ ssh core@172.22.0.2- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
ブートストラップ仮想マシンへのログインに成功しない場合は、以下いずれかのシナリオが発生した可能性があります。
- 
							172.22.0.0/24ネットワークにアクセスできない。プロビジョナーとprovisioningネットワークブリッジ間のネットワーク接続を確認します。この問題は、provisioningネットワークを使用している場合に発生することがあります。
- 
							パブリックネットワーク経由でブートストラップ仮想マシンにアクセスできない。baremetalネットワークで SSH を試行する際に、provisionerホストの、とくにbaremetalネットワークブリッジについて接続を確認します。
- 
							Permission denied (publickey,password,keyboard-interactive)が出される。ブートストラップ仮想マシンへのアクセスを試行すると、Permission deniedエラーが発生する可能性があります。仮想マシンへのログインを試行するユーザーの SSH キーがinstall-config.yamlファイル内で設定されていることを確認します。
13.6.3.1. ブートストラップ仮想マシンがクラスターノードを起動できない
デプロイメント時に、ブートストラップ仮想マシンがクラスターノードの起動に失敗する可能性があり、これにより、仮想マシンがノードに RHCOS イメージをプロビジョニングできなくなります。このシナリオは、以下の原因で発生する可能性があります。
- 
								install-config.yamlファイルに関連する問題。
- ベアメタルネットワークを使用してアウトオブバンド (out-of-band) ネットワークアクセスに関する問題
						この問題を確認するには、ironic に関連する 3 つのコンテナーを使用できます。
					
- 
								ironic-api
- 
								ironic-conductor
- 
								ironic-inspector
手順
- ブートストラップ仮想マシンにログインします。 - ssh core@172.22.0.2 - $ ssh core@172.22.0.2- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- コンテナーログを確認するには、以下を実行します。 - sudo podman logs -f <container_name> - [core@localhost ~]$ sudo podman logs -f <container_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - <container_name>を- ironicまたは- ironic-inspectorのいずれかに置き換えます。コントロールプレーンノードが PXE から起動しないという問題が発生した場合は、- ironicPod を確認してください。- ironicPod は、IPMI 経由でノードにログインしようとするため、クラスターノードを起動しようとする試みに関する情報を含んでいます。
考えられる理由
							クラスターノードは、デプロイメントの開始時に ON 状態にある可能性があります。
						
解決策
IPMI でのインストールを開始する前に、OpenShift Container Platform クラスターノードの電源をオフにします。
ipmitool -I lanplus -U root -P <password> -H <out_of_band_ip> power off
$ ipmitool -I lanplus -U root -P <password> -H <out_of_band_ip> power off13.6.3.2. ログの検査
						RHCOS イメージのダウンロードまたはアクセスに問題が発生した場合には、最初に install-config.yaml 設定ファイルで URL が正しいことを確認します。
					
RHCOS イメージをホストする内部 Web サーバーの例
bootstrapOSImage: http://<ip:port>/rhcos-43.81.202001142154.0-qemu.x86_64.qcow2.gz?sha256=9d999f55ff1d44f7ed7c106508e5deecd04dc3c06095d34d36bf1cd127837e0c clusterOSImage: http://<ip:port>/rhcos-43.81.202001142154.0-openstack.x86_64.qcow2.gz?sha256=a1bda656fa0892f7b936fdc6b6a6086bddaed5dafacedcd7a1e811abb78fe3b0
bootstrapOSImage: http://<ip:port>/rhcos-43.81.202001142154.0-qemu.x86_64.qcow2.gz?sha256=9d999f55ff1d44f7ed7c106508e5deecd04dc3c06095d34d36bf1cd127837e0c
clusterOSImage: http://<ip:port>/rhcos-43.81.202001142154.0-openstack.x86_64.qcow2.gz?sha256=a1bda656fa0892f7b936fdc6b6a6086bddaed5dafacedcd7a1e811abb78fe3b0
						coreos-downloader コンテナーは、Web サーバーまたは外部の quay.io レジストリー (install-config.yaml 設定ファイルで指定されている方) からリソースをダウンロードします。coreos-downloader コンテナーが稼働していることを確認し、必要に応じて、そのログを調べます。
					
手順
- ブートストラップ仮想マシンにログインします。 - ssh core@172.22.0.2 - $ ssh core@172.22.0.2- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 次のコマンドを実行して、ブートストラップ VM 内の - coreos-downloaderコンテナーのステータスを確認します。- sudo podman logs -f coreos-downloader - [core@localhost ~]$ sudo podman logs -f coreos-downloader- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ブートストラップ仮想マシンがイメージへの URL にアクセスできない場合、 - curlコマンドを使用して、仮想マシンがイメージにアクセスできることを確認します。
- すべてのコンテナーがデプロイメントフェーズで起動されているかどうかを示す - bootkubeログを検査するには、以下を実行します。- journalctl -xe - [core@localhost ~]$ journalctl -xe- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - journalctl -b -f -u bootkube.service - [core@localhost ~]$ journalctl -b -f -u bootkube.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- dnsmasq、- mariadb、- httpd、および- ironicを含むすべての Pod が実行中であることを確認します。- sudo podman ps - [core@localhost ~]$ sudo podman ps- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Pod に問題がある場合には、問題のあるコンテナーのログを確認します。 - ironic-apiのログを確認するには、以下を実行します。- sudo podman logs <ironic-api> - [core@localhost ~]$ sudo podman logs <ironic-api>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
13.6.4. クラスターノードが PXE ブートしない
					OpenShift Container Platform クラスターノードが PXE ブートしない場合、PXE ブートしないクラスターノードで以下のチェックを実行します。この手順は、provisioning ネットワークなしで OpenShift Container Platform クラスターをインストールする場合には適用されません。
				
手順
- 
							provisioningネットワークへのネットワークの接続を確認します。
- 
							PXE が provisioningネットワークの NIC で有効にされており、PXE がその他のすべての NIC について無効にされていることを確認します。
- install-config.yaml設定ファイルに、適切なハードウェアプロファイルと- provisioningネットワークに接続された NIC のブート MAC アドレスが含まれることを確認します。以下に例を示します。- コントロールプレーンノードの設定 - bootMACAddress: 24:6E:96:1B:96:90 # MAC of bootable provisioning NIC hardwareProfile: default #control plane node settings - bootMACAddress: 24:6E:96:1B:96:90 # MAC of bootable provisioning NIC hardwareProfile: default #control plane node settings- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ワーカーノード設定 - bootMACAddress: 24:6E:96:1B:96:90 # MAC of bootable provisioning NIC hardwareProfile: unknown #worker node settings - bootMACAddress: 24:6E:96:1B:96:90 # MAC of bootable provisioning NIC hardwareProfile: unknown #worker node settings- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
13.6.5. API にアクセスできない
クラスターが実行されており、クライアントが API にアクセスできない場合、ドメイン名の解決の問題により API へのアクセスが妨げられる可能性があります。
手順
- Hostname Resolution: クラスターノードに - localhost.localdomainだけでなく、完全修飾ドメイン名があることを確認します。以下に例を示します。- hostname - $ hostname- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ホスト名が設定されていない場合、正しいホスト名を設定します。以下に例を示します。 - hostnamectl set-hostname <hostname> - $ hostnamectl set-hostname <hostname>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 正しくない名前の解決: 各ノードに - digおよび- nslookupを使用して DNS サーバーに正しい名前の解決があることを確認します。以下に例を示します。- dig api.<cluster_name>.example.com - $ dig api.<cluster_name>.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 前述の例の出力は、 - api.<cluster_name>.example.comVIP の適切な IP アドレスが- 10.19.13.86であることを示しています。この IP アドレスは- baremetal上にある必要があります。
13.6.6. クラスターに参加できないワーカーノードのトラブルシューティング
					インストーラーでプロビジョニングされるクラスターは、api-int.<cluster_name>.<base_domain> URL の DNS エントリーが含まれる DNS サーバーと共にデプロイされます。クラスター内のノードが外部またはアップストリーム DNS サーバーを使用して api-int.<cluster_name>.<base_domain> URL を解決し、そのようなエントリーがない場合、ワーカーノードはクラスターに参加できない可能性があります。クラスター内のすべてのノードがドメイン名を解決できることを確認します。
				
手順
- DNS A/AAAA または CNAME レコードを追加して、API ロードバランサーを内部的に識別します。たとえば、dnsmasq を使用する場合は、 - dnsmasq.conf設定ファイルを変更します。- sudo nano /etc/dnsmasq.conf - $ sudo nano /etc/dnsmasq.conf- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - address=/api-int.<cluster_name>.<base_domain>/<IP_address> address=/api-int.mycluster.example.com/192.168.1.10 address=/api-int.mycluster.example.com/2001:0db8:85a3:0000:0000:8a2e:0370:7334 - address=/api-int.<cluster_name>.<base_domain>/<IP_address> address=/api-int.mycluster.example.com/192.168.1.10 address=/api-int.mycluster.example.com/2001:0db8:85a3:0000:0000:8a2e:0370:7334- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- DNS PTR レコードを追加して、API ロードバランサーを内部的に識別します。たとえば、dnsmasq を使用する場合は、 - dnsmasq.conf設定ファイルを変更します。- sudo nano /etc/dnsmasq.conf - $ sudo nano /etc/dnsmasq.conf- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ptr-record=<IP_address>.in-addr.arpa,api-int.<cluster_name>.<base_domain> ptr-record=10.1.168.192.in-addr.arpa,api-int.mycluster.example.com - ptr-record=<IP_address>.in-addr.arpa,api-int.<cluster_name>.<base_domain> ptr-record=10.1.168.192.in-addr.arpa,api-int.mycluster.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- DNS サーバーを再起動します。たとえば、dnsmasq を使用する場合は、以下のコマンドを実行します。 - sudo systemctl restart dnsmasq - $ sudo systemctl restart dnsmasq- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
これらのレコードは、クラスター内のすべてのノードで解決できる必要があります。
13.6.7. 以前のインストールのクリーンアップ
以前のデプロイメントに失敗した場合、OpenShift Container Platform のデプロイを再試行する前に、失敗した試行からアーティファクトを削除します。
手順
- OpenShift Container Platform クラスターをインストールする前に、すべてのベアメタルノードの電源をオフにします。 - ipmitool -I lanplus -U <user> -P <password> -H <management_server_ip> power off - $ ipmitool -I lanplus -U <user> -P <password> -H <management_server_ip> power off- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以前に試行したデプロイメントにより古いブートストラップリソースが残っている場合は、これらをすべて削除します。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 以下を - clusterconfigsディレクトリーから削除し、Terraform が失敗することを防ぎます。- rm -rf ~/clusterconfigs/auth ~/clusterconfigs/terraform* ~/clusterconfigs/tls ~/clusterconfigs/metadata.json - $ rm -rf ~/clusterconfigs/auth ~/clusterconfigs/terraform* ~/clusterconfigs/tls ~/clusterconfigs/metadata.json- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
13.6.8. レジストリーの作成に関する問題
					非接続レジストリーの作成時に、レジストリーのミラーリングを試行する際に User Not Authorized エラーが発生する場合があります。このエラーは、新規の認証を既存の pull-secret.txt ファイルに追加できない場合に生じる可能性があります。
				
手順
- 認証が正常に行われていることを確認します。 - /usr/local/bin/oc adm release mirror \ -a pull-secret-update.json - $ /usr/local/bin/oc adm release mirror \ -a pull-secret-update.json --from=$UPSTREAM_REPO \ --to-release-image=$LOCAL_REG/$LOCAL_REPO:${VERSION} \ --to=$LOCAL_REG/$LOCAL_REPO- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- インストールイメージのミラーリングに使用される変数の出力例: - UPSTREAM_REPO=${RELEASE_IMAGE} LOCAL_REG=<registry_FQDN>:<registry_port> LOCAL_REPO='ocp4/openshift4'- UPSTREAM_REPO=${RELEASE_IMAGE} LOCAL_REG=<registry_FQDN>:<registry_port> LOCAL_REPO='ocp4/openshift4'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - RELEASE_IMAGEおよび- VERSIONの値は、OpenShift インストールの環境のセットアップセクションの OpenShift Installer の取得 の手順で設定されています。
- レジストリーのミラーリング後に、非接続環境でこれにアクセスできることを確認します。 - curl -k -u <user>:<password> https://registry.example.com:<registry_port>/v2/_catalog - $ curl -k -u <user>:<password> https://registry.example.com:<registry_port>/v2/_catalog {"repositories":["<Repo_Name>"]}- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
13.6.9. その他の問題点
13.6.9.1. runtime network not ready エラーへの対応
クラスターのデプロイメント後に、以下のエラーが発生する可能性があります。
`runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: Missing CNI default network`
`runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: Missing CNI default network`
						Cluster Network Operator は、インストーラーによって作成される特別なオブジェクトに対応してネットワークコンポーネントをデプロイします。これは、コントロールプレーン (マスター) ノードが起動した後、ブートストラップコントロールプレーンが停止する前にインストールプロセスの初期段階で実行されます。これは、コントロールプレーン (マスター) ノードの起動の長い遅延や apiserver 通信の問題などの、より判別しづらいインストーラーの問題を示すことができます。
					
手順
- openshift-network-operatornamespace の Pod を検査します。- oc get all -n openshift-network-operator - $ oc get all -n openshift-network-operator- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - NAME READY STATUS RESTARTS AGE pod/network-operator-69dfd7b577-bg89v 0/1 ContainerCreating 0 149m - NAME READY STATUS RESTARTS AGE pod/network-operator-69dfd7b577-bg89v 0/1 ContainerCreating 0 149m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- provisionerノードで、ネットワーク設定が存在することを判別します。- kubectl get network.config.openshift.io cluster -oyaml - $ kubectl get network.config.openshift.io cluster -oyaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 存在しない場合には、インストーラーはこれを作成していません。インストーラーがこれを作成しなかった理由を判別するには、以下のコマンドを実行します。 - openshift-install create manifests - $ openshift-install create manifests- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- network-operatorが実行されていることを確認します。- kubectl -n openshift-network-operator get pods - $ kubectl -n openshift-network-operator get pods- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ログを取得します。 - kubectl -n openshift-network-operator logs -l "name=network-operator" - $ kubectl -n openshift-network-operator logs -l "name=network-operator"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 3 つ以上のコントロールプレーン (マスター) ノードを持つ高可用性クラスターの場合、Operator はリーダーの選択を実行し、他の Operator はすべてスリープ状態になります。詳細は、Troubleshooting を参照してください。 
13.6.9.2. クラスターノードが DHCP 経由で正しい IPv6 アドレスを取得しない
クラスターノードが DHCP 経由で正しい IPv6 アドレスを取得しない場合は、以下の点を確認してください。
- 予約された IPv6 アドレスが DHCP 範囲外にあることを確認します。
- DHCP サーバーの IP アドレス予約では、予約で正しい DUID (DHCP 固有識別子) が指定されていることを確認します。以下に例を示します。 - This is a dnsmasq dhcp reservation, 'id:00:03:00:01' is the client id and '18:db:f2:8c:d5:9f' is the MAC Address for the NIC - # This is a dnsmasq dhcp reservation, 'id:00:03:00:01' is the client id and '18:db:f2:8c:d5:9f' is the MAC Address for the NIC id:00:03:00:01:18:db:f2:8c:d5:9f,openshift-master-1,[2620:52:0:1302::6]- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Route Announcement が機能していることを確認します。
- DHCP サーバーが、IP アドレス範囲を提供する必要なインターフェイスでリッスンしていることを確認します。
13.6.9.3. クラスターノードが DHCP 経由で正しいホスト名を取得しない
						IPv6 のデプロイメント時に、クラスターノードは DHCP でホスト名を取得する必要があります。NetworkManager はホスト名をすぐに割り当てない場合があります。コントロールプレーン (マスター) ノードは、以下のようなエラーを報告する可能性があります。
					
Failed Units: 2 NetworkManager-wait-online.service nodeip-configuration.service
Failed Units: 2
  NetworkManager-wait-online.service
  nodeip-configuration.service
						このエラーは、最初に DHCP サーバーからホスト名を受信せずにクラスターノードが起動する可能性があることを示しています。これにより、kubelet が localhost.localdomain ホスト名で起動します。エラーに対処するには、ノードによるホスト名の更新を強制します。
					
手順
- hostnameを取得します。- hostname - [core@master-X ~]$ hostname- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - ホスト名が - localhostの場合は、以下の手順に進みます。注記- Xはコントロールプレーンノード番号です。
- クラスターノードによる DHCP リースの更新を強制します。 - sudo nmcli con up "<bare_metal_nic>" - [core@master-X ~]$ sudo nmcli con up "<bare_metal_nic>"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - <bare_metal_nic>を、- baremetalネットワークに対応する有線接続に置き換えます。
- hostnameを再度確認します。- hostname - [core@master-X ~]$ hostname- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ホスト名が - localhost.localdomainの場合は、- NetworkManagerを再起動します。- sudo systemctl restart NetworkManager - [core@master-X ~]$ sudo systemctl restart NetworkManager- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
								ホスト名がまだ localhost.localdomainの場合は、数分待機してから再度確認します。ホスト名がlocalhost.localdomainのままの場合は、直前の手順を繰り返します。
- nodeip-configurationサービスを再起動します。- sudo systemctl restart nodeip-configuration.service - [core@master-X ~]$ sudo systemctl restart nodeip-configuration.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - このサービスは、正しいホスト名の参照で - kubeletサービスを再設定します。
- kubelet が直前の手順で変更された後にユニットファイル定義を再読み込みします。 - sudo systemctl daemon-reload - [core@master-X ~]$ sudo systemctl daemon-reload- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- kubeletサービスを再起動します。- sudo systemctl restart kubelet.service - [core@master-X ~]$ sudo systemctl restart kubelet.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- kubeletが正しいホスト名で起動されていることを確認します。- sudo journalctl -fu kubelet.service - [core@master-X ~]$ sudo journalctl -fu kubelet.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
						再起動時など、クラスターの稼働後にクラスターノードが正しいホスト名を取得しない場合、クラスターの csr は保留中になります。csr は承認 しません。承認すると、他の問題が生じる可能性があります。
					
csr の対応
- クラスターで CSR を取得します。 - oc get csr - $ oc get csr- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保留中の - csrに- Subject Name: localhost.localdomainが含まれているかどうかを確認します。- oc get csr <pending_csr> -o jsonpath='{.spec.request}' | base64 --decode | openssl req -noout -text- $ oc get csr <pending_csr> -o jsonpath='{.spec.request}' | base64 --decode | openssl req -noout -text- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Subject Name: localhost.localdomainが含まれる- csrを削除します。- oc delete csr <wrong_csr> - $ oc delete csr <wrong_csr>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
13.6.9.4. ルートがエンドポイントに到達しない
						インストールプロセス時に、VRRP (Virtual Router Redundancy Protocol) の競合が発生する可能性があります。この競合は、特定のクラスター名を使用してクラスターデプロイメントの一部であった、以前に使用された OpenShift Container Platform ノードが依然として実行中であるものの、同じクラスター名を使用した現在の OpenShift Container Platform クラスターデプロイメントの一部ではない場合に発生する可能性があります。たとえば、クラスターはクラスター名 openshift を使用してデプロイされ、3 つのコントロールプレーン (マスター) ノードと 3 つのワーカーノードをデプロイします。後に、別のインストールで同じクラスター名 openshift が使用されますが、この再デプロイメントは 3 つのコントロールプレーン (マスター) ノードのみをインストールし、以前のデプロイメントの 3 つのワーカーノードを ON 状態のままにします。これにより、VRID (Virtual Router Identifier) の競合が発生し、VRRP が競合する可能性があります。
					
- ルートを取得します。 - oc get route oauth-openshift - $ oc get route oauth-openshift- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- サービスエンドポイントを確認します。 - oc get svc oauth-openshift - $ oc get svc oauth-openshift- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE oauth-openshift ClusterIP 172.30.19.162 <none> 443/TCP 59m - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE oauth-openshift ClusterIP 172.30.19.162 <none> 443/TCP 59m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- コントロールプレーン (マスター) ノードからサービスへのアクセスを試行します。 - curl -k https://172.30.19.162 - [core@master0 ~]$ curl -k https://172.30.19.162- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- provisionerノードからの- authentication-operatorエラーを特定します。- oc logs deployment/authentication-operator -n openshift-authentication-operator - $ oc logs deployment/authentication-operator -n openshift-authentication-operator- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Event(v1.ObjectReference{Kind:"Deployment", Namespace:"openshift-authentication-operator", Name:"authentication-operator", UID:"225c5bd5-b368-439b-9155-5fd3c0459d98", APIVersion:"apps/v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'OperatorStatusChanged' Status for clusteroperator/authentication changed: Degraded message changed from "IngressStateEndpointsDegraded: All 2 endpoints for oauth-server are reporting"- Event(v1.ObjectReference{Kind:"Deployment", Namespace:"openshift-authentication-operator", Name:"authentication-operator", UID:"225c5bd5-b368-439b-9155-5fd3c0459d98", APIVersion:"apps/v1", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'OperatorStatusChanged' Status for clusteroperator/authentication changed: Degraded message changed from "IngressStateEndpointsDegraded: All 2 endpoints for oauth-server are reporting"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
解決策
- すべてのデプロイメントのクラスター名が一意であり、競合が発生しないことを確認します。
- 同じクラスター名を使用するクラスターデプロイメントの一部ではない不正なノードをすべてオフにします。そうしないと、OpenShift Container Platform クラスターの認証 Pod が正常に起動されなくなる可能性があります。
13.6.9.5. 初回起動時の Ignition の失敗
初回起動時に、Ignition 設定が失敗する可能性があります。
手順
- Ignition 設定が失敗したノードに接続します。 - Failed Units: 1 machine-config-daemon-firstboot.service - Failed Units: 1 machine-config-daemon-firstboot.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- machine-config-daemon-firstbootサービスを再起動します。- sudo systemctl restart machine-config-daemon-firstboot.service - [core@worker-X ~]$ sudo systemctl restart machine-config-daemon-firstboot.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
13.6.9.6. NTP が同期しない
OpenShift Container Platform クラスターのデプロイメントは、クラスターノード間の NTP の同期クロックによって異なります。同期クロックがない場合、時間の差が 2 秒を超えるとクロックのドリフトによりデプロイメントが失敗する可能性があります。
手順
- クラスターノードの - AGEの差異の有無を確認します。以下に例を示します。- oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - NAME STATUS ROLES AGE VERSION master-0.cloud.example.com Ready master 145m v1.23.0 master-1.cloud.example.com Ready master 135m v1.23.0 master-2.cloud.example.com Ready master 145m v1.23.0 worker-2.cloud.example.com Ready worker 100m v1.23.0 - NAME STATUS ROLES AGE VERSION master-0.cloud.example.com Ready master 145m v1.23.0 master-1.cloud.example.com Ready master 135m v1.23.0 master-2.cloud.example.com Ready master 145m v1.23.0 worker-2.cloud.example.com Ready worker 100m v1.23.0- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- クロックのドリフトによる一貫性のないタイミングの遅延について確認します。以下に例を示します。 - oc get bmh -n openshift-machine-api - $ oc get bmh -n openshift-machine-api- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - master-1 error registering master-1 ipmi://<out_of_band_ip> - master-1 error registering master-1 ipmi://<out_of_band_ip>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - sudo timedatectl - $ sudo timedatectl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
既存のクラスターでのクロックドリフトへの対応
- ノードに配信される - chrony.confファイルの内容を含む Butane 設定ファイルを作成します。以下の例で、- 99-master-chrony.buを作成して、ファイルをコントロールプレーンノードに追加します。ワーカーノードのファイルを変更するか、ワーカーロールに対してこの手順を繰り返すことができます。注記- Butane の詳細は、Butane を使用したマシン設定の作成を参照してください。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- <NTP_server>を NTP サーバーの IP アドレスに置き換えます。
 
- Butane を使用して、ノードに配信される設定を含む - MachineConfigオブジェクトファイル (- 99-master-chrony.yaml) を生成します。- butane 99-master-chrony.bu -o 99-master-chrony.yaml - $ butane 99-master-chrony.bu -o 99-master-chrony.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- MachineConfigオブジェクトファイルを適用します。- oc apply -f 99-master-chrony.yaml - $ oc apply -f 99-master-chrony.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- System clock synchronizedの値が yes であることを確認します。- sudo timedatectl - $ sudo timedatectl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - デプロイメントの前にクロック同期を設定するには、マニフェストファイルを生成し、このファイルを - openshiftディレクトリーに追加します。以下に例を示します。- cp chrony-masters.yaml ~/clusterconfigs/openshift/99_masters-chrony-configuration.yaml - $ cp chrony-masters.yaml ~/clusterconfigs/openshift/99_masters-chrony-configuration.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - クラスターの作成を継続します。 
13.6.10. インストールの確認
インストール後に、インストーラーがノードおよび Pod を正常にデプロイしていることを確認します。
手順
- OpenShift Container Platform クラスターノードが適切にインストールされると、以下の - Ready状態が- STATUS列に表示されます。- oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - NAME STATUS ROLES AGE VERSION master-0.example.com Ready master,worker 4h v1.23.0 master-1.example.com Ready master,worker 4h v1.23.0 master-2.example.com Ready master,worker 4h v1.23.0 - NAME STATUS ROLES AGE VERSION master-0.example.com Ready master,worker 4h v1.23.0 master-1.example.com Ready master,worker 4h v1.23.0 master-2.example.com Ready master,worker 4h v1.23.0- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- インストーラーによりすべての Pod が正常にデプロイされたことを確認します。以下のコマンドは、実行中の Pod、または出力の一部として完了した Pod を削除します。 - oc get pods --all-namespaces | grep -iv running | grep -iv complete - $ oc get pods --all-namespaces | grep -iv running | grep -iv complete- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow