クラスターに関する一般的な 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 は、サーバーのバージョンから 2 つ以上離れたバージョン(n +/-2)の kubectl
クライアントのバージョンはサポートしません。 コミュニティー 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 を有効にします。