2022年1月24日
FinOps
Harness Intelligent Cloud AutoStopping Rulesは、リソースを自動的に管理し、使用時のみ稼働させ、アイドル時には決して稼働させないようにします。
企業は通常、クラウドに対しておよそ35%の過剰支出をしています。そして、想定外のクラウドコスト支出を引き起こす最大の要因の1つは、未割り当てのリソースとアイドル状態のリソースです。もし、アイドル状態のクラウドリソースを使用していないときはオフにし、必要なときに再びオンにすることができたら、素晴らしいと思いませんか?これを自動化できたら?
ここでは、アイドル状態のリソースを動的かつ自動的に管理するHarness Intelligent Cloud AutoStopping Rulesを紹介します。自動停止ルールは、非運用リソースが使用時にのみ実行され、アイドル時には決して実行されないようにします。さらに、完全にオーケストレーションされたスポットインスタンスで、スポットの中断を心配することなくワークロードを実行することができます。自動停止ルールを設定すると、次のようになります。
AutoStopping Rulesは、非本番ワークロードのためのダイナミックで強力なリソースオーケストレーターです。クラウドリソースにAutoStopping Rulesを組み込むことで、以下のような大きなメリットが得られます。
また、AutoStoppingダッシュボードを使用すると、作成した全ての自動停止ルールのサマリーをシンプルで直感的なインターフェイスで表示することができます。
AutoStopping Rules以前は、同様の問題に対応するのにリソーススケジューラーしかありませんでした。しかし、さまざまな模造品が出回っていました。
AutoStopping Rulesを採用することで得られる最も大きなメリットは以下の通りです。
AutoStopping Rulesの力と特長について、ご理解いただけたと思います。それでは、AutoStopping Rulesがk8sクラスターにどのように役立つかを見ていきましょう。
AutoStopping Rulesは、以下をサポートしています。
自動停止ルールの作成手順は簡単です。
まず、自動停止ルールを使用して管理したいワークロードが実行されているクラウドアカウントを選択します(AWS、GCP、またはAzure)。
次に、自動停止ルールを定義します。ここで、リソースのアイドル時間も指定します。これは、自動停止ルールがアイドル状態のリソースを停止するまでに待機する時間です。
3つ目に、このルールを使用して管理したいリソースを選択します。また、高度な設定を指定することもできます。例えば、2つ以上の自動停止ルール間に依存関係を追加することができます。これは、1つのルールで、そのルールやトラフィックに基づいて1つまたは複数のルールをアクティブにする場合に便利です。
4つ目に、クラスターに適用するKubernetes自動停止ルールのリソース定義YAMLを更新します。
YAMLファイルの仕様は、KubernetesのIngress/Non-Ingressと同じで、メタデータが追加されています。これらは、自動停止ルールがServiceに対して作成するIngress/Non-Ingressの設定です。
自動停止を有効にした場合のIngressの例。
apiVersion: ccm.harness.io/v1
kind: AutoStoppingRule
metadata:
name: testK8s
namespace: default
annotations:
harness.io/cloud-connector-id: awstest3
nginx.ingress.kubernetes.io/configuration-snippet: 'more_set_input_headers
"AutoStoppingRule: default-testK8s";'
spec:
idleTimeMins: 15
hideProgressPage: false
ingress:
rules:
- host: <replace with your domain name, for example, qa.harness.com>
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: <replace your service name, for example, test>
port:
number: <replace with your service port, for example, 80>
自動停止を有効にした場合のNon-Ingressの例。
apiVersion: ccm.harness.io/v1
kind: AutoStoppingRule
metadata:
name: <postgres>
namespace: <dev-poc>
annotations:
harness.io/cloud-connector-id: <connector_id>
spec:
idleTimeMins: <40>
workloadName: <postgres>
workloadType: <Deployment>
オートスケールとは、需要の変化に合わせてリソースを自動的に増減させる機能です。 オートスケールには、cluster autoscalerやKarpenterなどのツールが使用されます。
cluster autoscalerは、以下の条件のいずれかに該当する場合、Kubernetesのクラスターサイズを自動的に調整します。
Google Cloudによれば、cluster autoscalerはノードプール単位で動作します。cluster autoscalerでノードプールを構成する場合、ノードプールの最小サイズと最大サイズを指定します。
cluster autoscalerは、ノードプールの基礎となるCompute Engineのマネージドインスタンスグル ープ(MIG)内の仮想マシン(VM)インスタンスを追加または削除することによって、ノードプールのサイズを自動的に増減させます。cluster autoscalerは、ノードプールのノードで実行されているPodのリソース要求(実際のリソース使用率ではなく)に基づいて、このようなスケーリングの決定を下します。また、定期的にPodとノードの状態をチェックし、対処します。
cluster autoscalerには、それなりの複雑さと制約があることはお分かりいただけたと思います。
しかし、AutoStopping Rulesは、最もきめ細かい範囲でクラウドのコスト削減を実現します。これは、非生産的なワークロードのためのダイナミックで強力なリソースオーケストレーターです。その独自性と機能については既に説明しました。
次の例は、定義されたルールに従って、k8sクラスターのアイドル状態のリソースがどのように処理され、自動停止されるかを示しています。アイドル状態のリソースを自動停止することで、リソースの累積節約量を表示します。
HarnessのAutoStopping Rulesソリューションは、特定の条件下では、定義されたルールに関係なくリソースを稼働させることが必要な場合があることも認識しています。ECGハートビートエージェントや固定スケジュールをルールと一緒に設定することで、このような場合の解決策を提供することができます。
自動停止ルールを使用すると、アイドル状態のクラウドリソースを自動的にオフにし、必要なときに再びオンにすることができます。さらに、アイドル状態のリソースを停止する前に、自動停止ルールが何分待機すべきかを定義します。
デフォルトでは、自動停止ルールはHTTP/HTTPSトラフィックをリッスンします。一方、リソースが機械学習(ML)などの長時間稼働するバックグラウンドジョブで作業している可能性があります。この場合、ネットワークトラフィックのみを使用してリソースのアイドル状態を検出することは 、最適な戦略とは言えない場合があります。そこで、ECGと呼ばれるハートビートエージェントに自動停止ルールを設定することができます。
さらに、ECGをイベントエミッターまたはルールのリスナーとして想定することができます。ECGは、設定されたルールの使用記録を送信します。
ECGには、以下のウォッチャーがプリインストールされています。
ルールにメトリックウォッチャーまたはプロセスウォッチャーを設定します。メトリクスウォッチャーでは、指定されたメトリクスのしきい値に達するとハートビートシグナルを送信することができます。プロセスウォッチャーは、指定された条件に一致するプロセスの存在を監視します。
メトリクスの例
# A heartbeat will be sent when the metrics are greater than or equal to the configured threshold
[metrics]
cpu = "40"
memory = "5Gb"
プロセスの例
# A heartbeat will be sent when a process with the matching condition is found
[process]
condition = "python*"
固定スケジュールは、AutoStopping Rulesでもサポートされています。特定のシナリオにおいては、リソースをダウンまたはアップさせたくないことがあります。例えば、毎週金曜日の午後5時にABCリソースを停止させたいとします。AutoStopping Rulesは、これを非常に簡単に実現します。ABCリソースのダウンタイムをスケジュールできます。この時間帯は、定義されたルールに関係なく、リソースが強制的に停止されます。さらに、同じ方法でリソースの稼働 時間を指定することもできます。
ここまで来たら、このインテリジェントな自動クラウドコスト管理ソリューションをどのように使い始めるか知りたいですよね。
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。