Kubecost と Kyverno を使用したクラウド ネイティブ ワークロードのコスト管理

Kubecost と Kyverno を使用したクラウド ネイティブ ワークロードのコスト管理

翻訳者 |王志軍

校正 |孫淑娟 梁策

1. 背景

現在、ほとんどのアプリケーションはクラウド インフラストラクチャを使用してホストされています。クラウド インフラストラクチャは、AWS/GCP/Azure などのパブリック クラウドで利用可能なリソース、または仮想マシン (VM) やコンテナーの形式でクラウド ワークロードを実行するデータ センター サーバーなどのコンピューティング リソースです。

クラウドにより、当社のビジネスは急速に成長し、サービスはより俊敏になりますが、それにはコストがかかります。事前に割り当てられたすべてのクラウド リソースには、過剰に使用されているか、十分に使用されていないかに関係なく、運用コストが伴います。組織はこのようなコストの管理に苦労することが多く、必要な措置を積極的に講じる必要があります。

コスト関連の課題に対処する 1 つの方法は、リソースの使用を制限するために固定リソース割り当てを設定することです。もう 1 つのオプションは、適切なツール (クラウドまたはオンプレミス) を使用して、使用されるリソースの実行にかかる「総コスト」を定期的に計算することです。

リソース割り当ては単純な解決策かもしれませんが、この万能なアプローチはすべてのシナリオに適しているわけではありません。ツールによるコスト識別は、リソースに関連するコスト情報を取得するのに有効ですが、ローコードのクローズドループ自動化の使用など、プロアクティブなアクション (特定の条件が満たされた場合の条件の定義、レポートまたは修正のいずれかのアクションの実行) を必要とするさまざまなシナリオには拡張できません。

Nirmata DevSecOps プラットフォームは、これらの課題に包括的に対処するように設計されています。これは、あらゆるインフラストラクチャ上で Kubernetes ワークロードを展開、実行、最適化し、セルフサービス、職務の分離、セキュリティとガバナンスの制御を可能にする、オープンで使いやすいプラットフォームです。この投稿では、kubecost によって統計された Kubernetes ワークロードのコストが割り当てられた値よりも高い場合にアラートを出すポリシー エンジンとして Kyverno を使用します。

2. キューブコスト

Kubecost は、Kubernetes を使用するチームにリアルタイムのコスト可視化と分析情報を提供し、クラウド コストを継続的に削減するのに役立ちます。 Kubecost は次の課題を解決します。

1. コスト配分:デプロイメント、サービス、名前空間ラベルなどの Kubernetes リソースに応じてコストを分割します。複数のクラスターのコストを 1 つのビューまたは 1 つの API エンドポイントで表示します。

2. 統合コスト監視: Kubernetes と外部のクラウド サービスまたはインフラストラクチャのコストを包括的に把握します。外部コストを償却し、Kubernetes 全体にわたって整理することで、支出を包括的に把握できます。

3. 最適化の洞察:どのリソースがコストを増加させているか、およびこれらのリソースを最適化する潜在的な方法についての洞察。パフォーマンスを犠牲にすることなく経費を削減するための動的な推奨事項を取得します。重要なインフラストラクチャまたはアプリケーションの変更を優先して、リソースの効率と信頼性を向上させます。

4. アラートとガバナンス: PagerDuty や Slack などのツールを統合して、エンジニアリング ワークフローの流れを維持します。コスト超過やインフラストラクチャの停止のリスクを、問題になる前に迅速に特定して通知します。

3. Kyverno戦略エンジン

Kyverno は、アドミッション コントローラーとして動作し、カスタマイズ可能なポリシーに基づいて構成データを検証、変更、生成できるオープン ソースの Kubernetes ネイティブ ポリシー エンジンです。

他の汎用ポリシー ソリューションは Kubernetes に適合されていますが、Kyverno は Kubernetes 専用に設計されています。 Kubernetes と同様に、Kyverno は宣言型管理パラダイムを採用しています。 Kyverno ポリシーは Kubernetes リソースであり、新しい言語を学習する必要はありません。

Kyverno は、誤った構成を防止し、セキュリティを強化することで Kubernetes 構成を保護します。

Nirmata DevSecOps プラットフォーム

Nirmata DevSecOps プラットフォーム (NDP) は、企業がクラウドネイティブ オペレーティング システムとして Kubernetes を標準化するために必要なツールとプロセスを統合し、オペレーター、開発者、セキュリティ チームのワークフローをきれいに分離します。

このプラットフォームは、企業の運用チームが開発者にセルフサービス型の安全な環境を提供し、DevOps の俊敏性を高めるのに役立ちます。 Nirmata Kubernetes プラットフォームは、認証プラグインとして Kubecost をサポートしています。

Nirmata は CNCF オープンソース プロジェクト Kyverno を開発し、DevSecOps プラットフォーム上でこのプロジェクトをネイティブにサポートしています。 Kyverno ポリシー エンジンは、セキュリティと運用のベスト プラクティスが確実に遵守されるようにするための強力なツールです。 NDP は Kubecost アドオンをデプロイするために使用されます。

V. 情報の概要

次に、クラスター ポリシーが Kyverno を使用して Kubernetes 名前空間の総運用コストを監視する方法について説明します。合計コストがしきい値を超えると、Kyverno は違反/失敗を作成します。合計コスト情報は、Kubecost REST API を使用して Config Map に保存されます。以下では、これらの各コンポーネントについて詳しく見ていきます。

まず、Kubecost と Kyverno をそれぞれの名前空間にデプロイします。

デモンストレーションの目的で、Nginx Web サーバーのコピーを実行する Nginx というデモ名前空間を用意します。

Kubecost は、Nirmata DevSecOps プラットフォームを使用してアドオンとしてデプロイすることもできます (この場合、Kubecost は動的ボリュームの作成に OpenEBS-hostpath ストレージ クラスを使用します)。リンクはリソース セクションに含まれています。

6. デモコンポーネント

関連するすべてのファイルは、Nirmata git リポジトリに保存されます。

1. 収集スクリプト – kubecost-collector.py

a. Kubernetes cron ジョブとしてバックグラウンドで実行される Python スクリプトは、Nginx 名前空間の Kubecost REST API エンドポイントからコスト情報を収集します。 http://>/model/allocation

b. configmap namespace-cost configmapのコスト情報を定期的に更新する

2. 構成マップ

a. Kyverno 名前空間の ConfigMap。Nginx 名前空間のコスト情報が含まれています。

3. Kyvernoポリシー

a. Kyverno戦略は、namespace-configmapに保存されているデータを監視して、コスト値の変化を把握します。

b. Nginx 名前空間の合計コストがしきい値を超える場合、レポートの作成は失敗します。

上記のコンポーネントは、リソース セクションの Github ページからダウンロードできます。

7. デモワークフロー

1. Nginx 名前空間を作成し、Nginx レプリカをデプロイします。

 kubectl 名前空間 nginx を作成する
Kubectl で nginx を作成し --image = nginx を実行して --replicas = 10 を実行します。

Kyverno が Kyverno 名前空間で実行されており、コスト情報を提供するために Kubecost アプリケーションが稼働していると想定します。

2. cm.yamlを使用して名前空間Kyvernoを作成する

 configmap 名前空間-コスト
kubectl 作成- f cm .yaml - n kyverno

3. namespace-cost 内の ConfigMap を更新するために必要な RBAC リソース (ServiceAccount、ClusterRole、ClusterRoleBindings) を作成します。


kubectl 作成-f rbac .yaml

4. 収集スクリプト kubecost-collector.py を Kubernetes クラスターにコピーします。

A. kubecost-collector をフォルダーに配置した後、Dockerfile を使用して Docker イメージを構築します。必ず ***kubecost*** cost-analyzer REST API エンドポイントを使用してスクリプトを更新してください。

 mkdir <フォルダー名>
cp Dockerfile <フォルダー名>
cp kubecost -コレクター.py <フォルダー名>
docker ビルド- t kubecost -コレクター

上記のコマンドが完了したら、kubecost-collector イメージが存在することを確認します。

 dockerimages kubecost -コレクター
リポジトリ タグ イメージ ID 作成 サイズ
kubecost -コレクター最新47 a05cdc11bf 16分前205 MB

B. kubecost-collector を Kubernetes cron ジョブとして実行する kubectl create -f cron.yaml

kubecost-collector が kubecost REST API エンドポイントからライブ値を取得しているため、手順 2 で作成された cm のコストがゼロ以外の値に更新されていることを確認します。

 -コレクターは kubecost REST API エンドポイントからリアルタイムの値を取得しています。
データ
====
nginx
----
0.481581

バイナリデータ
====

5. Kyvernoクラスター戦略を作成する

 名前空間-コスト
kubectl apply -fポリシー.yaml

ポリシーを適用する前に、適切なコストしきい値を設定します。ワークロードは最近のものであるため、当初はコストが非常に低くなる可能性があります。

6. namespace-cost ポリシーが READY 状態であることを確認します。

 kubectl で cpol を取得する

名前 背景 アクション 準備完了

名前空間-コストtrue監査true

新しく作成された Nginx 名前空間の運用コストが割り当てられたしきい値を下回るため、このポリシーはすぐに承認されるはずです。


kubectlget cpolr
名前 合格 不合格 警告 エラー スキップ 年齢
クラスターポリシーレポート1 0 0 0 20 3分8秒

7. Nginx レプリカをより高い値に増やして、合計コスト値が policy.yaml で割り当てられたしきい値よりも高くなるようにします。

あるいは、Nginx Web サーバーのレプリカではなく、Nginx 名前空間で CPU/メモリを集中的に使用するワークロードを実行することもできます。

8. 名前空間 Nginx のコストが高くなると、この戦略は失敗します。 kubectl get polr を使用してポリシー レポートを確認します。これは、Nirmata ポリシー レポート UI を使用して確認できます。

 kubectlget cpolr
名前 合格 不合格 警告 エラー スキップ 年齢
クラスターポリシーレポート0 1 0 0 20 5分8秒

上記の障害に関する詳細情報は、「説明」に移動すると確認できます。


kubectl で cpolr クラスターポリシーレポートを記述します| grep "結果: \+fail" - B10
タイムスタンプ:
ナノ: 0
秒数: 1644935662
メッセージ:名前空間の実行コストが定義されたしきい値内ではありません
ポリシー:名前空間-コスト
リソース
API バージョン: v1
種類:名前空間
名前: nginx
UID : f1d06aa0-6fdf - 44ab - a935 - c5b8cf903e2e
結果不合格

8. 結論

名前空間がコストしきい値を超えると、ユーザーは個々のチームに警告し、特定のイベントに基づいてアクションを実行できます。 Kyverno は、ユーザーが定義した既存および新しいワークロードに対してアクションを実行するためのさまざまなルール (Mutate、Validate、Generate) を提供し、ポリシーで定義された条件に基づいて新しいリソースを作成することもできます (Generate)。

元のリンク: https://dzone.com/articles/cost-governance-of-cloud-native-workloads-using-kubecost-and-kyverno

翻訳者について

51CTO コミュニティ エディターの Wang Zhijun (besterjun) は、国内のクラウド ベンダーのソリューション アーキテクトです。 10 年以上の業務経験を持ち、ソリューション アーキテクチャ設計、マイクロサービス、コンテナ、ネットワーク運用保守などの関連業務に長年従事してきました。クラウド ネイティブ、マイクロサービス、コンテナなどの技術分野に重点を置いています。当社は、マルチクラウドおよびハイブリッドクラウドアーキテクチャの計画、設計、実装における豊富な経験を活かし、多くの企業のクラウド移行を支援してきました。

<<:  企業がクラウドに移行するときにセキュリティとコンプライアンスを向上させる方法: Amazon Web Services のクラウド セキュリティの概念と実践を分析する記事

>>:  2022 年のクラウド コンピューティングにはどのような新しいトレンドが生まれるでしょうか?

推薦する

新しいオンライン収入詐欺に注意してください:公式カスタマーサービスや電話を利用してあなたを誘惑します

現在、市場には多くの革新的な詐欺が存在し、9 月 26 日に私は新たな詐欺を発見しました。一部の犯罪...

病院ネットワークマーケティングの将来を多角的に分析する

もう1年以上何も書いていないので、ブログの友達からはいつ更新するのかとよく聞かれます。今年は本当に忙...

電子商取引サイトが効果的なトラフィックを獲得するための主な方法

インターネットで商品を販売するには、まずユーザーが必要です。電子商取引のウェブサイトの場合、トラフィ...

desivps: 米国無制限トラフィック VPS (サンノゼ)、年間わずか 15.3 ドル、10Gbps 帯域幅、無料 IP 変更 3 回

desivps はクリスマス プロモーションを開始しました。米国西海岸のサンノゼ データ センターの...

tmhhost: 韓国の cn2 vps、10% オフ プロモーション、512M メモリ/1 コア/20g SSD/無制限トラフィック

tmhhost の VPS 事業は主に中国のネットワークに最適化されており、ロサンゼルスの Anch...

注目に値する国内の10の垂直検索サイトをサブセクター別に詳しく調査

[はじめに] 一般的な検索と比較した垂直検索の可能性は、ニッチな分野での深いリソースマイニングを実現...

LiquidWeb: 世界トップクラスの「完全管理型」VPS、75% オフ (75% オフ)、これまでにないほどお得、cpanel/plesk パネル付き

Liquidweb は、海外業界のトップブランドの 1 つです。機器ホスティング、サーバーレンタル、...

インターネット開発: 効率的なコードレビューのための 10 の経験

コードレビューは、ソフトウェア開発でよく使用される方法です。QA テストと比較すると、アーキテクチャ...

RootNerds - 3.39 ドル / メモリ 3g / ハードディスク 200g / トラフィック 500g / ドイツ

RootNerds はドイツに登録された会社で、正式名称は deal-Hosting UG です。現...

gfrack 香港 VPS、香港 VPS、Windows サポート、無制限トラフィックの簡単なレビュー

gfrack は香港データセンターに VPS を開始しました。香港 VPS が使用するサーバーは C...

ALTタグのSEO効果の分析例

画像の ALT 属性値にはまだこの段階で SEO 効果があるのか​​どうかについて議論している初心者...

Vultr VPS レビュー (日本 VPS、512m メモリ)

私はVultrの日本のデータセンターでVPSを購入し、Vultrの簡単なレビューを書きました。もっと...

企業ウェブサイトランキングの不安定さはウェブサイトのキーワードに関連している

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス今日の検索エンジンは、最...

Ele.me の Li Jian: コンピューティング サービスのワンストップ配信を実現

[51CTO.com からのオリジナル記事] 7 年間の努力と見事な変貌。 2012年以降、6年連続...

新しいウェブサイト Baidu をゼロから構築するための 4 つのポイント

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスウェブサイトのBaidu...