Flex Gateway新着情報
Governance新着情報
Monitoring API Managerサービスを実行しようとすると、デプロイメントポートやロードバランサーの問題など、デプロイメントの問題に起因するエラーメッセージが返されることがあります。
デプロイメントの準備ができていないか、またはインストールを完了してサービスを実行しようとしたときにデプロイメントでエラーが発生することがあります。
この問題の原因はいくつか考えられます。
この問題を診断する手順は、次のとおりです。
デプロイメントの状況を確認します。
$ kubectl -n namespace get deployments
準備完了を示す列に M/N (M < N) と示されます。
影響を受けているポッドの状況を確認します。
$ kubectl -n namespace get pods
この問題を解決する手順は、次のとおりです。
診断結果に応じて次のいずれかのアクションを実行します。
ErrImagePull
または ImagePullBackOff
イメージを取り込めません。デプロイメント仕様またはポッドのイメージ値が有効なリポジトリまたはイメージ名を参照していることを確認します。
Pending
ポッドに必要なリソースが割り当てられていることを確認します。デプロイメントを編集して CPU とメモリの要求量を減らすか、またはクラスターを拡張してください。
CrashLoopBackOff
ポッドの状態の確認を要求して、エラーの詳細を入手します。
$ kubectl -n namespace describe pod pod-name
description コマンドからの出力のイベントセクションで、デプロイメントの状況 (live または ready) を示すログがないか確認します。
デプロイメントの存在と準備完了のプローブが正しく設定されていて、アプリケーションの既存エンドポイントと一致することを確認します。
初期遅延または期間を延長し、ポッドで応答とログを手動で確認します。
$ kubectl -n namespace logs pod-name
特定のポートに対する要求がエラーとなる原因はいくつか考えられます。
問題を診断するには、次のコマンドを実行します。
$ kubectl -n namespace get deployments
準備完了を示す列に M/N (100% ready) と示されます。ただし、宣言されたポートに対する要求が、アプリケーションとは無関係な理由 (「upstream connect error (上流接続エラー) や「disconnect or reset before headers (ヘッダー前の切断またはリセット)」など) で失敗します。
この問題を解決する手順は、次のとおりです。
要求がデプロイメントポートのいずれかを対象としていることを確認します。
デプロイメントポートがイメージの Dockerfile で公開されていることを確認します。
外部からサービスにアクセスできるようにするには、作成するときにサービスを公開する必要があります。
サービスを公開することで、外部からアクセスできる IP アドレスが用意され、この IP アドレスを使用してクラスターノードの正しいポートにトラフィックを送信することができます。ただし、クラスターがサポート対象の環境で動作していて、正しいクラウドロードバランサープロバイダーパッケージで設定されている必要があります。
サービスの公開に失敗すると、サービスの IP アドレスに対するすべての要求は無応答状態となります。
この問題は、サービスをロードバランサーとして公開しなかった場合に発生します。
サービスの問題を診断します。
$ kubectl -n namespace get service
結果の Type
列には「LoadBalancer」、External-IP
列には「<none>」と表示されます。
この問題を解決するには、サービス仕様を確認します。サービスを公開して使用できるようにするには、サービス仕様をロードバランサーとして設定する必要があります。
サービスを公開しない場合は、エンドポイントをクラスター内から使用するか、または次のコマンドでクラスター外からエンドポイントにアクセスする必要があります。
$ kubectl port-forward or kubectl proxy