クラスターに関する一般的な CLI の問題のデバッグ
仮想プライベートクラウド クラシック・インフラストラクチャー
CLI の接続の問題またはコマンドの失敗の理由としてよくある理由を次に示します。
ファイアウォールがあるために CLI コマンドを実行できない
CLI からコマンド ibmcloud、kubectl、または calicoctl を実行すると、失敗します。
ローカル・システムからプロキシーまたはファイアウォール経由での公共のエンドポイントへのアクセスが企業ネットワーク・ポリシーによって禁止されている可能性があります。
このタスクには、クラスターに対する 管理者 IBM Cloud IAM プラットフォーム・アクセス役割が必要です。
kubectl コマンドが機能しない
クラスタに対して kubectl ・コマンドを実行すると、次の例のようなエラー・メッセージが表示されてコマンドが失敗します。
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 バージョンを確認するには、kubectl version --short を実行します。
クラスターのバージョンに一致する CLI のバージョンをインストール します。
異なるバージョンの複数のクラスタや、 Red Hat OpenShift のような異なるコンテナ・プラットフォームがある場合、 kubectl の各バージョンのバイナリ・ファイルを別々のディレクトリにダウンロードする。 その後、操作するクラスターの kubectl バージョンに一致する kubectl バイナリー・ファイル・ディレクトリーを指すように、ローカル・コマンド・ライン・インターフェース (CLI)
プロファイルで別名をセットアップすることができます。あるいは、brew switch kubernetes-cli <major.minor> などのツールを使用することもできます。
kubectl コマンドがタイムアウトする
kubectl exec、kubectl attach、kubectl proxy、kubectl port-forward、kubectl logs などのコマンドを実行すると、以下のメッセージが表示されます。
<workerIP>:10250: getsockopt: connection timed out
kubectl -n kube-system logs metrics-server-65fc69c6b7-f682d -c metrics-server
Error from server: Get “https://10.38.193.213:10250/containerLogs/kube-system/metrics-server-65fc69c6b7-f682d/metrics-server”: EOF
kubectl -n kube-system exec -it metrics-server-65fc69c6b7-f682d -c metrics-server -- sh
Error from server: error dialing backend: EOF
ご使用のクラスター・バージョンに対応する以下のステップを確認して実行します。
- バージョン 1.21 以降では、マスター・ノードとワーカー・ノードの間の Konnectivity VPN 接続が正しく機能しません。
- クラスターのプライベートとパブリックの両方のサービス・エンドポイントを有効にする。
- アカウントでサービス・エンドポイントまたは VRF を有効にしていない。
アカウントで VRF とサービス・エンドポイントが有効になっているかどうかを調べるには、ibmcloud account show を実行してください。 以下の出力を検索します。
VRF Enabled: true
Service Endpoint Enabled: true
クラシック・クラスターでパブリック・サービス・エンドポイントとプライベート・サービス・エンドポイントの両方が有効になっているかどうかを判別するには、ibmcloud ks cluster get -c <cluster_id> を実行します。 以下のような出力を探します。
Public Service Endpoint URL: https://c105.<REGION>.containers.cloud.ibm.com:<port>
Private Service Endpoint URL: https://c105.private.<REGION>.containers.cloud.ibm.com:<port>
クラスターがこれらの条件を満たしている場合は、アカウントの サービス・エンドポイントと VRF を有効にします。