1.7. 既知の問題
ユーザーによってプロビジョニングされるインフラストラクチャーで vSphere 上の仮想マシンの電源をオンにすると、ノードのスケールアッププロセスは予想通りに機能しない可能性があります。ハイパーバイザー設定の既知の問題により、ハイパーバイザー内にマシンが作成されますが、電源がオンになりません。マシンセットをスケールアップした後にノードが
Provisioning
状態のままである場合、vSphere インスタンス自体で仮想マシンのステータスを調査できます。VMware コマンドgovc tasks
およびgovc events
を使用して、仮想マシンのステータスを判別します。以下のようなエラーメッセージがあるかどうかを確認します。[Invalid memory setting: memory reservation (sched.mem.min) should be equal to memsize(8192). ]
この VMware KBase の記事 にある手順に従って、問題の解決を試行できます。詳細は、Red Hat ナレッジベースのソリューションの [UPI vSphere] Node scale-up doesn't work as expected を参照してください。(BZ#1918383)
OpenShift Container Platform 4.6.8 では、Cluster Logging Operator (CLO) で証明書が再生成される方法が変更されたバグ修正が導入されました。今回の修正により、OpenShift Elasticsearch Operator (EO) がクラスターの再起動を試行する際に CLO が証明書を再生成する可能性が出る問題が生じました。これにより、EO とクラスター間の通信で問題が生じ、EO ノードが一致しない証明書を持つことが予想されます。
Elasticsearch のアップグレード時に、一致しない証明書によって問題が発生する可能性がありました。回避策として、CLO と EO を別々にアップグレードできます。これが機能しない場合は、以下のコマンドを実行して Elasticsearch Pod を再起動します。
$ oc delete pod -l component=es
Pod の再起動後に、一致しない証明書が修正され、アップグレードの問題が解決されます。(BZ#1906641)
- 現時点で、OVN-Kubernetes クラスターネットワークプロバイダーを使用した OpenShift Container Platform 4.5 から 4.6 へのアップグレードは機能しません。この問題は、今後の 4.6.z リリースで解決される予定です。(BZ#1880591)
- 現時点で、クラスターの 75 を超えるノードにスケーリングすると、OVN-Kubernetes クラスターネットワークプロバイダーのデータベースが破損し、クラスターが使用不可の状態になる可能性があります。(BZ#1887585)
- 現時点で、OVN-Kubernetes クラスターネットワークプロバイダーを使用したクラスターでの Red Hat Enterprise Linux (RHEL) ワーカーノードのスケールアップは機能しません。これは、今後の RHEL 7.8.z および RHEL 7.9.z リリースで解決されます。(BZ#1884323, BZ#1871935)
- 現時点で、Red Hat Enterprise Linux (RHEL) 7.8 で実行されているワーカーノードをスケールアップすると、OVN-Kubernetes ネットワークプロバイダーは新規ノードで初期化できません。(BZ#1884323)
- OpenShift Container Platform 4.6 から 4.5 へのダウングレードについては、今後の 4.5.z リリースで修正されます。(BZ#1882394, BZ#1886148, BZ#1886127)
- 現時点で、Red Hat Enterprise Linux (RHEL) ワーカーノードを使用した OpenShift Container Platform 4.5 から 4.6 へのアップグレードは機能しません。この問題は、今後の 4.6.z リリースで解決される予定です。まず、RHEL をアップグレードしてからクラスターをアップグレードし、通常の RHEL アップグレード Playbook を再度実行します。(BZ#1887607)
-
OpenShift Container Platform 4.5 から 4.6 へのアップグレードは、外部ネットワークがボンディングデバイスに設定されていると失敗します。
ovs-configuration
サービスが失敗し、ノードに到達できなくなります。この問題は、今後の 4.6.z リリースで解決される予定です。(BZ#1887545) - 現時点で、Huge Page はいくつかの NUMA (Non-Uniform Memory Access) ノードで要求されると適切に検出されません。これが生じるのは、テストで 1 つの NUMA の Huge Page 数とノード全体の Huge Page の合計数が比較されるためであり、クラスターに複数の NUMA ノードが含まれる場合に cnf-tests スイートでエラーが報告されます。(BZ#1889633)
- パケット転送を確認し、受信するために使用される Data Plane Development Kit (DPDK) テストは常に失敗します。(BZ#1889631)
- 未加工 (raw) 設定のないマシン設定が 1 つ以上あると、SCTP (Stream Control Transmission Protocol) 検証フェーズに失敗します。たとえば、これにはカーネル引数のみが含まれるマシン設定が含まれます。(BZ#1889275)
- cnf-tests スイートが PTP を実行しているノードの数を適切に検出しないため、Precision Time Protocol (PTP) 検証フェーズは失敗します。(BZ#1889741)
-
ノード上のデバイスが利用可能になるまで待機しないため、ネットワークインターフェイスカード (NIC) の検証フェーズは失敗します。Pod がノードで実行を開始するまでの待機時間が短すぎるため、Pod のステータスが
Pending
のままとなり、誤ってテストされる可能性があります。(BZ#1890088) -
ose-egress-dns-proxy
イメージには、コンテナーの起動を防ぐ既知の不具合があります。このイメージは以前のリリースについても破損状態されたため、4.6 のリグレッションとみなされません。(BZ#1888024)
OpenShift Container Platform 4.1 では、匿名ユーザーは検出エンドポイントにアクセスできました。後のリリースでは、一部の検出エンドポイントは集約された API サーバーに転送されるため、このアクセスを無効にして、セキュリティーの脆弱性の可能性を減らすことができます。ただし、既存のユースケースに支障がで出ないように、認証されていないアクセスはアップグレードされたクラスターで保持されます。
OpenShift Container Platform 4.1 から 4.6 にアップグレードされたクラスターのクラスター管理者の場合、認証されていないアクセスを無効にするか、またはこれを引き続き許可することができます。特定の必要がなければ、認証されていないアクセスを無効にすることが推奨されます。認証されていないアクセスを引き続き許可する場合は、それに伴ってリスクが増大することに注意してください。
警告認証されていないアクセスに依存するアプリケーションがある場合、認証されていないアクセスを取り消すと HTTP 403 エラーが生じる可能性があります。
以下のスクリプトを使用して、検出エンドポイントへの認証されていないアクセスを無効にします。
## Snippet to remove unauthenticated group from all the cluster role bindings $ for clusterrolebinding in cluster-status-binding discovery system:basic-user system:discovery system:openshift:discovery ; do ### Find the index of unauthenticated group in list of subjects index=$(oc get clusterrolebinding ${clusterrolebinding} -o json | jq 'select(.subjects!=null) | .subjects | map(.name=="system:unauthenticated") | index(true)'); ### Remove the element at index from subjects array oc patch clusterrolebinding ${clusterrolebinding} --type=json --patch "[{'op': 'remove','path': '/subjects/$index'}]"; done
このスクリプトは、認証されていないサブジェクトを以下のクラスターロールバインディングから削除します。
-
cluster-status-binding
-
discovery
-
system:basic-user
-
system:discovery
-
system:openshift:discovery
-
operator-sdk new
またはoperator-sdk create api
コマンドを--helm-chart
フラグを指定せずに実行すると、デフォルトのボイラープレート Nginx チャートを使用する Helm ベースの Operator がビルドされます。このサンプルチャートはアップストリーム Kubernetes で正常に機能しますが、OpenShift Container Platform では正常にデプロイできません。この問題を回避するには、
--helm-chart
フラグを使用して、OpenShift Container Platform に正常にデプロイされる Helm チャートを提供します。以下は例になります。$ operator-sdk new <operator_name> --type=helm \ --helm-chart=<repo>/<name>
- Redfish Virtual Media 機能を使用してベアメタルノードに OpenShift Container Platform をインストールすると、Baseboard Management Controller (BMC) がプロビジョニングネットワークから仮想メディアイメージの読み込みを試行する際に失敗します。これは、BMC がプロビジョニングネットワークを使用しない場合や、そのネットワークでプロビジョニングネットワークにルーティングが設定されていない場合に発生します。回避策として、仮想メディアを使用する場合はプロビジョニングネットワークをオフにするか、前提条件として BMC をプロビジョニングネットワークにルーティングする必要があります。(BZ#1872787)
-
OpenShift Container Platform インストールプログラムは、既知の問題により GCP および Azure で
install-config.yaml
ファイルを使用して手動モード設定をサポートしません。その代わりに、Azure の IAM の手動作成 について、および GCP の IAM の手動作成 について説明されているように、クラスターのインストールプロセスのマニフェストの生成段階で設定マップをマニフェストディレクトリーに手動で挿入する必要があります。(BZ#1884691) -
電源環境で Pod が FC の Persistent Volume Claim (永続ボリューム要求、PVC) および targetWWN をパラメーターとして作成されると、FC ボリュームの割り当ては
no fc disk found
エラーを出して失敗し、Pod はContainerCreating state
状態のままになります。(BZ#1887026) - egress IP を提供するノードがシャットダウンすると、そのノードでホストされる Pod は egress IP を提供する別のノードに移動しません。これにより、egress IP を提供するノードがシャットダウンすると、Pod の送信トラフィックは常に失敗します。(BZ#1877273)
-
既知の問題により
us-gov-east-1
リージョンにインストールする場合、プライベートの非接続クラスターのインストールは AWS GovCloud ではサポートされません。(BZ#1881262). インストーラーでプロビジョニングされるインフラストラクチャーの Google Cloud Platform (GCP) で実行しているクラスターを破棄する際に、インフラストラクチャー ID の接頭辞のないマシンが使用するファイアウォールルールが保持されます。これにより、インストールプログラムの破棄プロセスが失敗します。回避策として、GCP Web コンソールでマシンのファイアウォールルールを手動で削除する必要があります。
$ gcloud compute firewall-rules delete <firewall_rule_name>
見つからないインフラストラクチャー ID を持つマシンのファイアウォールルールが削除されると、クラスターを破棄できます。(BZ#1801968)
-
opm alpha bundle build
コマンドは、Windows 10 で失敗します。(BZ#1883773) OpenShift Container Platform 4.6 では、リソースメトリクス API サーバーはカスタムリソースのサポートを提供します。リソースメトリクス API サーバーは OpenAPI 仕様を実装せず、以下のメッセージが
kube-apiserver
ログに送信されます。controller.go:114] loading OpenAPI spec for "v1beta1.metrics.k8s.io" failed with: OpenAPI spec does not exist controller.go:127] OpenAPI AggregationController: action for item v1beta1.metrics.k8s.io: Rate Limited Requeue.
場合によっては、これらのエラーによって
KubeAPIErrorsHigh
アラートが実行される可能性はありますが、OpenShift Container Platform 機能の低下についての根本的な問題は認識されません。(BZ#1819053)- ルール API バックエンドは、ストア API ストアがルール API ストアの前に検出される場合に検出されないことがあります。これが発生すると、ルール API クライアントなしでストア参照が作成され、Thanos Querier からの Rules API エンドポイントはルールを返しません。(BZ#1870287)
AWS アカウントが、グローバル条件を使用してすべてのアクションを拒否するか、または特定のパーミッションを要求する AWS Organizations サービスコントロールポリシー (SCP) を使用するように設定されている場合、パーミッションを検証する AWS ポリシーシミュレーター API が誤検出を生成します。パーミッションを検証できない場合、提供される認証情報にインストールに必要なパーミッションがある場合でも、OpenShift Container Platform AWS のインストールに失敗します。
この問題を回避するには、
credentialsMode
パラメーターの値をinstall-config.yaml
設定ファイルに設定して、AWS ポリシーシミュレーターのパーミッションチェックをバイパスできます。credentialsMode
の値は、Cloud Credential Operator (CCO) の動作を 3 つのサポートされるモード のいずれかに変更します。サンプル
install-config.yaml
設定ファイルapiVersion: v1 baseDomain: cluster1.example.com credentialsMode: Mint 1 compute: - architecture: amd64 hyperthreading: Enabled ...
- 1
- この行は、
credentialsMode
パラメーターをMint
に設定するために追加されます。
このチェックを省略する場合、指定する認証情報に、指定されたモードに必要なパーミッション があることを確認します。
-
RHOSP 上で実行され、Kuryr を使用するクラスターは、それぞれの
hostNetworking
Pod に不要な Neutron ポートを作成します。これらのポートは安全に削除できます。ポートの自動削除は、OpenShift Container Platform の今後のリリースで予定されています。(BZ#1888318) -
Kuryr で設定された RHOSP のデプロイメントでは、kuryr-cni Pod がクラッシュループになる可能性がありました (
NetlinkError: (17, 'File exists')
エラーを報告する)。回避策として、ノードを再起動する必要があります。OpenShift Container Platform の今後のリリースでこの問題を解決する修正が提供されることが予定されています。(BZ#1869606) - egress ルーター Pod を DNS プロキシーモードでデプロイする場合、Pod は初期化に失敗します。(BZ#1888024)
- RHCOS リアルタイム (RT) カーネルは、現時点ではコンピュートノードでのみサポートされており、コントロールプレーンノードではサポートされていません。コンパクトなクラスターは、OpenShift Container Platform 4.6 の RT カーネルではサポートされていません。(BZ#1887007)
セキュリティーを強化するために、
NET_RAW
およびSYS_CHROOT
機能は CRI-O 機能のデフォルトリストで選択できなくなりました。-
NET_RAW
: 保護されていない場合、この機能により、Pod で Low ポート、ソース IP アドレス、ソース MAC アドレスなどのヘッダーフィールドを変更できるパケットを作成できるようになります。この機能により、悪意のあるハッキングが試行される可能性があります。 -
SYS_CHROOT
: 通常ワークロードにchroot
は必要ありません。特権付きの操作へのアクセスは、必要な場合にのみ付与される必要があります。
NET_RAW
およびSYS_CHROOT
機能は OpenShift Container Platform 4.5.16 のデフォルト機能として削除されています。4.5.16 よりも前のリリースで作成されたクラスターへの影響を軽減するために、デフォルトの機能一覧は、99-worker-generated-crio-capabilities
および99-master-generated-crio-capabilities
などの別個のマシン設定に含まれるようになりました。OpenShift Container Platform は、以前のリリースから更新する際に新規マシン設定を作成します。アップグレード後に、
NET_RAW
およびSYS_CHROOT
機能を無効にしてから、ワークロードをテストすることが推奨されます。これらの機能を削除する準備ができたら、99-worker-generated-crio-capabilities
および99-master-generated-crio-capabilities
マシン設定を削除します。重要: 以前のリリースから更新する場合は、4.6 に更新する前に 4.5.16 に更新してください。(BZ#1874671).
-
-
OpenShift Container Platform Machine API ベアメタルアクチュエーターは、基礎となるベアメタルホストが削除されると Machine オブジェクトを削除します。この動作は、基礎となるクラウドプロバイダーリソースが削除される場合に
Machine
オブジェクトをすべて削除する代わりに failed (失敗) フェーズに移行する他のクラウドプロバイダーアクチュエーターの動作と一致しません。(BZ#1868104) - クラスターを vSphere でインストーラーでプロビジョニングされるインフラストラクチャーでインストールされたバージョン 4.5 から 4.6 にアップグレードする場合、コントロールプレーンノードの IP アドレスがアップグレード時に変更される場合にアップグレードに失敗します。回避策として、バージョン 4.6 にアップグレードする前にコントロールプレーンノードの IP アドレスを予約する必要があります。予約の設定については、DHCP サーバーのドキュメントを参照してください。(BZ#1883521)
TLS 検証を必要とする
oc
コマンドの場合、証明書が Subject Alternative Name を設定しない場合、検証は Common Name フィールドにフォールバックせず、コマンドは以下のエラーを出して失敗します。x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
回避策として、適切な Subject Alternative Name が設定された証明書を使用するか、または
oc
コマンドにGODEBUG=x509ignoreCN=0
を付けてこの動作を一時的に上書きできます。今後の 4.6 z-stream はエラーではなく警告を返す可能性があり、ユーザーは証明書を準拠するよう更新するためにより長い時間を確保できる可能性があります。
- Helm パッケージマネージャーを使用して Agones をインストールし、Developer パースペクティブを使用して namespace のチャートリソースの調査を試行すると、リソースの詳細ではなくエラーメッセージが表示されます。(BZ#1866087)
-
Topology ビューでデプロイメントを選択する場合は、Actions
Edit <deployment_name> をクリックしてからこれを変更します。変更した Deployment
YAML ファイルはPod Template spec
のボリュームマウントを上書きするか、または削除します。(BZ#1867965) -
Add
From Catalog オプションを使用し、Template でフィルターし、テンプレートを選択してからテンプレートをインスタンス化する際に、成功または失敗のいずれのメッセージも Developer パースペクティブに表示されません。(BZ#1876535) - 省略されたタスクを持つ PipelineRun は、タスクを誤って Failed と表示します。(BZ#1880389)
- Application Stages ビューの Application Details ページでは、アプリケーション環境のプロジェクトの正しくないリンクが提供されます。(BZ#1889348)
-
負荷の大きい Pod 作成の状況では、作成が
error reserving pod name …: name is reserved
のメッセージを出して失敗します。CNI 実行可能ファイルの CRI-O のコンテキストは終了し、プロセスを強制終了します。Pod の作成は最終的に成功しますが、長い時間がかかります。そのため、kubelet は CRI-O が Pod を作成していないものと見なします。kubelet は要求を再び送信し、名前の競合が発生します。この問題は現在調査中です。(BZ#1785399) - クラスターネットワークプロバイダーが OVN-Kubernetes の場合、クラスター内のノードに割り当てられないサービスの外部 IP アドレスを使用する場合、外部 IP アドレスへのネットワークトラフィックはルーティングできません。回避策として、サービスの外部 IP アドレスがクラスター内のノードに常に割り当てられるようにします。(BZ#1890270)
管理者は、
redhat-operators
カタログをミラーリングして、ネットワークが制限された環境 (非接続クラスターとしても知られる) の OpenShift Container Platform 4.6 クラスターで Operator Lifecycle Manager (OLM) を使用できます。ただし、以下の Operator は、予想されるパブリックホスト名registry.redhat.io
ではなく、プライベートホスト名registry-proxy.engineering.redhat.com
でmapping.txt
ファイルのエントリーを返します。- amq-online.1.5.3
- amq-online.1.6.0
これにより、イメージのプルはアクセス不可能なプライベートレジストリー (通常は内部 Red Hat テスト用) に対して失敗します。この問題を回避するには、
mapping.txt
ファイルを生成した後に以下のコマンドを実行します。$ sed -i -e 's/registry-proxy.engineering.redhat.com/registry.redhat.io/g' \ -e 's/rh-osbs\/amq7-/amq7\//g' \ -e 's/amq7\/tech-preview-/amq7-tech-preview\//g' \ ./redhat-operator-index-manifests/imageContentSourcePolicy.yaml \ ./redhat-operator-index-manifests/mapping.txt
PowerVM での IBM Power Systems の OpenShift Container Platform については、以下の制限を優先的に考慮してください。
- マスターノード用に 2 つの仮想 CPU
- ワーカーノード用に 4 つの仮想 CPU
- すべてのノード用に 0.5 プロセッサー
- すべてのノード用に 32 GB の仮想 RAM
Red Hat Operator の公開プロセスのバグにより、OpenShift Container Platform 4.6 インデックスイメージのステージ環境用のバージョンが一時的に公開されました。このバグが解決され、イメージが正しいコンテンツですぐに再公開されました。
このステージレジストリーイメージの使用時に Operator のインストールまたはアップグレードを試行する場合、
openshift-marketplace
namespace のジョブは、予想されるパブリックホスト名のregistry.redhat.io
ではなく、プライベートホスト名のregistry.stage.redhat.io
を示す以下のエラーを出して失敗する可能性がありました。出力例
ImagePullBackOff for Back-off pulling image "registry.stage.redhat.io/openshift4/ose-elasticsearch-operator-bundle@sha256:6d2587129c746ec28d384540322b40b05833e7e00b25cca584e004af9a1d292e"
出力例
rpc error: code = Unknown desc = error pinging docker registry registry.stage.redhat.io: Get "https://registry.stage.redhat.io/v2/": dial tcp: lookup registry.stage.redhat.io on 10.0.0.1:53: no such host
これにより、イメージのプルはアクセス不可能なプライベートレジストリー (通常は内部 Red Hat テスト用) に対して失敗し、関連する Operator のインストールおよびアップグレードは失敗しました。この問題の回避策については、問題のあるサブスクリプションの更新 について参照してください。(BZ#1909152)
-
oc annotate
コマンドは、等号 (=
) が含まれる LDAP グループ名では機能しません。これは、コマンドがアノテーション名と値の間に等号を区切り文字として使用するためです。回避策として、oc patch
またはoc edit
を使用してアノテーションを追加します。(BZ#1917280) -
OVN-Kubernetes ネットワークプロバイダーは、
NodePort
タイプサービスおよびLoadBalancer
タイプサービスのexternalTrafficPolicy
機能をサポートしていません。service.spec.externalTrafficPolicy
フィールドは、サービスのトラフィックをノードローカルまたはクラスター全体のエンドポイントにルーティングするかどうかを決定します。現在、このようなトラフィックはデフォルトでクラスター全体のエンドポイントにルーティングされており、トラフィックをノードローカルエンドポイントに制限する方法はありません。この問題は、今後のリリースで解決される予定です。(BZ#1903408) - 現在、Kubernetes ポートの衝突の問題により、Pod が再デプロイされた後でも、Pod 間の通信が機能しなくなる可能性があります。詳細および回避策については、Red Hat ナレッジベースソリューションの Port collisions between pod and cluster IPs on OpenShift 4 with OVN-Kubernetes を参照してください。(BZ#1939676、BZ#1939045)