はじめに
ROKS(Red Hat OpenShift on IBM Cloud)のクラスターへWebコンソールからログインしようとすると、エラー「RBAC情報の同期中に問題が発生しました」「An error occurred while waiting for RBAC to synchronize」が発生し、OpenShiftのWebコンソールを開くことができない/CLIでもログインできない事象がありました。
無事解決できましたので、起きた事象の詳細と、その解決方法をこちらに記載いたします!
事象
WebコンソールでOpenShiftクラスターへログインできない
右上の青いボタンをクリックしてOpenShiftのWeb Consoleを開こうとしましたが、エラー「RBAC情報の同期中に問題が発生しました」のポップアップが表示され、開くことができませんでした。
「このまま開く」をクリックすると、下のようなエラーが表示されました。
{"error":"server_error","error_description":"The authorization server encountered an unexpected condition that prevented it from fulfilling the request.","state":"xxxxx"}
CLIでもOpenShiftクラスターへログインできない
CLIからのログインも試してみましたが、ダメでした
クラスターへのログイン方法:https://cloud.ibm.com/docs/openshift?topic=openshift-access_cluster&locale=ja#access_oc_cli
- IBM Cloud パスコードを使用してログイン
400番エラーが出てしまいます。
% oc login -u passcode -p {I AMパスコード} --server={マスターURL}
Error from server (InternalError): Internal error occurred: unexpected response: 400
別のログイン方法も試してみます。。
- 管理者としてログイン
その後の$ oc get nodesコマンドを打てたため、ログインはできたようなのですが、エラー"An error occurred while waiting for RBAC to synchronize. 'kubectl' commands might fail."は出続けています。
$ ibmcloud oc cluster config -c {クラスターID} --admin
OK
The configuration for csur3t1t0iols6nph0cg was downloaded successfully.
Added context for csur3t1t0iols6nph0cg to the current kubeconfig file.
Waiting for RBAC synchronization to complete...
An error occurred while waiting for RBAC to synchronize. 'kubectl' commands might fail.
OK
You can now run 'kubectl' commands against your cluster. For example, run 'kubectl get nodes'.
$ oc get nodes
NAME STATUS ROLES AGE VERSION
xxxxxxxxx Ready master,worker 35d v1.29.9+5865c5b
xxxxxxxxx Ready master,worker 35d v1.29.9+5865c5b
解決方法
"master refresh"コマンドで解決できました!
ibmcloud oc cluster master refresh --cluster {クラスターID}
参照:https://cloud.ibm.com/docs/openshift?topic=openshift-kubernetes-service-cli#cs_apiserver_refresh
Kubernetesのような分散システムでは、クラスタ内の構成変更や同期が遅れることで一時的なエラーが発生することがあるため、master refreshのようなコマンドで状態をリフレッシュすることが有効な場合があるようです。
上記コマンドを実行すると、MasterのステータスがIBM Cloud Webコンソールにて「Updating」になりました。refreshが完了するまで、30分程かかります。
CLIでは、以下のコマンドでMaster Statusを確認できます。
$ ibmcloud oc cluster get -c {クラスターID}
・・・・・
(省略)
・・・・・
Master
Status: Refresh in progress. (6 minutes ago)
State: updating
Health: normal
・・・・・
(省略)
・・・・・
refreshが完了すると、以下のようにmaster statusが変わりました!
$ ibmcloud oc cluster get -c {クラスターID}
・・・・・
(省略)
・・・・・
MMaster
Status: Ready (15 minutes ago)
State: deployed
Health: normal
・・・・・
(省略)
・・・・・
masterのrefreshが完了したので、再びOpenShiftクラスターへのログインを試してみます。
- IBM Cloud パスコードを使用してログイン
$ oc login -u passcode -p {I AMパスコード} --server={マスターURL}
Login successful.
You have access to 68 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
Welcome! See 'oc help' to get started.
Rio_Tomita@cloudshell:~$ oc get nodes
NAME STATUS ROLES AGE VERSION
xxxxxxxxx Ready master,worker 35d v1.29.9+5865c5b
xxxxxxxxx Ready master,worker 35d v1.29.9+5865c5b
無事エラーが出ずにログインできました!!!✨