Nota
- Questa esercitazione è disponibile in un ambiente di esercitazione pratica gratuito fornito da Oracle.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Usa OpenCost con Oracle Cloud Native Environment
Introduzione
Misurare i costi in tempo reale di esecuzione e distribuzione delle applicazioni nell'installazione di Oracle Cloud Native Environment (Oracle CNE) ti aiuta a gestirle. OpenCost è un progetto open source indipendente dal fornitore che registra i costi dell'infrastruttura cloud e dei container per facilitare il monitoraggio dei costi aziendali in tempo reale. Puoi utilizzare i costi in tempo reale segnalati per monitorare sia i costi in cluster, come CPU, GPU e memoria, sia i costi basati su provider cloud, come lo storage.
Obiettivi
In questo tutorial imparerai:
- Come installare OpenCost
- Come installare il plugin OpenCost utilizzando Krew
- Come utilizzare OpenCost per monitorare i costi dell'infrastruttura cloud e dei container
Prerequisiti
-
Almeno un'istanza Oracle Linux
-
Ogni sistema deve avere Oracle Linux installato e configurato con:
- Un account utente Oracle (utilizzato durante l'installazione) con accesso sudo
- SSH basato su chiave, noto anche come SSH senza password, tra gli host
-
La creazione del cluster OCI richiede l'accesso alle seguenti risorse in una tenancy Oracle Cloud Infrastructure:
- Rete cloud virtuale con quattro subnet
- Load balancer di rete
- Bucket di storage degli oggetti con almeno 5 GiB disponibili
- Calcola immagine personalizzata
- Forma del braccio di computazione per il nodo del piano di controllo
- VM.Standard.A1. Flex con due OCPU e 12 memoria
- Calcolo per ogni piano di controllo e nodo di lavoro aggiuntivi
- VM.Standard.E4. Flex con quattro OCPU e 64 memoria
Configura Oracle CNE
Nota: se è in esecuzione nella propria tenancy, leggere il progetto linux-virt-labs
GitHub README.md e completare i prerequisiti prima di distribuire l'ambiente di esercitazione pratica.
-
Aprire un terminale sul Luna Desktop.
-
Duplica il progetto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Passare alla directory di lavoro.
cd linux-virt-labs/ocne2
-
Installare le raccolte richieste.
ansible-galaxy collection install -r requirements.yml
-
Aumentare la dimensione del volume di avvio.
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
-
Implementa l'ambiente di laboratorio.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
L'ambiente di laboratorio gratuito richiede la variabile aggiuntiva
local_python_interpreter
, che impostaansible_python_interpreter
per le riproduzioni in esecuzione su localhost. Questa variabile è necessaria perché l'ambiente installa il pacchetto RPM per l'SDK Oracle Cloud Infrastructure per Python, situato sotto i moduli python3.6.La forma di distribuzione predefinita utilizza la CPU AMD e Oracle Linux 8. Per utilizzare una CPU Intel o Oracle Linux 9, aggiungere
-e instance_shape="VM.Standard3.Flex"
o-e os_version="9"
al comando di distribuzione.Importante: attendere la corretta esecuzione della guida e raggiungere il task di sospensione. In questa fase della guida, l'installazione di Oracle CNE è stata completata e le istanze sono pronte. Prendi nota della riproduzione precedente, che stampa gli indirizzi IP pubblici e privati dei nodi che distribuisce e qualsiasi altra informazione di distribuzione necessaria durante l'esecuzione del laboratorio.
Accedi al cluster Kubernetes
-
Aprire un terminale e connettersi tramite SSH all'istanza
ocne
.ssh oracle@<ip_address_of_instance>
-
Ottenere una lista di cluster noti utilizzando l'interfaccia CLI.
ocne cluster list
-
Ottenere la posizione della configurazione kube.
ocne cluster show -C mycluster
Il comando
-C
consente di specificare un cluster specifico dalla lista dei cluster. -
Impostare la variabile di ambiente KUBECONFIG.
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
Attendere la stabilizzazione del cluster e la segnalazione di tutti i pod in esecuzione.
watch kubectl get pods -A
Dopo che tutti i pod hanno mostrato uno STATUS di In esecuzione, digitare
ctrl-c
per uscire dal comandowatch
. -
Confermare il numero di nodi presenti.
kubectl get nodes
Installa Helm
Helm offre un modo semplice per gestire le applicazioni installate sul cluster Oracle CNE. In questo esempio, viene utilizzato per installare OpenCost.
-
Installare Git.
sudo dnf install -y git
-
Scaricare l'ultima versione di Helm e installarla 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: in genere non è consigliabile eseguire uno script senza esaminarlo e comprenderlo prima di eseguirlo. Tuttavia, questo script è ampiamente usato e ben documentato. Oracle consiglia di esaminarla prima di eseguirla nelle installazioni.
Installa Prometheus
OpenCost utilizza Prometheus per memorizzare le metriche scaricate per il cluster Kubernetes.
-
Aggiungi il repo Prometheus Community Helm.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
-
Aggiorna il repository Prometheus Helm.
helm repo update
-
Installare Prometheus e configurarlo per OpenCost.
Prometheus verrà installato nello spazio di nomi
prometheus-system
utilizzando le impostazioni predefinite di 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: è possibile utilizzare un'istanza Prometheus esistente. Per ulteriori informazioni, fare riferimento alla documentazione OpenCost.
Installa OpenCost
-
Creare lo spazio di nomi OpenCost.
kubectl create namespace opencost
-
Aggiungere il repository OpenCost Helm.
helm repo add opencost https://opencost.github.io/opencost-helm-chart
-
Aggiorna il repository Helm.
helm repo update
-
Scaricare un file di definizione OpenCost values predefinito.
Il file
values.yaml
viene utilizzato per configurare l'impostazione di configurazione OpenCost e per impostare i costi predefiniti utilizzati nell'esercitazione.curl -o local.yaml https://raw.githubusercontent.com/opencost/opencost-helm-chart/refs/heads/main/charts/opencost/values.yaml
-
Installare il grafico OpenCost Helm.
helm install opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost -f local.yaml
-
Inoltra l'interfaccia utente OpenCost.
kubectl port-forward --namespace opencost service/opencost 9003:9090
Nota: se si riceve una notifica di errore, il motivo è che Helm non ha distribuito completamente OpenCost. Attendere alcuni secondi e ripetere il comando
port-forward
.Importante: l'utilizzo di una porta di inoltro deve essere utilizzato solo per i test interni. Le distribuzioni di produzione devono utilizzare una regola di entrata per fornire l'accesso a OpenCost.
Accedi all'interfaccia utente OpenCost
-
Aprire una nuova finestra del terminale e configurare un tunnel SSH.
ssh -L 9333:localhost:9003 oracle@<ip_address_of_node>
-
Aprire un browser Web e immettere l'URL.
Suggerimento: potrebbe essere necessario aggiornare il browser alcune volte prima che OpenCost abbia raccolto dati sufficienti da visualizzare.
http://localhost:9333/allocation?window=48h
Se i parametri disponibili sono:
- Intervallo date: utilizzare questa opzione per scegliere un periodo predefinito da visualizzare tra i valori predefiniti elencati. È inoltre possibile utilizzare il "Selettore data" per determinare un intervallo di date personalizzato.
- Riduzione: utilizzare questa opzione per scegliere il tipo di risorsa Kubernetes da visualizzare per il costo associato. Ad esempio, Cluster, Node, Namespace, Pod, Deployment e così via.
- Risoluzione: determina la modalità di visualizzazione dei dati restituiti nel grafico. La scelta è giornaliera o cumulativa.
- Valuta: imposta il denominatore valuta visualizzato.
Nota: se richiesto, approvare l'avvertenza di sicurezza in base al browser utilizzato. Per Chrome, fare clic sul pulsante Avanzate e quindi sul collegamento Procedi a localhost (non sicuro). Si noti inoltre che i collegamenti Costi cloud e Costi esterni nella pagina Web sono disabilitati. Questo comportamento si verifica perché in questa esercitazione non si integra OpenCost con una tenancy OCI. Se hai bisogno di questa funzionalità per la tua distribuzione, fai riferimento alla documentazione OpenCost per i dettagli sulla configurazione della tua tenancy OCI in modo che funzioni con OpenCost.
Installa Krew
Krew è un gestore di pacchetti per i plugin kubectl, per facilitare la ricerca e l'installazione nel sistema.
-
Aprire un nuovo terminale e connettersi tramite SSH all'istanza
ocne
.ssh oracle@<ip_address_of_instance>
-
Impostare la variabile di ambiente KUBECONFIG.
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
Installare il pacchetto git.
sudo dnf install -y git
-
Scaricare e installare il plugin 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 )
-
Aggiungere il file binario krew alla variabile di ambiente PATH.
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
Per rendere permanente questa modifica, aggiornare il file .bashrc e riavviare la shell eseguendo la disconnessione e di nuovo il sistema.
-
Verificare l'installazione.
kubectl krew
Output di esempio:
[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.
Installare il plugin CLI OpenCost
-
Installare il plugin.
kubectl krew install cost
Output di esempio:
[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.
-
Verificare l'installazione del plugin.
kubectl cost version kubectl cost --help
Uso del plugin CLI OpenCost
La struttura di sintassi di base utilizzata da kubectl cost
è mappata ai concetti standard di Kubernetes di spazio di nomi, etichetta, distribuzione, StatefulSet e così via. Utilizza le API Kubecost per restituire dati utili sui costi relativi ai carichi di lavoro e alle distribuzioni nel cluster Oracle CNE. Lo strumento è flessibile, quindi iniziamo con alcuni esempi.
-
Mostra la proiezione dei costi mensili per tutti gli spazi dei nomi nel cluster.
kubectl cost namespace --opencost true
Output di esempio:
[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 | | +-----------------+-------------------+--------------------+-----------------+
dove:
- -opencost true = Se definito come
true
, configura OpenCost per utilizzare i parametri in base alla specifica predefinita OpenCost. Equivale a fornire le opzioni della riga di comando:--service-port 9003 --service-name opencost --kubecost-namespace opencost --allocation-path /allocation/compute
.
- -opencost true = Se definito come
-
Mostra il costo totale degli ultimi cinque giorni per tutte le distribuzioni con l'etichetta "app".
kubectl cost label --historical -l app --opencost true
Output di esempio:
[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 | | +-----------------+--------------------------------+--------------------+-----------------+
-
Mostra il costo mensile previsto per distribuzione, inclusi i dettagli sull'efficienza dei costi della CPU e della CPU.
kubectl cost deployment --show-cpu --opencost true
Output di esempio:
[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 | | +-----------------+-------------------+------------------------------------+------------+----------+--------------------+-----------------+
-
Mostra il costo di ogni pod distribuito, inclusi i costi specifici della CPU.
kubectl cost pod --show-cpu --opencost true
Output di esempio:
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 | | +-----------------+-------------------+-------------------------------------------------------+------------+----------+--------------------+-----------------+
Passi successivi
In questa esercitazione viene descritto come utilizzare OpenCost con Oracle CNE. Si limita a illustrare come può aiutarti a gestire i costi dell'infrastruttura e della distribuzione delle applicazioni Oracle CNE. Per ulteriori dettagli, fare riferimento alla documentazione Opencost.
Collegamenti correlati
- Documentazione di Oracle Cloud Native Environment
- OpenCost Documentazione
- Oracle Cloud Native Environment Track
- Stazione di formazione su Oracle Linux
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Use OpenCost with Oracle Cloud Native Environment
G33056-01
Copyright ©2025, Oracle and/or its affiliates.