アプリケーション保証: ポッドをより健全に実行する方法

Kubernetes の中核概念およびアトミック スケジューリング ユニットとしての Pod の主な役割は、コンテナを管理し、論理ホスト、コンテナ コレクション、およびプロセス グループの形式でアプリケーションを表すことです。

コンテナを作成するには、namespace、cgroup、chroot の 3 つの分離テクノロジがあります。その中で、namespace は独立したプロセス空間を実装し、chroot は独立したファイル システムを実装します。cgroup の役割は、コンテナが基本リソースを無制限に占有してシステム内の他のアプリケーションに影響を与えないように CPU とメモリを制御することです。

CPUとメモリについては、Podコンテナの説明部分にリソースを申請するClaimに相当する新しいフィールドresourcesを追加するだけです。その下には 2 つのフィールドがあります。

  • 「リクエスト」とは、コンテナが適用する必要があるリソースを意味します。つまり、Kubernetes はポッドの作成時にここにリストされているリソースを割り当てる必要があります。割り当てないと、コンテナは実行できません。
  • 「制限」とは、コンテナが使用するリソースの上限を意味します。設定値を超えると強制的に実行が停止される場合があります。

CPU とメモリという 2 つのリソースをリクエストする場合、それらがどのように表現されるかに特別な注意を払う必要があります。

メモリは、ディスク容量と同じように、512Ki、100Mi、0.5Gi などのように、KB、MB、GB を表す Ki、Mi、Gi を使用して書き込まれます。

CPU 時間は無限に分割できません。Kubernetes の最小 CPU 使用単位は 0.001 です。便宜上、「ミリ」を意味する特別な単位 m が使用されます。たとえば、500m は 0.5 に相当します。

Kubernetes では、アプリケーションの状態をチェックするための 3 つのプローブが定義されており、コンテナーのさまざまな状態に対応しています。

  • Startup (起動プローブ) は、アプリケーションが正常に起動したかどうかを確認するために使用され、初期化作業が多く、起動が非常に遅いアプリケーションに適しています。
  • 生存プローブである Liveness は、アプリケーションが正常に実行されているか、デッドロックや無限ループが発生していないかを確認するために使用されます。
  • Readiness プローブである Readiness は、アプリケーションがトラフィックを受信して​​外部サービスを提供できるかどうかを確認するために使用されます。

これら 3 つのプローブは進行的な関係にあり、最初にアプリケーションが起動し、設定ファイルやその他の基本的な初期化データをロードした後、Startup 状態に入り、その後異常がなければ Liveness 状態になりますが、問題が発生する可能性があります。完了していない準備作業である可能性があります。外部サービスを提供できるとは限りません。コンテナにとって最も健全で利用可能な状態となるのは、最終的な Readiness 状態のみです。

 ポッド内のコンテナがプローブで構成されている場合、Kubernetes はコンテナの起動後、継続的にプローブを呼び出してコンテナのステータスを確認します。

  • Startup プローブが失敗すると、Kubernetes はコンテナが正常に起動していないと判断し、繰り返し再起動を試行しますが、当然、その背後にある Liveness プローブと Readiness プローブは起動しません。
  • Liveness プローブが失敗した場合、Kubernetes はコンテナーが異常であると判断し、コンテナーを再起動します。
  • readiness プローブが失敗した場合、Kubernetes はコンテナーは実行されているものの、内部エラーが発生し、サービスを正常に提供できないと判断し、Service オブジェクトの負荷分散コレクションからコンテナーを除外し、コンテナーにトラフィックを割り当てません。

 startupProbe、livenessProbe、readinessProbe の設定方法は同じで、いくつかのキー フィールドがあります。

  • periodSeconds、検出アクションを実行する時間間隔。デフォルトでは 10 秒ごとに検出されます。
  • timeoutSeconds、検出アクションのタイムアウト期間。タイムアウトになった場合、検出は失敗とみなされます。デフォルトは 1 秒です。
  • successThreshold は、複数の連続したプローブが成功した場合にのみ正常とみなされます。startupProbe と livenessProbe では 1 のみにすることができます。
  • FailureThreshold は、連続して異常とみなされる検出失敗の回数で、デフォルトは 3 回です。

検出方法に関しては、Kubernetes はシェル、TCP ソケット、HTTP GET の 3 つのタイプをサポートしており、これらもプローブで構成する必要があります。

  • exec は、コンテナのコマンド フィールドによく似た ps、cat などの Linux コマンドを実行します。
  • tcpSocket。TCP プロトコルを使用して、コンテナーの指定されたポートへの接続を試行します。
  • httpGet、ポートに接続し、HTTP GET リクエストを送信します。

この記事は7月の22日目の学習メモです 内容はGeek Timeの「Kubernetes入門実践講座」ですお勧めの講座です。

おすすめ

転載: blog.csdn.net/key_3_feng/article/details/131872189