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 年のクラウド コンピューティングにはどのような新しいトレンドが生まれるでしょうか?

推薦する

オンラインショッピングガイドは良いビジネスか:ユーザーを維持できない?

このテーマに関する前回の記事「なぜ美麗碼は米国に現れなかったのか」では、中国でこのショッピングガイド...

raksmart: プレミアムネットワーク回線 (China Telecom CN2) の米国クラウドサーバーの簡単なレビュー

raksmartが新たに発売したrakクラウド(クラウドサーバー)ホストcatは、すでに中国本土の最...

Alibaba Cloud PolarDB はどのようにして 6 倍のパフォーマンス差と 100 TB の容量を実現するのでしょうか?

I. PolarDB 製品アーキテクチャの概要PolarDB は、第 3 世代のクラウド コンピュー...

検察はQQアカウント盗難と詐欺の背後にある闇産業チェーンを暴露

まずQQアカウントを盗み、次にアカウント所有者になりすましてQQの友人からお金を借り、さらには「身元...

百度とグーグルのランキング変更に関する最近の憶測

最近、多くのウェブマスターが、Baidu の最適化が難しくなったと不満を述べています。数か月間粘った...

impactvps: $3.5/NVMe/KVM/2g メモリ/30g SSD/10Gbps 帯域幅/シアトル

impactvps から良いニュースが届きました。数か月のテストを経て、NVMe KVM VPS が...

最大のヘルスケア業界イベントが開催、ファーウェイクラウドが華々しく登場

医療と健康の分野で最も権威のあるトップサミットである中国健康産業(国際)生態会議(略称:CIP会議)...

1回の広告収入78,000円!ゴーストレッグセブンがセルフメディアを嫉妬させる

文/葉鳳涛程玲鋒氏が運営するWeChatの自主メディアアカウント「雲科技」が初めて広告スペースの販売...

クラウド コンピューティングの発展は、セキュリティ業界にどのような破壊的な変化をもたらしましたか?

クラウド コンピューティングの出現により、従来の企業の IT 構造と IT 業界全体が完全に変化しま...

データ分析が業界全体の持続可能な発展の鍵となる理由

建設業界では、グリーンビルディングの実践が大きな焦点となっています。業界全体の企業は、設計と建設の両...

Baidu Statisticsでcache.baidu.comが表示されるのはどういう意味ですか?

中国では、人々は盗作や想像に慣れています。この長年の、ほとんど遺伝的な習慣のせいで、私たちはいつも古...

この記事ではDockerとContainerdの違いを説明します。

コンテナランタイムコンテナ ランタイムは、オペレーティング システム レベルでコンテナを作成および管...

中学高ブランドマーケティングの歴史

中学高といえば、間違いなく多くのブランドが羨む存在です。 2018年に発売されてから、ネットセレブの...

ネットワークマーケティングの日常業務は何ですか?ネットワークマーケティングの日々の仕事の概要

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス今日は、江南連盟が記録し...

貿易企業のためのインターネットマーケティングの実施方法

インターネットマーケティングについて言えば、この記事をご覧になった多くの友人は、ある程度理解している...