ノート:
- このチュートリアルは、Oracle提供の無料ラボ環境で入手できます。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
Oracle Cloud Native EnvironmentでのOpenCostの使用
イントロダクション
Oracle Cloud Native Environment (Oracle CNE)インストールでアプリケーションを実行およびデプロイする際のリアルタイム・コストを測定すると、アプリケーションの管理に役立ちます。OpenCostは、リアルタイムのビジネス・コスト監視を促進するためにコンテナおよびクラウド・インフラストラクチャのコストを記録する、ベンダー・ニュートラルなオープンソース・プロジェクトです。報告するリアルタイムのコストを使用して、CPU、GPU、メモリーなどのクラスタ内コストと、ストレージなどのクラウド・プロバイダベースのコストの両方を監視できます。
目的
このチュートリアルの内容:
- OpenCostのインストール方法
- Krewを使ってOpenCostプラグインをインストールする方法
- OpenCostを使用してコンテナおよびクラウド・インフラストラクチャのコストを監視する方法
前提条件
-
最小1つのOracle Linuxインスタンス
-
各システムには、次のものを使用してOracle Linuxがインストールおよび構成されている必要があります。
- sudoアクセスを使用するOracleユーザー・アカウント(インストール中に使用)
- ホスト間の鍵ベースのSSH (パスワードなしSSHとも呼ばれます)
-
OCIクラスタの作成には、Oracle Cloud Infrastructureテナンシ内の次のリソースへのアクセス権が必要です:
- 4つのサブネットを持つ仮想クラウド・ネットワーク
- ネットワーク・ロード・バランサ
- 使用可能なGiBが少なくとも5つあるオブジェクト・ストレージ・バケット
- カスタム・イメージの計算
- コントロール・プレーン・ノードのコンピュート・アーム・シェイプ
- VM.Standard.A1。2 OCPUと12メモリを搭載したフレックス
- 追加のコントロール・プレーンおよびワーカー・ノードごとに計算
- VM.Standard.E4。4 OCPUと64メモリを搭載したFlex
Oracle CNEの構成
ノート:独自のテナンシで実行している場合は、linux-virt-labs
GitHubプロジェクトREADME.mdを読み、演習環境をデプロイする前に前提条件を完了してください。
-
Lunaデスクトップでターミナルを開きます。
-
linux-virt-labs
GitHubプロジェクトをクローニングします。git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
作業ディレクトリに移動します。
cd linux-virt-labs/ocne2
-
必要なコレクションをインストールします。
ansible-galaxy collection install -r requirements.yml
-
ブート・ボリューム・サイズを大きくします。
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ocne" type: "server" boot_volume_size_in_gbs: 128 ocne_type: "oci" install_ocne_rpm: true create_ocne_oci_cluster: true ocne_cluster_name: "mycluster" num_cp_nodes: 1 num_wk_nodes: 3 update_all: true EOF
-
演習環境をデプロイします。
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
無料の演習環境では、追加変数
local_python_interpreter
が必要です。この変数は、localhostで実行されている再生用にansible_python_interpreter
を設定します。この変数は、python3.6モジュールの下にあるOracle Cloud Infrastructure SDK for PythonのRPMパッケージが環境によってインストールされるため必要です。デフォルトのデプロイメント・シェイプでは、AMD CPUおよびOracle Linux 8が使用されます。Intel CPUまたはOracle Linux 9を使用するには、デプロイメント・コマンドに
-e instance_shape="VM.Standard3.Flex"
または-e os_version="9"
を追加します。重要:プレイブックが正常に実行されるまで待機し、一時停止タスクに到達します。プレイブックのこの段階で、Oracle CNEのインストールが完了し、インスタンスの準備ができました。前の再生に注意してください。これは、デプロイするノードのパブリックIPアドレスとプライベートIPアドレス、および演習の実行中に必要なその他のデプロイメント情報を出力します。
Kubernetesクラスタへのアクセス
-
ターミナルを開き、SSHを介して
ocne
インスタンスに接続します。ssh oracle@<ip_address_of_instance>
-
CLIを使用して、既知のクラスタのリストを取得します。
ocne cluster list
-
kube構成の場所を取得します。
ocne cluster show -C mycluster
-C
を使用して、クラスタ・リストから特定のクラスタを指定します。 -
KUBECONFIG環境変数を設定します。
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
クラスタが安定し、すべてのポッドが実行中の状態でレポートされるまで待機します。
watch kubectl get pods -A
すべてのポッドにSTATUSがRunningと表示されたら、
ctrl-c
と入力してwatch
コマンドを終了します。 -
ノードの数を確認します。
kubectl get nodes
Helmをインストールします
Helmでは、Oracle CNEクラスタにインストールされているアプリケーションを簡単に管理できます。この例では、これを使用してOpenCostをインストールします。
-
Gitのインストール
sudo dnf install -y git
-
最新バージョンのHelmをダウンロードし、ローカルにインストールします。
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
ノート:通常、スクリプトを実行する前に確認および理解せずにスクリプトを実行することはお薦めしません。ただし、このスクリプトは広く使用され、文書化されています。Oracleでは、インストール時に実行する前に確認することをお勧めします。
プロメテウスのインストール
OpenCostは、Prometheusを使用して、Kubernetesクラスタのスクレイピングされたメトリックを格納します。
-
Prometheus Community Helmリポジトリを追加します。
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
-
Prometheus Helmリポジトリを更新します。
helm repo update
-
Prometheusをインストールし、OpenCost用に構成します。
デフォルトのOpenCost設定を使用して、Prometheusを
prometheus-system
ネームスペースにインストールします。helm install prometheus --repo https://prometheus-community.github.io/helm-charts prometheus --namespace prometheus-system --create-namespace --set prometheus-pushgateway.enabled=false --set alertmanager.enabled=false -f https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/prometheus/extraScrapeConfigs.yaml
ノート:既存のPrometheusインスタンスを使用できます。詳細は、OpenCostのドキュメントを参照してください。
OpenCostをインストールします
-
OpenCostネームスペースを作成します。
kubectl create namespace opencost
-
Helm OpenCostリポジトリを追加します。
helm repo add opencost https://opencost.github.io/opencost-helm-chart
-
Helmリポジトリを更新します。
helm repo update
-
デフォルトの OpenCost values定義ファイルをダウンロードします。
values.yaml
ファイルを使用して、OpenCost構成設定を構成し、チュートリアルで使用されるデフォルトの原価計算を設定します。curl -o local.yaml https://raw.githubusercontent.com/opencost/opencost-helm-chart/refs/heads/main/charts/opencost/values.yaml
-
OpenCost Helmチャートをインストールします。
helm install opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost -f local.yaml
-
OpenCost UIを転送します。
kubectl port-forward --namespace opencost service/opencost 9003:9090
ノート:エラー通知を受け取った場合、これは、HelmでOpenCostが完全にデプロイされていないためです。数秒待ってから、
port-forward
コマンドを繰り返します。重要:ポート転送の使用は、内部テストにのみ使用してください。本番デプロイメントでは、イングレス・ルールを使用してOpenCostにアクセスできるようにする必要があります。
OpenCost UIへのアクセス
-
新しいターミナル・ウィンドウを開き、SSHトンネルを構成します。
ssh -L 9333:localhost:9003 oracle@<ip_address_of_node>
-
Webブラウザを開き、URLを入力します。
ヒント: OpenCostが表示できる十分なデータを収集する前に、ブラウザを数回リフレッシュする必要がある場合があります。
http://localhost:9333/allocation?window=48h
使用可能なパラメータは次のとおりです。
- 日付範囲 - リストされているデフォルトから表示するデフォルト期間を選択する場合に使用します。「日付ピッカー」を使用してカスタム日付範囲を決定することもできます。
- ブレークダウン - これを使用して、関連付けられたコストを表示するKubernetesリソース・タイプを選択します。たとえば、クラスタ、ノード、ネームスペース、ポッド、デプロイメントなどです。
- 解決策 - 返されるデータをグラフに表示する方法を決定します。選択肢は1日当たりまたは累積です。
- 通貨 - 表示される通貨分母を設定します。
ノート:リクエストされた場合は、使用するブラウザに基づいてセキュリティ警告を承認します。Chromeの場合は、「Advanced」ボタンをクリックし、「Proceed to localhost (unsafe)」リンクをクリックします。また、Webページの「クラウド・コスト」および「外部コスト」リンクが無効になっていることにも注意してください。この動作は、このチュートリアルではOpenCostをOCIテナンシと統合していないために発生します。デプロイメントにこの機能が必要な場合は、OpenCostと連携するようにOCIテナンシを構成する方法の詳細は、OpenCostのドキュメントを参照してください。
Krewをインストール
Krewは、kubectlプラグインのパッケージ・マネージャで、システムへの検出とインストールを容易にします。
-
新しいターミナルを開き、SSHを介して
ocne
インスタンスに接続します。ssh oracle@<ip_address_of_instance>
-
KUBECONFIG環境変数を設定します。
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
gitパッケージをインストールします。
sudo dnf install -y git
-
krewプラグインをダウンロードしてインストールします。
( set -x; cd "$(mktemp -d)" && OS="$(uname | tr '[:upper:]' '[:lower:]')" && ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && KREW="krew-${OS}_${ARCH}" && curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" && tar zxvf "${KREW}.tar.gz" && ./"${KREW}" install krew )
-
krewバイナリをPATH環境変数に追加します。
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
この変更を永続的にするには、.bashrcファイルを更新し、ログアウトしてシステムに再度ログインしてシェルを再起動します。
-
インストールを確認します。
kubectl krew
出力例:
[oracle@ocne ~]$ kubectl krew krew is the kubectl plugin manager. You can invoke krew through kubectl: "kubectl krew [command]..." Usage: kubectl krew [command] Available Commands: help Help about any command index Manage custom plugin indexes info Show information about an available plugin install Install kubectl plugins list List installed kubectl plugins search Discover kubectl plugins uninstall Uninstall plugins update Update the local copy of the plugin index upgrade Upgrade installed plugins to newer versions version Show krew version and diagnostics Flags: -h, --help help for krew -v, --v Level number for the log level verbosity Use "kubectl krew [command] --help" for more information about a command.
OpenCost CLIプラグインのインストール
-
プラグインをインストールします。
kubectl krew install cost
出力例:
[oracle@ocne ~]$ kubectl krew install cost Updated the local copy of plugin index. Installing plugin: cost Installed plugin: cost \ | Use this plugin: | kubectl cost | Documentation: | https://github.com/kubecost/kubectl-cost | Caveats: | \ | | Requires Kubecost (a cluster-side daemon) to be installed in your cluster. | | See https://www.kubecost.com/install for installation instructions. | / / WARNING: You installed plugin "cost" from the krew-index plugin repository. These plugins are not audited for security by the Krew maintainers. Run them at your own risk.
-
プラグインのインストールを確認します。
kubectl cost version kubectl cost --help
OpenCost CLIプラグインの使用
kubectl cost
で使用される基本的な構文構造は、主にネームスペース、ラベル、デプロイメント、StatefulSetなどの標準のKubernetes概念にマップされます。Kubecost APIを使用して、Oracle CNEクラスタのワークロードおよびデプロイメントに関連する有用なコスト・データを返します。このツールは柔軟性があるので、いくつかの例から始めましょう。
-
クラスタ内のすべてのネームスペースの月次コスト予測を表示します。
kubectl cost namespace --opencost true
出力例:
[oracle@ocne ~]$ kubectl cost namespace --opencost true +-----------------+-------------------+--------------------+-----------------+ | CLUSTER | NAMESPACE | MONTHLY RATE (ALL) | COST EFFICIENCY | +-----------------+-------------------+--------------------+-----------------+ | __idle__ | __idle__ | 1100.228400 | 0.000000 | | default-cluster | kube-system | 23.187600 | 0.470162 | | | monitoring | 11.530800 | 0.296739 | | | kube-flannel | 9.702000 | 0.031735 | | | prometheus-system | 1.309216 | 1.000000 | | | opencost | 0.800139 | 0.303188 | | | ocne-system | 0.079200 | 1.000000 | +-----------------+-------------------+--------------------+-----------------+ | SUMMED | | 1146.837356 | | +-----------------+-------------------+--------------------+-----------------+
説明:
- –opencost true =
true
として定義した場合、OpenCostのデフォルト指定に従ってパラメータを使用するようにOpenCostを構成します。これは、コマンドライン・オプション--service-port 9003 --service-name opencost --kubecost-namespace opencost --allocation-path /allocation/compute
を指定するのと同じです。
- –opencost true =
-
「app」ラベルを持つすべてのデプロイメントによる過去5日間の合計コストを表示します。
kubectl cost label --historical -l app --opencost true
出力例:
[oracle@ocne ~]$ kubectl cost label --historical -l app --opencost true +-----------------+--------------------------------+--------------------+-----------------+ | CLUSTER | LABEL:APP | MONTHLY RATE (ALL) | COST EFFICIENCY | +-----------------+--------------------------------+--------------------+-----------------+ | __idle__ | __idle__ | 1100.224800 | 0.000000 | | default-cluster | __unallocated__ | 35.937616 | 0.367372 | | | flannel | 9.702000 | 0.031831 | | | csi-oci-node | 0.450000 | 1.000000 | | | csi-oci-controller | 0.370800 | 1.000000 | | | kube-prometheus-stack-operator | 0.122400 | 1.000000 | +-----------------+--------------------------------+--------------------+-----------------+ | SUMMED | | 1146.807616 | | +-----------------+--------------------------------+--------------------+-----------------+
-
CPUおよびCPUのコスト効率の詳細など、デプロイメント別の予測月次コストを表示します。
kubectl cost deployment --show-cpu --opencost true
出力例:
[oracle@ocne ~]$ kubectl cost deployment --show-cpu --opencost true +-----------------+-------------------+------------------------------------+------------+----------+--------------------+-----------------+ | CLUSTER | NAMESPACE | DEPLOYMENT | CPU | CPU EFF. | MONTHLY RATE (ALL) | COST EFFICIENCY | +-----------------+-------------------+------------------------------------+------------+----------+--------------------+-----------------+ | __idle__ | __idle__ | __idle__ | 528.487200 | 0.000000 | 1100.224800 | 0.000000 | | default-cluster | kube-system | __unallocated__ | 14.860800 | 0.008692 | 17.499600 | 1.359666 | | | monitoring | | 9.342000 | 0.002225 | 11.311200 | 0.241625 | | | kube-flannel | | 9.104400 | 0.008750 | 9.702000 | 0.031878 | | | kube-system | coredns | 4.550400 | 0.000750 | 5.313600 | 0.023865 | | | prometheus-system | prometheus-server | 0.165600 | 1.000000 | 1.219216 | 1.000000 | | | opencost | opencost | 0.454539 | 0.008000 | 0.800139 | 0.303828 | | | kube-system | csi-oci-controller | 0.075600 | 1.000000 | 0.370800 | 1.000000 | | | monitoring | promstack-kube-prometheus-operator | 0.010800 | 1.000000 | 0.122400 | 1.000000 | | | prometheus-system | prometheus-kube-state-metrics | 0.032400 | 1.000000 | 0.097200 | 1.000000 | | | monitoring | promstack-kube-state-metrics | 0.028800 | 1.000000 | 0.097200 | 1.000000 | | | ocne-system | ui | 0.007200 | 1.000000 | 0.054000 | 1.000000 | | | | ocne-catalog | 0.000000 | 0.000000 | 0.025200 | 1.000000 | +-----------------+-------------------+------------------------------------+------------+----------+--------------------+-----------------+ | SUMMED | | | 567.119739 | | 1146.837356 | | +-----------------+-------------------+------------------------------------+------------+----------+--------------------+-----------------+
-
CPU固有のコストを含め、デプロイされるすべてのポッドのコストを表示します。
kubectl cost pod --show-cpu --opencost true
出力例:
oracle@ocne ~]$ kubectl cost pod --show-cpu --opencost true +-----------------+-------------------+-------------------------------------------------------+------------+----------+--------------------+-----------------+ | CLUSTER | NAMESPACE | POD | CPU | CPU EFF. | MONTHLY RATE (ALL) | COST EFFICIENCY | +-----------------+-------------------+-------------------------------------------------------+------------+----------+--------------------+-----------------+ | __idle__ | __idle__ | __idle__ | 540.291130 | 0.000000 | 1124.022678 | 0.000000 | | default-cluster | kube-system | kube-apiserver-mycluster-control-plane-q8qjn | 5.689252 | 0.024160 | 7.020939 | 0.209251 | | | monitoring | prometheus-promstack-kube-prometheus-prometheus-0 | 4.767026 | 0.007700 | 5.893983 | 1.301700 | | | | alertmanager-promstack-kube-prometheus-alertmanager-0 | 4.560417 | 0.000300 | 5.306087 | 0.022176 | | | kube-system | kube-controller-manager-mycluster-control-plane-q8qjn | 4.552904 | 0.007350 | 4.752000 | 0.048939 | | | | coredns-7dcb9db977-4hwdv | 2.276452 | 0.001300 | 2.657739 | 0.025254 | | | | coredns-7dcb9db977-zfdbf | 2.276452 | 0.001400 | 2.657739 | 0.024453 | | | | etcd-mycluster-control-plane-q8qjn | 2.276452 | 0.024300 | 2.575096 | 0.125228 | | | kube-flannel | kube-flannel-ds-vl5qd | 2.276452 | 0.017500 | 2.424835 | 0.040974 | | | | kube-flannel-ds-7tw4k | 2.276452 | 0.017300 | 2.424835 | 0.041796 | | | | kube-flannel-ds-48qk4 | 2.276452 | 0.017200 | 2.424835 | 0.040679 | | | | kube-flannel-ds-cn46r | 2.276452 | 0.015000 | 2.424835 | 0.033543 | | | kube-system | kube-scheduler-mycluster-control-plane-q8qjn | 2.276452 | 0.003100 | 2.340313 | 0.030303 | | | prometheus-system | prometheus-server-6c586d99cd-vcxfq | 0.137113 | 1.000000 | 1.209669 | 1.000000 | | | opencost | opencost-6b8cb599b7-m6pk2 | 0.455040 | 0.013000 | 0.802560 | 0.310859 | | | kube-system | csi-oci-controller-7ff494cb89-4ncws | 0.075130 | 1.000000 | 0.368139 | 1.000000 | | | | csi-oci-node-cqhfh | 0.001878 | 1.000000 | 0.142748 | 1.000000 | | | | csi-oci-node-mhts8 | 0.001878 | 1.000000 | 0.123965 | 1.000000 | | | monitoring | promstack-kube-prometheus-operator-7dc5684785-tgdj4 | 0.009391 | 1.000000 | 0.122087 | 1.000000 | | | kube-system | csi-oci-node-54cz9 | 0.001878 | 1.000000 | 0.099548 | 1.000000 | | | monitoring | promstack-kube-state-metrics-5bd74cc8d9-jch68 | 0.030052 | 1.000000 | 0.099548 | 1.000000 | | | prometheus-system | prometheus-kube-state-metrics-65846b5c64-k6qbf | 0.031930 | 1.000000 | 0.097670 | 1.000000 | | | kube-system | oci-cloud-controller-manager-6n4n2 | 0.031930 | 1.000000 | 0.095791 | 1.000000 | | | | kube-proxy-k2tqn | 0.011270 | 1.000000 | 0.090157 | 1.000000 | | | | csi-oci-node-l7g44 | 0.000000 | 0.000000 | 0.080765 | 1.000000 | | | | kube-proxy-rrzls | 0.007513 | 1.000000 | 0.067617 | 1.000000 | | | monitoring | promstack-prometheus-node-exporter-4jqk7 | 0.020661 | 1.000000 | 0.065739 | 1.000000 | | | kube-system | kube-proxy-8t48n | 0.005635 | 1.000000 | 0.063861 | 1.000000 | | | ocne-system | ui-5f59d8454b-p9tz4 | 0.007513 | 1.000000 | 0.052591 | 1.000000 | | | kube-system | kube-proxy-4q5gk | 0.003757 | 1.000000 | 0.046957 | 1.000000 | | | monitoring | promstack-prometheus-node-exporter-z5vfx | 0.001878 | 1.000000 | 0.033809 | 1.000000 | | | ocne-system | ocne-catalog-8c94cc49f-vnhpx | 0.000000 | 0.000000 | 0.026296 | 1.000000 | | | monitoring | promstack-prometheus-node-exporter-q7hm7 | 0.000000 | 0.000000 | 0.026296 | 1.000000 | | | | promstack-prometheus-node-exporter-dfj4k | 0.000000 | 0.000000 | 0.022539 | 1.000000 | +-----------------+-------------------+-------------------------------------------------------+------------+----------+--------------------+-----------------+ | SUMMED | | | 578.906797 | | 1170.664263 | | +-----------------+-------------------+-------------------------------------------------------+------------+----------+--------------------+-----------------+
次のステップ
このチュートリアルでは、Oracle CNEでOpenCostを使用する方法について説明します。これは、Oracle CNEインフラストラクチャとアプリケーション・デプロイメントのコストを管理する方法の表面にしか見えません。詳細は、Opencostドキュメントを参照してください。
関連リンク
- Oracle Cloud Native Environmentのドキュメント
- OpenCostドキュメント
- Oracle Cloud Native Environmentトラック
- Oracle Linuxトレーニング・ステーション
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Use OpenCost with Oracle Cloud Native Environment
G33057-01
Copyright ©2025, Oracle and/or its affiliates.