クラスターに関する一般的な CLI の問題のデバッグ
仮想プライベートクラウド クラシック・インフラストラクチャー
CLI の接続の問題またはコマンドの失敗の理由としてよくある理由を次に示します。
ファイアウォールがあるために CLI コマンドを実行できない
CLI からコマンド ibmcloud、kubectl、oc、または calicoctl を実行すると、失敗します。
ローカル・システムからプロキシーまたはファイアウォール経由での公共のエンドポイントへのアクセスが企業ネットワーク・ポリシーによって禁止されている可能性があります。
このタスクには、クラスターに対する 管理者 IBM Cloud IAM プラットフォーム・アクセス役割が必要です。
kubectl または oc コマンドが機能しない
クラスタに対して kubectl または oc コマンドを実行すると、次の例のようなエラーメッセージが表示されてコマンドが失敗します。
No resources found.
Error from server (NotAcceptable): unknown (get nodes)
invalid object doesn't have additional properties
error: No Auth Provider found for name "oidc"
クラスターのバージョンとは異なるバージョンの kubectl があります。
Kubernetes をサポートしていない kubectl クライアントのバージョンがサーバーのバージョンと2つ以上離れている(n±2)。 コミュニティー Kubernetes クラスターを使用している場合は、Red Hat OpenShift バージョンの
kubectl を使用している可能性もあります。これは、コミュニティー Kubernetes クラスターに対しては機能しません。
クラスター・サーバー・バージョンと比較してクライアント kubectl バージョンを確認するには、oc version --short を実行します。
クラスターのバージョンに一致する CLI のバージョンをインストール します。
異なるバージョンの複数のクラスタや、 Red Hat OpenShift のような異なるコンテナ・プラットフォームがある場合、 kubectl の各バージョンのバイナリ・ファイルを別々のディレクトリにダウンロードする。 その後、操作するクラスターの kubectl バージョンに一致する kubectl バイナリー・ファイル・ディレクトリーを指すように、ローカル・コマンド・ライン・インターフェース (CLI)
プロファイルで別名をセットアップすることができます。あるいは、brew switch kubernetes-cli <major.minor> などのツールを使用することもできます。
ポッドに接続しようとするとタイムアウトになる
oc exec によるログインや、oc logs によるログの取得などで、ポッドに接続しようとすると、 ポッドは正常だが、次の例のようなエラーメッセージが表示される。
Error from server: Get https://<10.xxx.xx.xxx>:<port>/<address>: dial tcp <10.xxx.xx.xxx>:<port>: connect: connection timed out
VPNサーバーの設定に問題があり、内部アドレスからポッドにアクセスできない。
始める前に、Red Hat OpenShift クラスターにアクセスします。
- コンソールでクラスターとワーカー・ノードの詳細を表示するか、
cluster lsコマンドまたはworker lsコマンドを使用して、クラスターとワーカー・ノードの更新が提供されているか確認します。 更新が提供されている場合は、クラスターとワーカー・ノードを最新バージョンに更新します。 - VPNポッドを削除して再起動する。 別の VPN ポッドがスケジュールされます。 その**「状況」が「実行中」**になったら、これまで接続できなかったポッドに接続してみてください。
oc delete pod -n kube-system -l app=vpn
を介して Red Hat OpenShift クラスタにログインしようとすると 500 エラーが発生する。 oc login
oc login 、初めて Red Hat OpenShift クラスタにログインしようとすると、次の例のようなエラーメッセージが表示されます。
$ oc login SERVER -u apikey -p <APIKEY>
The server uses a certificate signed by an unknown authority.
You can bypass the certificate check, but any data you send to the server could be intercepted by others.
Use insecure connections? (y/n): y
Error from server (InternalError): Internal error occurred: unexpected response: 500
IAM ユーザー役割に対する最近の変更の一部は、まだ Red Hat OpenShift クラスターに同期されていません。
IAM ユーザー情報を Red Hat OpenShift クラスターに同期します。 初期ユーザー同期が実行された後、さらに RBAC 同期が自動的に行われます。
始める前に
Red Hat OpenShift クラスターにアクセスします。
ユーザーの IAM 情報を同期するには、以下の 2 つのオプションがあります:
- Red Hat OpenShift コンソールからクラスタにログインします。
ibmcloud oc cluster config --cluster CLUSTERコマンドを実行して、クラスターのコマンド・ライン・コンテキストを設定します。
機能 ID または別のユーザーに対して API キーを使用する場合は、必ず正しいユーザーでログインしてください。
影響を受けるユーザーが IAM 同期を完了した後、クラスター管理者は、oc get users コマンドを使用してユーザーをリストすることにより、そのユーザーがクラスター内に存在することを確認できます。
プロジェクトが欠落しているか、oc コマンドと kubectl コマンドが失敗する
仮想プライベートクラウド クラシック・インフラストラクチャー
アクセスできるすべてのプロジェクトが表示されるわけではありません。 oc コマンドまたは kubectl コマンドを実行しようとすると、以下のようなエラーが表示されます。
No resources found.
Error from server (Forbidden): <resource> is forbidden: User "IAM#user@email.com" can't list <resources> at the cluster scope: no RBAC policy matched
cluster-admin クラスタ・ロールを必要とするコマンドを実行するには、クラスタの admin 設定ファイルをダウンロードする必要があります。
ibmcloud oc cluster config --cluster <cluster_name_or_ID> --admin を実行して、再試行してください。