このトピックでは、Container Service for Kubernetes (ACK) コンソールにおける 4 種類のクラスターアクセス失敗について説明します。これらは、API サーバーリクエスト例外、Pod ログアクセス失敗、ロールベースアクセス制御 (RBAC) 権限の不足、および Resource Access Management (RAM) 権限の不足です。
クイックナビゲーション
エラーコードを見つけて、関連するセクションに移動してください。
| エラーコード | セクション |
|---|---|
ErrorQueryClusterNamespace, APIServer.500 |
API サーバーリクエスト例外 |
| Pod ログにアクセスできない、他のリソースは正常に動作する | Pod ログアクセス失敗 |
ForbiddenQueryClusterNamespace, APISERVER.403 |
RBAC 権限の不足 |
StatusForbidden |
RAM 権限の不足 |
API サーバーリクエスト例外 (ErrorQueryClusterNamespace または APIServer.500)
症状
クラスターリソースにアクセスすると、ACK コンソールに次のエラーが表示されます。
An error occurred while processing your request to the API server of the current cluster.
エラーコード: ErrorQueryClusterNamespace または APIServer.500
原因
API サーバーの負荷分散構成が無効であるか、API サーバーのステータスが異常であるため、ACK 管理サービスが API サーバーに接続できません。
ソリューション
ステップ 1: SLB インスタンスの存在を確認
-
ACK コンソールACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
-
対象のクラスター名をクリックします。左側のナビゲーションウィンドウで、[クラスター情報] をクリックします。
-
「基本情報」タブで、「API サーバー SLB」の横にあるリンクをクリックして、Server Load Balancer (SLB) コンソールを開きます。
コンソールに [The specified SLB ID does not exist.] と表示された場合、API サーバーの SLB インスタンスが削除または解放されているため、クラスターは復元できません。 クラスターを再作成してください。 詳細については、「ACK マネージドクラスターを作成する」をご参照ください。
ステップ 2: SLB インスタンスのステータスを確認
SLB インスタンスの[ステータス]が[実行中]であるかを確認します。
ステータスが [実行中] でない場合は、支払い遅延またはサブスクリプションの有効期限切れを確認してください。支払い遅延を精算するか、サブスクリプションを更新してから、SLB インスタンスを再起動します。課金の詳細については、「CLB 課金」をご参照ください。
ステップ 3: リスナー構成の確認
[リスナー] タブをクリックし、フロントエンドプロトコル/ポートとバックエンドプロトコル/ポートの両方が[TCP:6443]に設定され、ステータスが実行中であるリスナーを確認します。
そのようなリスナーが存在しないか、リスナーが実行中でない場合:
-
リスナーが存在し、そのステータスが停止の場合は、それを選択して[有効化]をクリックします。
-
リスナーが存在しない場合:
-
ACK マネージドクラスターの場合は、チケットを送信チケットを送信チケットを送信チケットを送信チケットを送信します。ACK はマネージドクラスターのマスターノードを管理しているため、プラットフォームがリスナー構成を復元する必要があります。
-
ACK 専用クラスターの場合は、すべてのマスターノードをデフォルトサーバーグループに追加します。 次に、[フロントエンドプロトコル/ポート] と [バックエンドプロトコル/ポート] の両方を [TCP:6443] に設定してリスナーを作成し、それを [デフォルトサーバーグループ] に関連付け、リスナーを開始します。 詳細については、「TCP リスナーを追加する」をご参照ください。
-
ステップ 4: ヘルスチェックステータスの確認
リスナーの [ヘルスチェックステータス] 列に 正常 と表示されているかどうかを確認します。
ステータスが [正常] でない場合、SLB インスタンスのバックエンドサーバーは異常です。
-
ACK マネージドクラスターの場合、チケットを送信チケットを送信チケットを送信チケットを送信チケットを送信。ACK はマネージドクラスターのマスターノードを管理しており、直接アクセスすることはできません。
-
ACK 専用クラスターについては、次のようにトラブルシューティングを行います。トラブルシューティング後も問題が解決しない場合は、チケットを送信チケットを送信チケットを送信チケットを送信チケットを送信。
-
「[ノード] > [ノード]」ページで、ACK コンソールACK コンソール に移動し、各マスターノードの ECS インスタンス ID をクリックして、ECS コンソール でそのインスタンスが [実行中] 状態であることを確認します。
-
ECS コンソール経由で各マスターノードにログインし、API サーバーコンテナのステータスを確認します。マスターノードへのログイン方法については、「接続方法の概要」をご参照ください。
-
Docker ランタイム:
docker ps | grep kube-apiserver次に、
docker inspect <container-id>を実行してコンテナのステータスを確認します。 -
containerd ランタイム:
crictl ps | grep kube-apiserver次に、
crictl inspect <container-id>を実行してコンテナのステータスを確認します。
-
-
ステップ 5: リスナーのアクセスの制御を確認
リスナーのアクセスの制御が有効になっていることを確認します。
アクセスの制御が有効になっている場合、ホワイトリストには ACK 管理サービスが使用する内部 IP 範囲が不足しています。CIDR ブロック 100.104.0.0/16 をホワイトリストに追加します。この CIDR ブロックは、ACK 管理サービスが API サーバーに送信する内部リクエストのソース IP アドレスをカバーします。詳細については、「アクセスの制御」をご参照ください。
ステップ 6: 問題が解決しない場合
Pod ログのアクセス失敗
このセクションは、Pod ログへのアクセスが失敗するものの、その他のクラスターリソースには通常通りアクセスできる場合に適用されます。
原因
Pod をホストするノードに設定されたセキュリティグループが、API サーバーによる Pod ログの取得に使用される TCP ポート 10250 へのインバウンドトラフィックを許可していません。
ソリューション
-
Pod の ステータス が Running であることを確認します。そうでない場合は、まず Pod の問題を解決してください。詳細については、「Pod のトラブルシューティング」をご参照ください。
-
ノード > ノード ページで、該当 Pod がデプロイされているノードを特定し、その ECS インスタンス ID をクリックします。ECS コンソールで、ネットワークとセキュリティ > セキュリティグループ をクリックします。
-
すべてのセキュリティグループルールを確認し、VPC からの TCP ポート 10250 へのインバウンドアクセスが許可されているかを検証します。許可されていない場合は、必要なルールを追加してください。詳細については、「セキュリティグループルールの追加」をご参照ください。
RBAC 権限の不足 (ForbiddenQueryClusterNamespace または APISERVER.403)
症状
ACK コンソールに次のエラーが表示されます。
The current account does not have the required RBAC permissions to perform the operation.
エラーコード: ForbiddenQueryClusterNamespace または APISERVER.403
原因
アカウントに必要な RBAC 権限がありません。
ソリューション
不足している RAM 権限 (StatusForbidden)
症状
ACK コンソールに次のエラーメッセージが表示されます。
現在のアカウントには、この操作を実行するための必要な RAM 権限がありません。
エラーコード: StatusForbidden
原因
アカウントに必要な RAM 権限が付与されていません。
解決方法
-
RAM コンソール に、Alibaba Cloud アカウントまたは RAM 権限を持つアカウントでログインします。
-
エラーメッセージに表示された CS の操作(例:
cs:DescribeKubernetesVersionMetadata)に基づき、必要な権限を付与します。詳細については、「カスタム RAM ポリシーの作成」をご参照ください。