StatefulSetの復元時の IBM Software Hub・エラー

IBM® Software Hubのリストアは、StatefulSet c-db2oltp-wkc-db2uが作動不能であるために失敗します。

症状

ログ・ファイルに、以下のメッセージが記録されます。

time=<timestamp> level=debug msg=waiting for replicas of c-db2oltp-wkc-db2u statefulset (0/1) in namespace zen func=cpdbr-oadp/pkg/kube.waitForStatefulSet.func1 file=/go/src/cpdbr-oadp/pkg/kube/statefulset.go:98
time=<timestamp> level=debug msg=waiting for replicas of c-db2oltp-wkc-db2u statefulset (0/1) in namespace zen func=cpdbr-oadp/pkg/kube.waitForStatefulSet.func1 file=/go/src/cpdbr-oadp/pkg/kube/statefulset.go:98
time=<timestamp> level=debug msg=waiting for replicas of c-db2oltp-wkc-db2u statefulset (0/1) in namespace zen func=cpdbr-oadp/pkg/kube.waitForStatefulSet.func1 file=/go/src/cpdbr-oadp/pkg/kube/statefulset.go:98
time=<timestamp> level=debug msg=waiting for replicas of c-db2oltp-wkc-db2u statefulset (0/1) in namespace zen func=cpdbr-oadp/pkg/kube.waitForStatefulSet.func1 file=/go/src/cpdbr-oadp/pkg/kube/statefulset.go:98
time=<timestamp> level=error msg=failed to wait for statefulset c-db2oltp-wkc-db2u in namespace zen: timed out waiting for the condition func=cpdbr-oadp/pkg/kube.waitForStatefulSetPods file=/go/src/cpdbr-oadp/pkg/kube/statefulset.go:173
time=<timestamp> level=info msg=exit WaitForStatefulSetPodsViaLabels func=cpdbr-oadp/pkg/kube.KubeAPI.WaitForStatefulSetPodsViaLabels file=/go/src/cpdbr-oadp/pkg/kube/statefulset.go:155
time=<timestamp> level=info msg=exit waitForResourcePods func=cpdbr-oadp/pkg/planner.waitForResourcePods file=/go/src/cpdbr-oadp/pkg/planner/restore.go:571
time=<timestamp> level=info msg=exit RunRestoreHooks func=cpdbr-oadp/pkg/planner.RunRestoreHooks file=/go/src/cpdbr-oadp/pkg/planner/restore.go:522
time=<timestamp> level=error msg=restore post hooks error: timed out waiting for the condition func=cpdbr-oadp/cmd/cli/restore.(*createCommandContext).processCreate file=/go/src/cpdbr-oadp/cmd/cli/restore/create.go:557
restore post hooks error: timed out waiting for the condition
time=<timestamp> level=info msg=Successfully constructed k8s in cluster client func=cpdbr-oadp/pkg/kube.getKubernetesInClusterClient file=/go/src/cpdbr-oadp/pkg/kube/client.go:88
time=<timestamp> level=info msg=k8s server version: v1.25.8+37a9a08 func=cpdbr-oadp/pkg/kube.NewKubeAPI file=/go/src/cpdbr-oadp/pkg/kube/client.go:152
.
.
.
** PHASE [RESTORE CREATE/END] *************************************************
Error: restore failed with error: timed out waiting for the condition
time=<timestamp> level=error msg=restore failed with error: timed out waiting for the condition func=cpdbr-oadp/cmd.Execute file=/go/src/cpdbr-oadp/cmd/root.go:88
Time: <timestamp> level=error -  cpd-tenant-restore-<timestamp>-r4 failed

原因

古いセキュリティー・コンテキスト制約 (SCC) がクラスター内に存在します。

環境

この問題は、IBM Software Hub デプロイメントに、Db2Uへの依存関係を持つサービスが含まれている場合に発生します。例えば、以下のような場合です。
  • Data Virtualization
  • Db2
  • Db2 Big SQL
  • Db2 Warehouse
  • OpenPages

問題の診断

以下のコマンドを実行します。
oc describe sts c-db2oltp-wkc-db2u
このコマンドにより、以下の出力が作成されます。
...
Events:
  Type     Reason        Age                    From                    Message
  ----     ------        ----                   ----                    -------
  Warning  FailedCreate  4m32s (x186 over 17h)  statefulset-controller  create Pod c-db2oltp-wkc-db2u-0 in StatefulSet c-db2oltp-wkc-db2u failed error: pods "c-db2oltp-wkc-db2u-0" is forbidden: unable to validate against any security context constraint: ... spec.initContainers[0].securityContext.runAsUser: Invalid value: 500: must be in the ranges: ... Forbidden: not usable by user or serviceaccount, provider "privileged": Forbidden: not usable by user or serviceaccount]

問題の解決方法

以下のステップを実行します。
  1. 古い SCC を削除します。
    oc get scc | grep ${PROJECT_CPD_INST_OPERANDS} | awk '{print $1}' | xargs oc delete scc
  2. IBM Software Hub プロジェクトを削除します。

    詳しくは、IBM Software Hub ユーティリティーを使用した同じクラスターへのオンライン・バックアップおよびリストアOADPを参照してください。

  3. リストアを再試行してください。