Note:
- Este tutorial está disponible en un entorno de prácticas gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Utilice OpenCost con Oracle Cloud Native Environment
Introducción
La medición de los costos en tiempo real de la ejecución y el despliegue de aplicaciones en la instalación de Oracle Cloud Native Environment (Oracle CNE) le ayuda a gestionarlas. OpenCost es un proyecto de código abierto neutro para proveedores que registra los costos de infraestructura de contenedores y nube para facilitar el control de costos empresariales en tiempo real. Puede utilizar los costos en tiempo real que informa para supervisar los costos en el cluster, como CPU, GPU y memoria, y los costos basados en proveedores de nube, como el almacenamiento.
Objetivos
En este tutorial aprenderá lo siguiente:
- Cómo instalar OpenCost
- Cómo instalar el plugin OpenCost con Krew
- Cómo utilizar OpenCost para supervisar los costos de infraestructura en la nube y de contenedores
Requisitos
-
Mínimo de una instancia de Oracle Linux
-
Cada sistema debe tener Oracle Linux instalado y configurado con:
- Cuenta de usuario de Oracle (utilizada durante la instalación) con acceso sudo
- SSH basado en claves, también conocido como SSH sin contraseña, entre los hosts
-
La creación del cluster de OCI requiere acceso a los siguientes recursos en un arrendamiento de Oracle Cloud Infrastructure:
- Red virtual en la nube con cuatro subredes
- Equilibrador de carga de red
- Cubo de Object Storage con un mínimo de 5 GiB disponibles
- Imagen personalizada de Compute
- Unidad de Compute Arm para el nodo de plano de control
- VM.Standard.A1Flexibilidad con dos OCPU y 12 memoria
- Recursos informáticos para cada plano de control y nodo de trabajador adicionales
- VM.Standard.E4Flexibilidad con cuatro OCPU y 64 memoria
Configurar Oracle CNE
Nota: Si se ejecuta en su propio arrendamiento, lea el proyecto linux-virt-labs
GitHub README.md y complete los requisitos antes de desplegar el entorno de prácticas.
-
Abra un terminal en el escritorio Luna.
-
Clone el proyecto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Cambie al directorio de trabajo.
cd linux-virt-labs/ocne2
-
Instale las recopilaciones necesarias.
ansible-galaxy collection install -r requirements.yml
-
Aumente el tamaño del volumen de inicio.
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
-
Despliegue el entorno de prácticas.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
El entorno de prácticas gratuito necesita la variable adicional
local_python_interpreter
, que defineansible_python_interpreter
para las reproducciones que se ejecutan en localhost. Esta variable es necesaria porque el entorno instala el paquete de RPM para el SDK para Python de Oracle Cloud Infrastructure, ubicado en los módulos python3.6.La unidad de despliegue por defecto utiliza la CPU AMD y Oracle Linux 8. Para utilizar una CPU de Intel u Oracle Linux 9, agregue
-e instance_shape="VM.Standard3.Flex"
o-e os_version="9"
al comando de despliegue.Importante: Espere a que el cuaderno de estrategias se ejecute correctamente y alcance la tarea de pausa. En esta etapa del manual, la instalación del CNE de Oracle está completa y las instancias están listas. Tome nota de la reproducción anterior, que imprime las direcciones IP públicas y privadas de los nodos que despliega y cualquier otra información de despliegue necesaria durante la ejecución del laboratorio.
Acceso al cluster de Kubernetes
-
Abra un terminal y conéctese mediante SSH a la instancia
ocne
.ssh oracle@<ip_address_of_instance>
-
Obtenga una lista de clusters conocidos mediante la CLI.
ocne cluster list
-
Obtenga la ubicación de la configuración de kube.
ocne cluster show -C mycluster
Utilizamos
-C
para especificar un cluster específico de la lista de clusters. -
Defina la variable de entorno KUBECONFIG.
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
Espere a que el cluster se estabilice y todos los pods informen en estado de ejecución.
watch kubectl get pods -A
Una vez que todos los pods muestren un STATUS de Running, escriba
ctrl-c
para salir del comandowatch
. -
Confirme cuántos nodos están presentes.
kubectl get nodes
Instalar Helm
Helm proporciona una forma sencilla de gestionar las aplicaciones instaladas en el cluster de CNE de Oracle. En este ejemplo, se utiliza para instalar OpenCost.
-
Instalación de Git.
sudo dnf install -y git
-
Descargue la última versión de Helm e instálela localmente.
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
Nota: Normalmente no se recomienda ejecutar un script sin revisarlo ni comprenderlo antes de ejecutarlo. Sin embargo, este script es ampliamente utilizado y bien documentado. Oracle recomienda revisarla antes de ejecutarla en las instalaciones.
Instalar Prometheus
OpenCost utiliza Prometheus para almacenar métricas analizadas para el cluster de Kubernetes.
-
Agregue el repositorio de Helm de Prometheus Community.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
-
Actualice el repositorio de Helm de Prometheus.
helm repo update
-
Instale Prometheus y configúrelo para OpenCost.
Instalará Prometheus en el espacio de nombres
prometheus-system
mediante la configuración por defecto de OpenCost.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
Nota: Puede utilizar una instancia de Prometheus existente. Consulte la documentación de OpenCost para obtener más información.
Instalar OpenCost
-
Cree el espacio de nombres OpenCost.
kubectl create namespace opencost
-
Agregue el repositorio OpenCost de Helm.
helm repo add opencost https://opencost.github.io/opencost-helm-chart
-
Actualice el repositorio de Helm.
helm repo update
-
Descargue un archivo de definición OpenCost values predeterminado.
Utilice el archivo
values.yaml
para configurar el valor de configuración OpenCost y para definir los costos por defecto utilizados en el tutorial.curl -o local.yaml https://raw.githubusercontent.com/opencost/opencost-helm-chart/refs/heads/main/charts/opencost/values.yaml
-
Instale el gráfico de Helm OpenCost.
helm install opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost -f local.yaml
-
Reenvíe la interfaz de usuario OpenCost.
kubectl port-forward --namespace opencost service/opencost 9003:9090
Nota: Si recibe una notificación de error, se debe a que Helm no ha desplegado completamente OpenCost. Espere unos segundos y repita el comando
port-forward
.Importante: el uso de un reenvío de puerto solo se debe utilizar para pruebas internas. Los despliegues de producción deben utilizar una regla de entrada para proporcionar acceso a OpenCost.
Acceder a la interfaz de usuario OpenCost
-
Abra una nueva ventana de terminal y configure un túnel SSH.
ssh -L 9333:localhost:9003 oracle@<ip_address_of_node>
-
Abra un explorador web e introduzca la URL.
Indicación: Puede que necesite refrescar el explorador unas cuantas veces antes de que OpenCost haya recopilado suficientes datos para que se muestren.
http://localhost:9333/allocation?window=48h
Cuando los parámetros disponibles son:
- Rango de fechas: utilice esta opción para seleccionar un período por defecto para mostrar de los valores por defecto mostrados. También es posible usar el selector de fechas para determinar un rango de fechas personalizado.
- Desglose: utilice esta opción para seleccionar qué tipo de recurso de Kubernetes mostrar el costo asociado. Por ejemplo, cluster, nodo, espacio de nombres, pod, despliegue, etc.
- Resolución: determina cómo se muestran los datos devueltos en el gráfico. La elección es por día o acumulativa.
- Moneda: define el denominador de moneda que se muestra.
Nota: Si se solicita, apruebe la advertencia de seguridad según el explorador utilizado. Para Chrome, haga clic en el botón Advanced (Avanzado) y, a continuación, en el enlace Proceed to localhost (insafe). Además, observe que los enlaces Costos en la nube y Costos externos de la página web están desactivados. Este comportamiento se produce porque no integra OpenCost con un arrendamiento de OCI en este tutorial. Si necesita esta funcionalidad para su despliegue, consulte la documentación de OpenCost para obtener más información sobre cómo configurar su arrendamiento de OCI para que funcione con OpenCost.
Instalar Krew
Krew es un gestor de paquetes para plugins de kubectl, lo que facilita la detección e instalación de los plugins en el sistema.
-
Abra un nuevo terminal y conéctese mediante SSH a la instancia
ocne
.ssh oracle@<ip_address_of_instance>
-
Defina la variable de entorno KUBECONFIG.
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
Instale el paquete git.
sudo dnf install -y git
-
Descargue e instale el complemento 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 )
-
Agregue el binario krew a la variable de entorno PATH.
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
Para que este cambio sea permanente, actualice el archivo .bashrc y reinicie el shell cerrando la sesión y volviendo al sistema.
-
Verifique la instalación.
kubectl krew
Salida de ejemplo:
[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.
Instalación del plugin de la CLI OpenCost
-
Instale el plugin.
kubectl krew install cost
Salida de ejemplo:
[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.
-
Verifique la instalación del plugin.
kubectl cost version kubectl cost --help
Uso del plugin de CLI OpenCost
La estructura de sintaxis básica utilizada por kubectl cost
se asigna principalmente a los conceptos estándar de Kubernetes de espacio de nombres, etiqueta, despliegue, StatefulSet, etc. Utiliza las API de Kubecost para devolver datos de costos útiles relacionados con las cargas de trabajo y los despliegues en el cluster de CNE de Oracle. La herramienta es flexible, así que empecemos con algunos ejemplos.
-
Muestre la proyección de costos mensuales para todos los espacios de nombres del cluster.
kubectl cost namespace --opencost true
Salida de ejemplo:
[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 | | +-----------------+-------------------+--------------------+-----------------+
Dónde:
- –opencost true = Cuando se define como
true
, configura OpenCost para utilizar los parámetros según la especificación por defecto OpenCost. Lo que equivale a proporcionar las opciones de línea de comandos:--service-port 9003 --service-name opencost --kubecost-namespace opencost --allocation-path /allocation/compute
.
- –opencost true = Cuando se define como
-
Muestre el costo total de los últimos cinco días por todos los despliegues con la etiqueta "app".
kubectl cost label --historical -l app --opencost true
Salida de ejemplo:
[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 | | +-----------------+--------------------------------+--------------------+-----------------+
-
Muestre el costo mensual previsto por despliegue, incluidos los detalles de rentabilidad de CPU y CPU.
kubectl cost deployment --show-cpu --opencost true
Salida de ejemplo:
[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 | | +-----------------+-------------------+------------------------------------+------------+----------+--------------------+-----------------+
-
Muestre el costo de cada pod desplegado, incluidos los costos específicos de la CPU.
kubectl cost pod --show-cpu --opencost true
Salida de ejemplo:
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 | | +-----------------+-------------------+-------------------------------------------------------+------------+----------+--------------------+-----------------+
Pasos Siguientes
En este tutorial se presenta el uso de OpenCost con Oracle CNE. Solo marca la superficie de cómo puede ayudarle a gestionar los costos de la infraestructura y el despliegue de aplicaciones de Oracle CNE. Consulte la documentación de Opencost para obtener más información.
Enlaces relacionados
- Documentación de Oracle Cloud Native Environment
- OpenCost Documentación
- Circuito de Oracle Cloud Native Environment
- Oracle Linux Training Station
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Use OpenCost with Oracle Cloud Native Environment
G33050-01
Copyright ©2025, Oracle and/or its affiliates.