このトピックでは、コンソールからクラスターにアクセスする際に発生する問題の現象、原因、および解決策について説明します。たとえば、現在のクラスターの API サーバーがリクエストエラーを返す、API サーバーのリクエストエラーが Pod のログにアクセスする際に発生する、または現在のアカウントに必要なクラスター RBAC 権限が付与されていない、などの問題が考えられます。
現在のクラスターの API サーバーリクエストの例外:ErrorQueryClusterNamespace または APIServer.500
現象
コンソールでクラスターリソースにアクセスすると、「クラスターの API サーバーへのリクエストで例外が発生しました」というエラーメッセージが表示され、エラーコード ErrorQueryClusterNamespace または APIServer.500 が返されることがあります。クラスター管理コンソールにエラーダイアログボックスが表示され、メッセージ「クラスターの API サーバーへのリクエストで例外が発生しました」、エラーコード ErrorQueryClusterNamespace、エラー詳細 failed to query access namespace for user、リクエスト URL https://192.168.xxx:10885/api/v1/namespaces?limit=300、およびエラー context deadline exceeded (Client.Timeout exceeded while awaiting headers) が表示されます。
原因
API サーバーの負荷分散の構成またはステータスが異常なため、Container Service のコントロールプレーンとクラスターの API サーバー間の接続に失敗します。
ソリューション
Container Service for Kubernetes (ACK) コンソールにログインします。左側のナビゲーションウィンドウで、クラスターリスト をクリックします。
クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションウィンドウで、クラスター情報 をクリックします。
-
基本情報 タブで、API サーバーの SLB のインスタンス ID をクリックして、SLB コンソールに移動します。
-
UI に ロードバランサー ID が存在しませんと表示された場合、API サーバーの負荷分散インスタンスが削除またはリリースされており、クラスターは回復できません。「ACK マネージドクラスターの作成」をご参照のうえ、クラスターを再作成してください。
-
インスタンスが存在する場合は、次のステップに進みます。
-
-
負荷分散インスタンスの ステータス が 実行中 であるかどうかを確認します。
-
実行中でない場合は、インスタンスの支払いが遅延しているか、期限切れになっていないかを確認します。その場合は、インスタンスを更新して有効化します。SLB の料金滞納についての詳細は、「料金滞納について」をご参照ください。
-
「はい」の場合、次のステップに進んでください。
-
-
リスナー をクリックし、フロントエンドとバックエンドの両方に TCP:6443 リスナーが存在し、その ステータス が 実行中 であることを確認します。
-
そうでない場合、API サーバーの負荷分散リスナーが変更されていることを示します。
-
リスナーが 無効化 状態の場合は、リスナーを選択して 有効化 をクリックします。
-
リスナーが存在しない場合は、次の手順を実行します。
-
ACK マネージドクラスターの場合:します。
-
ACK 専用クラスターの場合:すべてのクラスター Master ノードがデフォルトサーバーグループに追加されていることを確認します。次に、フロントエンドとバックエンドの両方を TCP:6443 に設定したリスナーを作成します。リスナーのバックエンドを デフォルトのサーバーグループ に設定し、リスナーを有効化します。詳細については、「TCP リスナーの追加」をご参照ください。
-
-
-
はいの場合、次の ステップに進んでください。
-
-
リスナーの ヘルスチェックステータス が 正常 であるかどうかを確認します。
-
正常でない場合、API サーバーの負荷分散バックエンドが異常であることを示します。
-
ACK マネージドクラスターの場合:します。
-
ACK 専用クラスターについては、以下のステップに従ってトラブルシューティングを行ってください。問題が解決しない場合は、チケットを送信してください。
-
ACK コンソールで、 に移動します。各 Master インスタンスについて、対応する Elastic Compute Service (ECS) インスタンス ID をクリックして ECS コンソールに移動し、インスタンスが 実行中 状態であることを確認します。
-
ECS コンソールで、各 Master ノードにリモートでログインし、API サーバーコンテナが正常に実行されているかどうかを確認します。
-
マスターノードへのログインについては、「接続方法」をご参照ください。
-
コンテナランタイムに基づいて、API サーバーコンテナのステータスを確認します。
-
Docker ランタイム:
docker ps | grep kube-apiserverコマンドを実行し、出力に基づいてdocker inspectコマンドを使用してコンテナのステータスを確認します。 -
containerd ランタイム:
crictl ps | grep kube-apiserverコマンドを実行し、出力に基づいてcrictl inspectコマンドを使用してコンテナのステータスを確認します。
-
-
-
-
-
「はい」の場合は、次のステップに進んでください。
-
-
指定されたリスナーでアクセス制御が有効になっているかどうかを確認します。
-
有効になっている場合、API サーバーの負荷分散リスナーのアクセス制御ホワイトリストが正しく構成されていないことを示します。アクセス制御ポリシーのホワイトリストに、アドレスブロック
100.104.0.0/16を追加する必要があります。このアドレスブロックは、ACK コントロールプレーンから API サーバーに内部アクセスするリクエストのソースアドレスブロックです。 -
「いいえ」の場合は、次のステップに進みます。
-
-
上記のいずれにも当てはまらない場合は、チケットを送信してください。
Pod ログアクセス時の API サーバーリクエストの異常
他のクラスターリソースにはアクセスできるが、Pod のログを表示するときにのみこの問題が発生する場合は、以下の手順に従ってください。
-
Pod のステータスが 実行中 であることを確認します。そうでない場合は、「Pod の問題のトラブルシューティング」をご参照ください。
-
ページで、ノードリストから Pod があるノードを探し、対応する ECS インスタンス ID をクリックします。ECS コンソールにリダイレクトされたら、セキュリティグループ をクリックします。
-
すべてのセキュリティグループルールを確認し、VPC からの TCP ポート 10250 へのインバウンドアクセスが許可されていることを確認します。許可されていない場合は、必要なルールを追加します。詳細については、「セキュリティグループルールの追加」をご参照ください。
-
問題が解決しない場合は、チケットを送信してください。
現在のアカウントに操作に必要なクラスター RBAC 権限が付与されていない:ForbiddenQueryClusterNamespace または APISERVER.403
現象
コンソールにアクセスすると、「現在のアカウントには、この操作に必要なクラスター RBAC 権限が付与されていません」というエラーメッセージが表示され、エラーコード ForbiddenQueryClusterNamespace または APISERVER.403 が返されます。クラスター管理コンソールで名前空間をクエリすると、エラーダイアログボックスが表示され、「現在のアカウントには、この操作に必要なクラスター RBAC 権限が付与されていません。プライマリアカウントまたは権限管理者に連絡して承認を依頼してください」というメッセージが表示されます。英語のエラーメッセージは Forbidden query namespaces で、エラーコードは ForbiddenQueryClusterNamespace です。
原因
お使いのアカウントには、この操作に必要なクラスター RBAC 権限がありません。
ソリューション
-
Alibaba Cloud アカウント (root ユーザー) または管理者権限を持つアカウントで ACK コンソールにログインします。左側のナビゲーションウィンドウで、承認 を選択します。
-
RAM ユーザー タブで、エラーが発生したユーザーを見つけ、ユーザー名の右側にある アクセス権限の管理 をクリックします。
-
ロール権限の追加 をクリックし、必要なクラスター、名前空間、および権限を選択してから、送信 をクリックします。
現在のアカウントに操作に必要な RAM 権限がない:StatusForbidden
症状
コンソールにアクセスすると、「現在のアカウントには、この操作に必要な RAM 権限が付与されていません」というエラーが発生します。エラーコードは StatusForbidden です。ACK コンソールで操作を実行すると、エラーダイアログボックスが表示され、「現在のアカウントには、この操作に必要な RAM 権限が付与されていません。マスターアカウントまたは RAM 管理者に連絡して承認を依頼してください」というメッセージが表示されます。エラーメッセージは RAM policy Forbidden for action cs:DescribeKubernetesVersionMetadata で、エラーコードは StatusForbidden です。
原因
お使いのアカウントには、この操作に必要な Resource Access Management (RAM) 権限がありません。
ソリューション
-
Alibaba Cloud アカウント (root ユーザー) または RAM 権限を持つアカウントを使用して、RAM コンソールにログインします。
-
エラーページに表示される CS 情報に基づいて、cs:DescribeKubernetesVersionMetadata などの必要な権限をアカウントに追加します。詳細については、「RAM を使用したクラスターとクラウドリソースへの権限付与」をご参照ください。