Note :
- Ce tutoriel est disponible dans un environnement de laboratoire gratuit fourni par Oracle.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments d'Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles qui sont propres à votre environnement en nuage.
Utiliser OpenCost avec Oracle Cloud Native Environment
Présentation
La mesure des coûts en temps réel d'exécution et de déploiement d'applications sur votre installation Oracle Cloud Native Environment (Oracle CNE) vous aide à les gérer. OpenCost est un projet à code source libre, indépendant de tout fournisseur, qui enregistre les coûts des infrastructures en nuage et en conteneurs pour faciliter la surveillance des coûts d'affaires en temps réel. Vous pouvez utiliser les coûts en temps réel qu'il rapporte pour surveiller les coûts en grappe, tels que les coûts de CPU, de GPU et de mémoire, et les coûts basés sur les fournisseurs de services infonuagiques, tels que le stockage.
Objectifs
Ce tutoriel décrit comment :
- Comment installer OpenCost
- Comment installer le plugiciel OpenCost à l'aide de Krew
- Comment utiliser OpenCost pour surveiller les coûts d'infrastructure de conteneur et en nuage
Préalables
-
Minimum d'une instance Oracle Linux
-
Oracle Linux doit être installé et configuré pour chaque système avec :
- Un compte utilisateur Oracle (utilisé pendant l'installation) avec accès sudo
- SSH basé sur une clé, également appelé SSH sans mot de passe, entre les hôtes
-
La création d'une grappe OCI nécessite l'accès aux ressources suivantes dans une location Oracle Cloud Infrastructure :
- Réseau en nuage virtuel avec quatre sous-réseaux
- Équilibreur de charge de réseau
- Seau de stockage d'objets avec un minimum de 5 GiB disponible
- Image personnalisée du service de calcul
- Forme de bras de calcul pour le noeud de plan de contrôle
- VM.Standard.A1. Flex avec deux OCPU et 12 mémoire
- Calcul pour chaque plan de contrôle supplémentaire et chaque noeud de travail
- VM.Standard.E4. Flex avec quatre OCPU et 64 mémoire
Configurer Oracle CNE
Note : Si vous exécutez votre propre location, lisez les préalables du projet linux-virt-labs
GitHub README.md et remplissez les conditions requises avant de déployer l'environnement de laboratoire.
-
Ouvrez un terminal sur le Luna Desktop.
-
Clonez le projet
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Accédez au répertoire de travail.
cd linux-virt-labs/ocne2
-
Installez les collections requises.
ansible-galaxy collection install -r requirements.yml
-
Augmentez la taille du volume de démarrage.
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
-
Déployez l'environnement de l'exercice.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
L'environnement de laboratoire gratuit nécessite la variable supplémentaire
local_python_interpreter
, qui définitansible_python_interpreter
pour les lectures exécutées sur localhost. Cette variable est nécessaire car l'environnement installe l'ensemble RPM pour la trousse SDK Oracle Cloud Infrastructure pour Python, située sous les modules python3.6.La forme de déploiement par défaut utilise le processeur AMD et Oracle Linux 8. Pour utiliser une unité centrale Intel ou Oracle Linux 9, ajoutez
-e instance_shape="VM.Standard3.Flex"
ou-e os_version="9"
à la commande de déploiement.Important : Attendez que le livre de jeu s'exécute avec succès et atteignez la tâche Mettre en pause. À ce stade du livre de jeux, l'installation du CNE Oracle est terminée et les instances sont prêtes. Prenez note de la lecture précédente, qui imprime les adresses IP publiques et privées des noeuds qu'il déploie et toutes les autres informations de déploiement nécessaires lors de l'exécution de l'exercice.
Accéder à la grappe Kubernetes
-
Ouvrez un terminal et connectez-vous au moyen de SSH à l'instance
ocne
.ssh oracle@<ip_address_of_instance>
-
Obtenez une liste des grappes connues à l'aide de l'interface de ligne de commande.
ocne cluster list
-
Obtenir l'emplacement de la configuration du kube.
ocne cluster show -C mycluster
Nous utilisons
-C
pour spécifier une grappe spécifique dans la liste des grappes. -
Définissez la variable d'environnement KUBECONFIG.
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
Attendez que la grappe se stabilise et que tous les pods soient en cours d'exécution.
watch kubectl get pods -A
Une fois que tous les pods affichent le statut STATUS En cours d'exécution, entrez
ctrl-c
pour quitter la commandewatch
. -
Vérifiez le nombre de noeuds présents.
kubectl get nodes
Installer Helm
Helm offre un moyen facile de gérer les applications installées sur votre grappe CNE Oracle - dans cet exemple, vous l'utilisez pour installer OpenCost.
-
Installer Git.
sudo dnf install -y git
-
Téléchargez la dernière version de Helm et installez-la localement.
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
Note : Il n'est généralement pas recommandé d'exécuter un script sans le vérifier et le comprendre avant de l'exécuter. Cependant, ce script est largement utilisé et bien documenté. Oracle vous recommande de le vérifier avant de l'exécuter sur vos installations.
Installer Prometheus
OpenCost utilise Prometheus pour stocker les mesures grattées de la grappe Kubernetes.
-
Ajoutez le référentiel Prometheus Community Helm.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
-
Mettez à jour le référentiel Prometheus Helm.
helm repo update
-
Installez Prometheus et configurez-le pour OpenCost.
Vous installerez Prometheus dans l'espace de noms
prometheus-system
à l'aide des paramètres OpenCost par défaut.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
Note : Vous pouvez utiliser une instance Prometheus existante. Pour plus de détails, reportez-vous à la documentation OpenCost.
Installer OpenCost
-
Créez l'espace de noms OpenCost.
kubectl create namespace opencost
-
Ajoutez le référentiel Helm OpenCost.
helm repo add opencost https://opencost.github.io/opencost-helm-chart
-
Mettez à jour le référentiel Helm.
helm repo update
-
Téléchargez un fichier de définition de valeurs OpenCost par défaut.
Vous utilisez le fichier
values.yaml
pour configurer le paramètre de configuration OpenCost et définir les coûts par défaut utilisés dans le tutoriel.curl -o local.yaml https://raw.githubusercontent.com/opencost/opencost-helm-chart/refs/heads/main/charts/opencost/values.yaml
-
Installez le graphique Helm OpenCost.
helm install opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost -f local.yaml
-
Transférez le port vers l'interface utilisateur OpenCost.
kubectl port-forward --namespace opencost service/opencost 9003:9090
Note : Si vous recevez un avis d'erreur, c'est parce que Helm n'a pas entièrement déployé OpenCost. Attendez quelques secondes et répétez la commande
port-forward
.Important : L'utilisation d'un transfert de port ne doit être utilisée que pour les tests internes. Les déploiements de production doivent utiliser une règle de trafic entrant pour fournir l'accès à OpenCost.
Accéder à l'interface utilisateur OpenCost
-
Ouvrez une nouvelle fenêtre de terminal et configurez un tunnel SSH.
ssh -L 9333:localhost:9003 oracle@<ip_address_of_node>
-
Ouvrez un navigateur Web et entrez l'URL.
Conseil : Vous devrez peut-être actualiser le navigateur plusieurs fois avant que OpenCost n'ait collecté suffisamment de données pour être affichées.
http://localhost:9333/allocation?window=48h
Les paramètres disponibles sont les suivants :
- Intervalle de dates - Utilisez cette option pour choisir une période par défaut à afficher parmi les valeurs par défaut répertoriées. Il est également possible d'utiliser le " sélecteur de date " pour déterminer un intervalle de dates personnalisé.
- Répartition - Utilisez cette option pour choisir le type de ressource Kubernetes à utiliser pour afficher le coût associé. Par exemple, Grappe, Noeud, Espace de noms, Pod, Déploiement, etc.
- Résolution - Détermine la façon dont le graphique affiche les données retournées. Le choix est soit par jour, soit cumulatif.
- Devise - Définit le dénominateur de devise affiché.
Note : Sur demande, approuvez l'avertissement de sécurité en fonction du navigateur utilisé. Pour Chrome, cliquez sur le bouton Advanced, puis sur le lien Proceed to localhost (insafe). Notez également que les liens Coûts du nuage et Coûts externes de la page Web sont désactivés. Ce comportement se produit parce que vous n'intégrez pas OpenCost à une location OCI dans ce tutoriel. Si vous avez besoin de cette fonctionnalité pour votre déploiement, reportez-vous à la documentation sur OpenCost pour plus de détails sur la configuration de votre location OCI pour qu'elle fonctionne avec OpenCost.
Installer Krew
Krew est un gestionnaire d'ensembles pour les plugiciels kubectl, ce qui facilite leur détection et leur installation sur votre système.
-
Ouvrez un nouveau terminal et connectez-vous au moyen de SSH à l'instance
ocne
.ssh oracle@<ip_address_of_instance>
-
Définissez la variable d'environnement KUBECONFIG.
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
Installez l'ensemble git.
sudo dnf install -y git
-
Téléchargez et installez le plugiciel 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 )
-
Ajoutez le binaire krew à votre variable d'environnement PATH.
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
Pour rendre cette modification permanente, mettez à jour votre fichier .bashrc et redémarrez votre interpréteur de commandes en vous déconnectant et en retournant dans le système.
-
Vérifiez l'installation.
kubectl krew
Exemple de sortie :
[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.
Installer le plugiciel d'interface de ligne de commande OpenCost
-
Installez le plugin.
kubectl krew install cost
Exemple de sortie :
[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.
-
Vérifiez l'installation du plugiciel.
kubectl cost version kubectl cost --help
Utilisation du plugiciel d'interface de ligne de commande OpenCost
La structure de syntaxe de base utilisée par kubectl cost
est mappée aux concepts standard de Kubernetes tels que l'espace de noms, l'étiquette, le déploiement, StatefulSet, etc. Il utilise les API Kubecost pour retourner des données de coûts utiles relatives aux charges de travail et aux déploiements sur votre grappe CNE Oracle. L'outil est flexible, alors commençons par quelques exemples.
-
Afficher la projection mensuelle des coûts pour tous les espaces de noms de la grappe.
kubectl cost namespace --opencost true
Exemple de sortie :
[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 | | +-----------------+-------------------+--------------------+-----------------+
Où :
- –opencost true = Lorsqu'il est défini comme
true
, il configure OpenCost pour utiliser les paramètres conformément à la spécification par défaut OpenCost. Ce qui équivaut à fournir les options de ligne de commande :--service-port 9003 --service-name opencost --kubecost-namespace opencost --allocation-path /allocation/compute
.
- –opencost true = Lorsqu'il est défini comme
-
Afficher le coût total des cinq derniers jours pour tous les déploiements avec l'étiquette "app".
kubectl cost label --historical -l app --opencost true
Exemple de sortie :
[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 | | +-----------------+--------------------------------+--------------------+-----------------+
-
Afficher le coût mensuel projeté par déploiement, y compris les détails de rentabilité d'UC et d'UC.
kubectl cost deployment --show-cpu --opencost true
Exemple de sortie :
[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 | | +-----------------+-------------------+------------------------------------+------------+----------+--------------------+-----------------+
-
Afficher le coût de chaque module de réseautage déployé, y compris les coûts propres à l'UC.
kubectl cost pod --show-cpu --opencost true
Exemple de sortie :
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 | | +-----------------+-------------------+-------------------------------------------------------+------------+----------+--------------------+-----------------+
Étapes suivantes
Ce tutoriel explique l'utilisation de OpenCost avec Oracle CNE. Il explique seulement comment il peut vous aider à gérer les coûts de votre infrastructure Oracle CNE et du déploiement d'applications. Reportez-vous à la documentation Opencost pour plus de détails.
Liens connexes
- Documentation sur Oracle Cloud Native Environment
- OpenCost Documentation
- Parcours Environnement natif Oracle Cloud
- Parcours d'apprentissage pour Oracle Linux
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation sur le produit, visitez Oracle Help Center.
Use OpenCost with Oracle Cloud Native Environment
G33052-01
Copyright ©2025, Oracle and/or its affiliates.