주:
- 이 자습서는 Oracle에서 제공하는 무료 실습 환경에서 사용할 수 있습니다.
- Oracle Cloud Infrastructure 자격 증명, 테넌시 및 구획에 예제 값을 사용합니다. 실습을 완료했으면 이러한 값을 자신의 클라우드 환경과 관련된 값으로 대체하십시오.
OpenCost를 Oracle Cloud Native Environment와 함께 사용
소개
Oracle Cloud Native Environment(Oracle CNE) 설치에서 애플리케이션을 실행 및 배포하는 데 드는 실시간 비용을 측정하면 애플리케이션을 관리하는 데 도움이 됩니다. OpenCost은 실시간 비즈니스 비용 모니터링을 용이하게 하기 위해 컨테이너 및 클라우드 인프라 비용을 기록하는 벤더 중립적인 오픈 소스 프로젝트입니다. 보고하는 실시간 비용을 사용하여 CPU, GPU, 메모리 등의 클러스터 내 비용과 스토리지 등의 클라우드 제공업체 기반 비용을 모두 모니터링할 수 있습니다.
목표
이 자습서에서는 다음을 학습합니다.
- OpenCost 설치 방법
- Krew를 사용하여 OpenCost 플러그인을 설치하는 방법
- OpenCost를 사용하여 컨테이너 및 클라우드 인프라 비용을 모니터링하는 방법
필요 조건
-
최소 하나의 Oracle Linux 인스턴스
-
각 시스템에는 Oracle Linux가 설치되고 다음으로 구성되어야 합니다.
- sudo 액세스 권한이 있는 Oracle 사용자 계정(설치 중 사용됨)
- 호스트 간 키 기반 SSH(암호 없는 SSH라고도 함)
-
OCI 클러스터를 생성하려면 Oracle Cloud Infrastructure 테넌시의 다음 리소스에 액세스해야 합니다.
- 네 개의 서브넷이 있는 가상 클라우드 네트워크
- 네트워크 로드 밸런서
- 오브젝트 스토리지 버킷(최소 5개 GiB 사용 가능)
- 컴퓨트 사용자정의 이미지
- 제어 플레인 노드에 대한 컴퓨트 암 구성
- VM.Standard.A1OCPU 2개 및 메모리 12개가 있는 가변
- 각 추가 제어 플레인 및 작업자 노드에 대한 컴퓨트
- VM.Standard.E4OCPU 4개 및 메모리 64개가 있는 가변
Oracle CNE 구성
주: 고유 테넌시에서 실행 중인 경우 랩 환경을 배치하기 전에 linux-virt-labs
GitHub 프로젝트 README.md을 읽고 필요 조건을 완료하십시오.
-
Luna Desktop에서 터미널을 엽니다.
-
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
-
lab 환경을 배치합니다.
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 설치가 완료되고 인스턴스가 준비됩니다. 배치하는 노드의 공용(public) 및 전용(private) 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)
-
클러스터가 안정화되고 모든 Pod가 실행 중 상태로 보고될 때까지 기다립니다.
watch kubectl get pods -A
모든 포드가 실행 중의 STATUS를 표시하면
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은 설치에서 실행하기 전에 검토할 것을 권장합니다.
Prometheus 설치
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-system
네임스페이스에 Prometheus를 설치합니다.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>
-
웹 브라우저를 열고 URL을 입력합니다.
힌트: OpenCost가 표시하기에 충분한 데이터를 수집하기 전에 브라우저를 몇 번 새로 고쳐야 할 수 있습니다.
http://localhost:9333/allocation?window=48h
사용 가능한 매개변수는 다음과 같습니다.
- 날짜 범위 - 나열된 기본값에서 표시할 기본 기간을 선택하려면 이 옵션을 사용합니다. "일자 선택기"를 사용하여 사용자정의 일자 범위를 결정할 수도 있습니다.
- 분리 - 연관된 비용을 표시할 Kubernetes 리소스 유형을 선택할 때 사용합니다. 예를 들어 클러스터, 노드, 네임스페이스, Pod, 배치 등이 있습니다.
- 해결 방법 - 그래프에 반환된 데이터가 표시되는 방법을 결정합니다. 선택은 하루에 또는 누적됩니다.
- 통화 - 표시되는 통화 분모를 설정합니다.
주: 요청된 경우 사용된 브라우저를 기준으로 보안 경고를 승인하십시오. Chrome의 경우 고급 버튼을 클릭한 다음 로컬 호스트로 진행(안전하지 않음) 링크를 클릭합니다. 또한 웹 페이지의 클라우드 비용 및 외부 비용 링크가 사용 안함으로 설정되어 있습니다. 이 동작은 이 자습서에서 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 )
-
PATH 환경 변수에 krew 이진을 추가합니다.
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 | | +-----------------+-------------------+-------------------------------------------------------+------------+----------+--------------------+-----------------+
다음 단계
이 사용지침서에서는 OpenCost를 Oracle CNE와 함께 사용하는 방법을 소개했습니다. Oracle CNE 인프라 및 애플리케이션 배포 비용을 관리하는 데 도움이 되는 방법에 대해서만 설명합니다. 자세한 내용은 Opencost 설명서를 참조하십시오.
관련 링크
- Oracle Cloud Native Environment 문서
- OpenCost 설명서
- Oracle Cloud Native Environment 트랙
- Oracle Linux 교육 스테이션
추가 학습 자원
docs.oracle.com/learn에서 다른 실습을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 Oracle Learning Explorer가 되려면 education.oracle.com/learning-explorer을 방문하십시오.
제품 설명서는 Oracle Help Center를 참조하십시오.
Use OpenCost with Oracle Cloud Native Environment
G33058-01
Copyright ©2025, Oracle and/or its affiliates.