保留状態の Elastic Container Instance ベースのポッド(ポッド)に対して課金されます。長期間保留状態のままになっている異常なポッドを処理しないと、不要な料金が発生する可能性があります。デフォルトでは、ポッドの最大保留期間は 4 時間です。ビジネス要件に基づいて最大保留期間を指定できます。ポッドがタイムアウトすると、システムは自動的にポッドを終了します。これは、異常なポッドをタイムリーに処理できないことが原因で発生する問題を防ぐのに役立ちます。
機能の説明
各エラスティックコンテナインスタンスはポッドと同等です。ポッドを作成すると、ポッドがスケジューリング状態から保留状態になった後、ポッドに対して課金されます。保留フェーズ中に、イメージのプルに失敗したり、ボリュームのマウントに失敗したりするなど、エラーが発生した場合、ポッドは保留状態のままになり、課金が継続されます。不要な料金が発生しないように、タイムリーに問題を解決する必要があります。デフォルトでは、システムは 4 時間以上保留状態のままになっているポッドを自動的に終了し、ポッドの課金を停止します。ポッドの最大保留期間を指定できます。
エラスティックコンテナインスタンスがスケジューリング、保留、または再起動状態の場合、PodStatus.Phase パラメーターで示される対応するポッドステータスは保留です。ただし、指定できる最大保留期間は、エラスティックコンテナインスタンスが保留状態になっている期間のみを指し、インスタンスがスケジューリング状態および再起動状態になっている期間は除きます。詳細については、ポッドのライフサイクル を参照してください。
構成の説明
ポッドの構成ファイルのメタデータに k8s.aliyun.com/eci-max-pending-minute
アノテーションを追加して、ポッドの最大保留期間を指定できます。アノテーションに関する次の制限事項に注意してください。
k8s.aliyun.com/eci-max-pending-minute アノテーションの値は、10 から 1440 までの整数である必要があります。単位:分。1440 分は 24 時間に相当します。
重要ビジネス要件に基づいて最大保留期間を指定します。ポッドを作成するときに、イメージが大きく、イメージキャッシュがない場合、イメージをプルするのに長時間かかります。この場合、指定した最大保留期間が短すぎると、ポッドの作成に失敗する可能性があります。
ポッドのメタデータにアノテーションを追加しない場合、デフォルトの最大保留期間は 4 時間です。
ポッドの init コンテナを構成し、init コンテナが実行されている場合、アノテーションはポッドに影響しません。
最大保留期間が経過すると、システムは対応するイベントを報告します。この場合、エラスティックコンテナインスタンスのステータスは「失敗」に変更され、PodStatus.Phase パラメーターで示される対応するポッドステータスは、restartPolicy パラメーターの値に基づいて決定されます。
restartPolicy パラメーターが Always または OnFailure に設定されている場合、PodStatus.Phase パラメーターの値は Pending です。
restartPolicy パラメーターが Never に設定されている場合、PodStatus.Phase パラメーターの値は Pending です。
構成例
最大保留期間が構成されているポッドを作成します。
kubectl create -f pending-test.yaml
次のサンプルコードは、イメージプルの失敗が原因で保留状態になっているポッドをシミュレートするために使用される pending-test.yaml ファイルの内容の例を示しています。
apiVersion: v1 kind: Pod metadata: name: pending-test labels: alibabacloud.com/eci: "true" annotations: k8s.aliyun.com/eci-max-pending-minute: "10" # 最大保留期間を 10 分に設定します。 spec: containers: - image: test****-registry.example.com/eci_test/nginx:1.0 # プルするプライベートイメージを指定します。イメージを実際のものに置き換えてください。 name: test-container restartPolicy: Never # コンテナの再起動ポリシーを Never に設定します。これは、コンテナを自動的に再起動しないことを指定します。
ポッドのステータスを確認します。
kubectl get pod <pod-name> -o=jsonpath='{.status.phase}'
コマンド出力例:
10 分待ちます。最大保留期間が経過したら、ポッドのステータスとイベント情報を確認します。
restartPolicy パラメーターが Never に設定されています。この場合、ポッドは最大保留期間が経過すると失敗状態になります。
kubectl get pod <pod-name> -o=jsonpath='{.status.phase}'
コマンド出力例:
ポッドのイベント情報を表示します。
kubectl get events --field-selector involvedObject.name=<pod-name>
コマンド出力例:
説明また、Elastic Container InstanceコンソールでPodが「失敗」状態になっているかどうかを確認し、インスタンスの詳細ページのイベントタブでイベント情報を確認することもできます。