1.4. Red Hat Advanced Cluster Management のアップグレード後に ocm-controller エラーのトラブルシューティング
2.7.x から 2.8.x、さらに 2.9.0 にアップグレードすると、multicluster-engine
namespace の ocm-controller
がクラッシュします。
1.4.1. 現象: Red Hat Advanced Cluster Management のアップグレード後に ocm-controller エラーのトラブルシューティング
ManagedClusterSet
および ManagedClusterSetBinding
カスタムリソース定義をリスト表示しようとすると、次のエラーメッセージが表示されます。
Error from server: request to convert CR from an invalid group/version: cluster.open-cluster-management.io/v1beta1
前のメッセージは、v1beta1
から v1beta2
への ManagedClusterSets
および ManagedClusterSetBindings
カスタムリソース定義の移行が失敗したことを示しています。
1.4.2. 問題の解決: Red Hat Advanced Cluster Management アップグレード後の ocm-controller エラーのトラブルシューティング
このエラーを解決するには、API の移行を手動で開始する必要があります。以下の手順を実行します。
cluster-manager
を以前のリリースに戻します。以下のコマンドを使用して
multiclusterengine
を一時停止します。oc annotate mce multiclusterengine pause=true
以下のコマンドを実行して、
cluster-manager
deployment のイメージを以前のバージョンに置き換えます。oc patch deployment cluster-manager -n multicluster-engine -p \ '{"spec":{"template":{"spec":{"containers":[{"name":"registration-operator","image":"registry.redhat.io/multicluster-engine/registration-operator-rhel8@sha256:35999c3a1022d908b6fe30aa9b85878e666392dbbd685e9f3edcb83e3336d19f"}]}}}}' export ORIGIN_REGISTRATION_IMAGE=$(oc get clustermanager cluster-manager -o jsonpath='{.spec.registrationImagePullSpec}')
ClusterManager
リソースの登録イメージ参照を以前のバージョンに置き換えます。以下のコマンドを実行します。oc patch clustermanager cluster-manager --type='json' -p='[{"op": "replace", "path": "/spec/registrationImagePullSpec", "value": "registry.redhat.io/multicluster-engine/registration-rhel8@sha256:a3c22aa4326859d75986bf24322068f0aff2103cccc06e1001faaf79b9390515"}]'
以下のコマンドを実行して、
ManagedClusterSets
およびManagedClusterSetBindings
カスタムリソース定義を以前のリリースに戻します。oc annotate crds managedclustersets.cluster.open-cluster-management.io operator.open-cluster-management.io/version- oc annotate crds managedclustersetbindings.cluster.open-cluster-management.io operator.open-cluster-management.io/version-
cluster-manager
を再起動し、カスタムリソース定義が再作成されるまで待ちます。以下のコマンドを実行します。oc -n multicluster-engine delete pods -l app=cluster-manager oc wait crds managedclustersets.cluster.open-cluster-management.io --for=jsonpath="{.metadata.annotations['operator\.open-cluster-management\.io/version']}"="2.3.3" --timeout=120s oc wait crds managedclustersetbindings.cluster.open-cluster-management.io --for=jsonpath="{.metadata.annotations['operator\.open-cluster-management\.io/version']}"="2.3.3" --timeout=120s
以下のコマンドを使用して、ストレージバージョンの移行を開始します。
oc patch StorageVersionMigration managedclustersets.cluster.open-cluster-management.io --type='json' -p='[{"op":"replace", "path":"/spec/resource/version", "value":"v1beta1"}]' oc patch StorageVersionMigration managedclustersets.cluster.open-cluster-management.io --type='json' --subresource status -p='[{"op":"remove", "path":"/status/conditions"}]' oc patch StorageVersionMigration managedclustersetbindings.cluster.open-cluster-management.io --type='json' -p='[{"op":"replace", "path":"/spec/resource/version", "value":"v1beta1"}]' oc patch StorageVersionMigration managedclustersetbindings.cluster.open-cluster-management.io --type='json' --subresource status -p='[{"op":"remove", "path":"/status/conditions"}]'
次のコマンドを実行して、移行が完了するまで待ちます。
oc wait storageversionmigration managedclustersets.cluster.open-cluster-management.io --for=condition=Succeeded --timeout=120s oc wait storageversionmigration managedclustersetbindings.cluster.open-cluster-management.io --for=condition=Succeeded --timeout=120s
cluster-manager
を Red Hat Advanced Cluster Management 2.12 に復元します。これには数分の時間がかかる場合があります。以下のコマンドを実行します。oc annotate mce multiclusterengine pause- oc patch clustermanager cluster-manager --type='json' -p='[{"op": "replace", "path": "/spec/registrationImagePullSpec", "value": "'$ORIGIN_REGISTRATION_IMAGE'"}]'
1.4.2.1. 検証
Red Hat Advanced Cluster Management が復元されていることを確認するには、以下のコマンドを実行します。
oc get managedclusterset oc get managedclustersetbinding -A
コマンドを実行すると、ManagedClusterSets
および ManagedClusterSetBindings
リソースがエラーメッセージなしで表示されます。