このトピックでは、Container Service for Kubernetes (ACK) コンソールを使用してクラスターにアクセスするときに発生する例外とその原因について説明します。 このトピックでは、これらの例外に対するソリューションも提供します。 例外の例: クラスターリソースにアクセスするときにAPIサーバーリクエスト例外が発生し、ポッドのログにアクセスするときにAPIサーバーリクエスト例外が発生し、現在のアカウントには操作を実行するために必要なロールベースのアクセス制御 (RBAC) 権限がなく、現在のアカウントには操作を実行するために必要なRAM権限がありません。
クラスターリソースにアクセスすると、APIサーバーリクエストの例外が発生し、ErrorQueryClusterNamespace
またはAPIServer.500
エラーコードが返されます。
問題
ACKコンソールを使用してクラスターリソースにアクセスすると、「現在のクラスターのAPIサーバーへのリクエストの処理中にエラーが発生しました」というエラーメッセージが返されます。エラーコードはErrorQueryClusterNamespace
またはAPIServer.500
です。
原因
APIサーバーの負荷分散設定が無効であるか、APIサーバーのステータスが異常です。 その結果、ACK管理サービスがAPIサーバに接続できなくなります。
解決策
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスターページで、管理するクラスターをクリックします。
クラスターの詳細ページで、基本情報タブをクリックし、APIサーバーSLBの右側にあるハイパーリンクをクリックします。Server Load Balancer (SLB) コンソールにログインします。
システムが指定されたSLB IDは存在しません。 メッセージが表示されると、APIサーバーのSLBインスタンスが削除またはリリースされます。 SLBインスタンスは復元できません。 この問題を解決するには、クラスターを再作成する必要があります。 詳細については、「ACK管理クラスターの作成」をご参照ください。
前のメッセージが表示されない場合は、次の手順に進みます。
SLBインスタンスの「ステータス」列が「実行中(Running)」を表示しているか確認します。
SLBインスタンスが実行中状態でない場合、SLBインスタンスは一時停止またはロックされる可能性があります。 SLBインスタンスの期限が過ぎた場合、従量課金SLBインスタンスは停止されます。 SLBインスタンスのサブスクリプションが期限切れになると、サブスクリプションSLBインスタンスはロックされます。 料金滞納を決済するか、サブスクリプションを更新してから、SLBインスタンスを再起動する必要があります。 SLBインスタンスに関連する料金滞納の詳細については、「料金滞納」をご参照ください。
SLBインスタンスが [実行中] 状態の場合は、次の手順に進みます。
SLBインスタンスに、フロントエンドプロトコル /ポートとバックエンドプロトコル /ポートの設定がTCP:6443に設定されているリスナーがあり、リスナーのステータス列に実行中が表示されているかどうかを確認します。
上記のリスナーが存在しない場合、APIサーバーのリスナーの構成が変更されます。
前のリスナーが存在し、リスナーが [停止済み] 状態の場合は、リスナーを選択して [開始] をクリックします。
上記のリスナーが存在しない場合は、次のいずれかの操作を実行します。
お使いのクラスターがACK管理クラスターの場合、
チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。
お使いのクラスターがACK専用クラスターの場合、すべてのマスターノードがデフォルトのサーバーグループに追加されていることを確認します。 次に、フロントエンドプロトコル /ポートとバックエンドプロトコル /ポートの設定がTCP:6443に設定されているリスナーを作成し、リスナーをデフォルトサーバーグループに関連付けて起動します。 リスナーの追加方法の詳細については、「TCPリスナーの追加」をご参照ください。
上記のリスナーが存在し、通常どおり実行される場合は、次の手順に進みます。
ヘルスチェックステータスリスナーの列が通常が表示されているかどうかを確認して下さい。
ヘルスチェックのステータスが正常でない場合、APIサーバーのSLBインスタンスのバックエンドサーバーは異常です。
お使いのクラスターがACK管理クラスターの場合、
チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。
お使いのクラスターがACK専用クラスターの場合、次の操作を実行して問題をトラブルシューティングします。 問題が解決しない場合は、
チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。
ACKコンソールのクラスター詳細ページで、[クラスターリソース] タブをクリックします。 [マスターインスタンス] の右側にあるハイパーリンクをクリックして [Elastic Compute Service (ECS) コンソール] にログインし、ECSインスタンスのステータスが [実行中] であるかどうかを確認します。
説明手順を繰り返して、すべてのマスターインスタンスを確認します。
ECSコンソールを使用してマスターノードにログインし、APIサーバーのコンテナーが正常に実行されているかどうかを確認します。
マスターノードにログインする方法の詳細については、「接続方法の概要」をご参照ください。
マスターノードにログインした後, 次のいずれかの方法でAPIサーバーのコンテナーが正常に動作しているかどうかを確認します。
クラスターがDockerランタイムを使用している場合は、
docker ps | grep kube-apiserver
コマンドを実行します。 次に、docker inspect
コマンドを実行して、最初のコマンドによって返された出力に基づいてコンテナのステータスを確認します。クラスターがcontainerdランタイムを使用している場合は、
crictl ps | grep kube-apiserver
コマンドを実行します。 次に、crictl inspect
コマンドを実行して、最初のコマンドで返された出力に基づいてコンテナのステータスを確認します。
リスナーのヘルスチェックのステータスが [正常] の場合は、次の手順に進みます。
前のリスナーのアクセス制御が有効になっているかどうかを確認します。
リスナーのアクセス制御が有効になっている場合、リスナーのホワイトリストが正しく設定されていないことを示します。 この問題を解決するには、CIDRブロック
100.104.0.0/16
をホワイトリストに追加します。 CIDRブロックは、ACK管理サービスによってAPIサーバーに送信される内部要求の送信元IPアドレスを指定します。 アクセス制御の詳細については、「アクセス制御」をご参照ください。リスナーのアクセス制御が無効になっている場合は、次の手順に進みます。
上記の理由で例外が発生しない場合は、
チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。
ポッドのログにアクセスするとAPIサーバー要求例外が発生します
ポッドのログにアクセスしたときにこの例外が発生したが、通常どおり他のクラスターリソースにアクセスできる場合は、次の操作を実行して問題をトラブルシューティングします。
ポッドのステータスが [実行中] かどうかを確認します。 ポッドのステータスが実行中でない場合は、「ポッドのトラブルシューティング」をご参照ください。
ノードリストでポッドがデプロイされているノードを見つけ、ノードのインスタンスIDをクリックしてECSコンソールにログインします。 次に、[セキュリティグループルールの設定] をクリックします。
すべてのセキュリティグループルールを確認して、VPCからのTCPポート10250宛てのインバウンドトラフィックが許可されていることを確認します。 インバウンドトラフィックが拒否された場合は、インバウンドトラフィックを許可するセキュリティグループルールを追加します。 詳細については、「セキュリティグループルールの追加」をご参照ください。
上記の理由で例外が発生しない場合は、
チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。
現在のアカウントには、操作を実行するために必要なRBAC権限がなく、ForbiddenQueryClusterNamespace
またはAPISERVER.403
エラーコードが返されます。
問題
ACKコンソールにアクセスすると、「現在のアカウントには操作を実行するために必要なRBAC権限がありません」というエラーメッセージが返されます。 エラーコードはForbiddenQueryClusterNamespace
またはAPISERVER.403
です。
原因
使用するアカウントには、操作を実行するために必要なRBAC権限がありません。
解決策
Alibaba Cloudアカウントまたは管理者権限を持つアカウントを使用して、ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[権限付与] をクリックします。
RAM ユーザー タブで、エラーの原因となったRAMユーザーを見つけ、RAMユーザーの アクセス権限の管理 をクリックします。
[権限管理] ページで、ロール権限の追加 をクリックし、クラスター、名前空間、および定義済みのRBACロールを選択し、[送信] をクリックします。
現在のアカウントには、操作を実行するために必要なRAM権限がなく、StatusForbidden
エラーコードが返されます。
問題
ACKコンソールにアクセスすると、「現在のアカウントには操作を実行するために必要なRAM権限がありません」というエラーメッセージが返されます。 エラーコードはStatusForbidden
です。
原因
使用するアカウントには、操作を実行するために必要なRAM権限がありません。
解決策
Alibaba CloudアカウントまたはRAM権限を持つアカウントを使用して、RAMコンソール二ログインします。
CS: DescribeKubernetes VersionMetadataなど、システムから返されるcs情報に基づいて、必要な権限をアカウントに付与します。 詳細については、「カスタムRAMポリシーの作成」をご参照ください。