NetScaler CPX の Kubernetes プローブのサポート
Kubernetes は、アプリケーションが正しく初期化され、正常な状態を維持するように、起動プローブ、活性プローブ、および準備プローブを通じてコンテナのライフサイクルを管理します。NetScaler CPX は、既存の起動プローブと活性プローブに加えて、準備プローブをサポートするようになりました。このサポートにより、Kubernetes は、NetScaler CPX が完全に動作可能であり、構成されている場合はライセンスチェックアウトを正常に完了した場合にのみ、トラフィックを NetScaler CPX にルーティングします。
これらのプローブを使用することで、アプリケーションの可用性を向上させ、失敗したインスタンスや応答しないインスタンスが迅速に再作成されるようにすることができます。
利点の一部を以下に示します。
- 強化されたトラフィック管理: NetScaler CPX が要求を処理する準備ができたときにのみトラフィックを受信するようにします。
- 運用上の信頼性: 異常なコンテナを自動的に再起動して、障害から回復します。
- ライセンス検証:
LAS_CPX_BANDWIDTHパラメータを使用する場合、ライセンスチェックアウトが成功するまで準備状態を遅延させます。 - 正確な初期化: コンテナの起動からアクティブなヘルス監視への移行を調整します。
注:
準備プローブを使用するには、NetScaler CPX バージョン
14.1-72.x以降が必要です。プローブのメカニズムに関する詳細については、公式の Kubernetes ドキュメントを参照してください。
NetScaler CPX の Kubernetes プローブを構成する
NetScaler CPX のプローブを構成するには、Kubernetes デプロイ YAML ファイルでプローブパラメータを定義します。
CLI を使用してプローブを構成する
デプロイ YAML ファイルを編集して、Kubernetes が NetScaler CPX コンテナの状態を検証するために使用する特定の exec コマンドを含めます。
起動プローブの構成: 次のスニペットを追加して、Kubernetes が初期化プロセスが完了するのを待つようにします。NetScaler CPX は、 ファイルを作成することで、正常な起動を通知します。起動プローブを構成してこのパスを監視し、活性チェックが開始される前に初期化が完了するようにします。
startupProbe:
exec:
command:
- ls
- /tmp/cpx_started
initialDelaySeconds: 30
periodSeconds: 5
failureThreshold: 20
successThreshold: 1
timeoutSeconds: 1
<!--NeedCopy-->
レディネスプローブを設定する: ポッドがトラフィックを受け入れる準備ができたタイミングを定義するために、次のスニペットを追加します。CPXは、トラフィックを処理する準備ができたときに/tmp/cpx_readyファイルを作成します。LAS_CPX_BANDWIDTHパラメータを設定した場合、CPXはライセンスチェックアウトが成功した後にこのファイルを作成します。それ以外の場合は、起動プロセスが完了した後に表示されます。Kubernetesは、レディネスプローブのためにこのファイルを使用して、いつポッドにトラフィックをルーティングするかを決定します。
readinessProbe:
exec:
command:
- /bin/ls
- /tmp/cpx_ready
failureThreshold: 15
initialDelaySeconds: 60
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 1
<!--NeedCopy-->
ライブネスプローブを設定する: 実行中にコンテナの健全性を継続的に監視するために、次のスニペットを追加します。デプロイメントYAMLでライブネスプローブを定義して、実行中のCPXの健全性を監視します。プローブが失敗した場合、Kubernetesはコンテナを再起動して、異常な状態から回復させます。このメカニズムにより、応答しないCPXインスタンスを自動的に再作成することで、アプリケーションの可用性が確保されます。
livenessProbe:
exec:
command:
- /bin/ping
- -c 1
- 192.0.0.1
initialDelaySeconds: 10
periodSeconds: 5
failureThreshold: 3
successThreshold: 1
timeoutSeconds: 1
<!--NeedCopy-->