Observação:
- Este tutorial está disponível em um ambiente de laboratório gratuito fornecido pela Oracle.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Use OpenCost com o Oracle Cloud Native Environment
Introdução
Medir os custos em tempo real de execução e implantação de aplicativos na instalação do Oracle Cloud Native Environment (Oracle CNE) ajuda a gerenciá-los. OpenCost é um projeto de código aberto neutro do fornecedor que registra os custos de infraestrutura de contêiner e nuvem para facilitar o monitoramento de custos de negócios em tempo real. Você pode usar os custos em tempo real relatados para monitorar os custos no cluster, como CPU, GPU e memória, e os custos baseados em provedor de nuvem, como armazenamento.
Objetivos
Neste tutorial, você aprenderá:
- Como instalar o OpenCost
- Como instalar o plug-in OpenCost usando o Krew
- Como usar o OpenCost para monitorar custos de infraestrutura de contêiner e nuvem
Pré-requisitos
-
Mínimo de uma instância do Oracle Linux
-
Cada sistema deve ter o Oracle Linux instalado e configurado com:
- Uma conta de usuário da Oracle (usada durante a instalação) com acesso sudo
- SSH baseado em chave, também conhecido como SSH sem senha, entre os hosts
-
A criação do cluster do OCI requer acesso aos seguintes recursos em uma tenancy do Oracle Cloud Infrastructure:
- Rede virtual na nuvem com quatro sub-redes
- Balanceador de carga da rede
- Bucket de Armazenamento de Objetos com mínimo 5 GiB disponível
- Imagem Personalizada de Computação
- Forma do Arm de Computação para o nó do plano de controle
- VM.Standard.A1. Flexibilize com duas OCPUs e 12 memórias
- Computação para cada plano de controle adicional e nó de trabalho
- VM.Standard.E4. Flexibilize com quatro OCPUs e 64 memórias
Configurar o Oracle CNE
Observação: Se estiver em execução em sua própria tenancy, leia o projeto linux-virt-labs
GitHub README.md e conclua os pré-requisitos antes de implantar o ambiente de laboratório.
-
Abra um terminal no Luna Desktop.
-
Clone o projeto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Altere para o diretório de trabalho.
cd linux-virt-labs/ocne2
-
Instale as coleções necessárias.
ansible-galaxy collection install -r requirements.yml
-
Aumente o tamanho do volume de inicialização.
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
-
Implante o ambiente de laboratório.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
O ambiente de laboratório gratuito requer a variável extra
local_python_interpreter
, que defineansible_python_interpreter
para execuções em execução no localhost. Essa variável é necessária porque o ambiente instala o pacote RPM do SDK para Python do Oracle Cloud Infrastructure, localizado nos módulos python3.6.A forma de implantação padrão usa a CPU AMD e o Oracle Linux 8. Para usar uma CPU Intel ou Oracle Linux 9, adicione
-e instance_shape="VM.Standard3.Flex"
ou-e os_version="9"
ao comando de implantação.Importante: Aguarde a execução bem-sucedida do playbook e atinja a tarefa de pausa. Nesta etapa do manual, a instalação do Oracle CNE está concluída e as instâncias estão prontas. Tome nota da reprodução anterior, que imprime os endereços IP públicos e privados dos nós que ele implanta e qualquer outra informação de implantação necessária durante a execução do laboratório.
Acessar o Cluster do Kubernetes
-
Abra um terminal e estabeleça conexão via SSH com a instância
ocne
.ssh oracle@<ip_address_of_instance>
-
Obtenha uma lista de clusters conhecidos usando a CLI.
ocne cluster list
-
Obtenha a localização da configuração do kube.
ocne cluster show -C mycluster
Usamos o
-C
para especificar um cluster específico na lista de clusters. -
Defina a variável de ambiente KUBECONFIG.
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
Aguarde a estabilização do cluster e todos os pods relatem em um estado de execução.
watch kubectl get pods -A
Depois que todos os pods mostrarem um STATUS de Em Execução, digite
ctrl-c
para sair do comandowatch
. -
Confirme quantos nós estão presentes.
kubectl get nodes
Instalar o Helm
O Helm fornece uma maneira fácil de gerenciar aplicativos instalados no seu cluster do Oracle CNE. Neste exemplo, você o usa para instalar o OpenCost.
-
Instalar o Git.
sudo dnf install -y git
-
Faça download da versão mais recente do Helm e instale-a 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
Observação: geralmente não é recomendável executar um script sem revisá-lo e compreendê-lo antes de executá-lo. No entanto, esse script é amplamente utilizado e bem documentado. A Oracle recomenda que você o revise antes de executá-lo em suas instalações.
Instalar Prometheus
O OpenCost usa o Prometheus para armazenar métricas raspadas para o cluster do Kubernetes.
-
Adicione o repositório Helm da Comunidade Prometheus.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
-
Atualize o repositório Prometheus Helm.
helm repo update
-
Instale o Prometheus e configure-o para OpenCost.
Você instalará o Prometheus no namespace
prometheus-system
usando as definições padrão 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
Observação: Você pode usar uma instância existente do Prometheus. Consulte a documentação OpenCost para obter detalhes.
Instalar OpenCost
-
Crie o namespace OpenCost.
kubectl create namespace opencost
-
Adicione o repositório OpenCost do Helm.
helm repo add opencost https://opencost.github.io/opencost-helm-chart
-
Atualize o repositório Helm.
helm repo update
-
Faça download de um arquivo de definição OpenCost valores padrão.
Você usa o arquivo
values.yaml
para configurar a definição de configuração OpenCost e definir os custos padrão usados no tutorial.curl -o local.yaml https://raw.githubusercontent.com/opencost/opencost-helm-chart/refs/heads/main/charts/opencost/values.yaml
-
Instale o gráfico Helm OpenCost.
helm install opencost --repo https://opencost.github.io/opencost-helm-chart opencost --namespace opencost -f local.yaml
-
Encaminhe a porta da IU OpenCost.
kubectl port-forward --namespace opencost service/opencost 9003:9090
Observação: Se você receber uma notificação de erro, isso ocorre porque o Helm não implantou totalmente o OpenCost. Aguarde alguns segundos e repita o comando
port-forward
.Importante: O uso de uma porta para frente só deve ser usado para teste interno. As implantações de produção devem usar uma regra de Entrada para fornecer acesso a OpenCost.
Acessar a IU OpenCost
-
Abra uma nova janela de terminal e configure um túnel SSH.
ssh -L 9333:localhost:9003 oracle@<ip_address_of_node>
-
Abra um navegador da Web e insira o URL.
Dica: Talvez você precise atualizar o browser algumas vezes antes de o OpenCost ter coletado dados suficientes para serem exibidos.
http://localhost:9333/allocation?window=48h
Onde os parâmetros disponíveis são:
- Intervalo de Datas - Use-o para escolher um período padrão a ser exibido nos padrões listados. Também é possível usar o "Seletor de data" para determinar um intervalo de datas personalizado.
- Detalhamento - Use essa opção para escolher qual tipo de recurso do Kubernetes exibir o custo associado. Por exemplo, Cluster, Nó, Namespace, Pod, Implantação etc.
- Resolução - Determina como o gráfico exibe os dados retornados. A escolha é por dia ou cumulativamente.
- Moeda - Define o denominador de moeda exibido.
Observação: se solicitado, aprove a advertência de segurança com base no browser usado. Para o Chrome, clique no botão Avançado e, em seguida, no link Prosseguir para o localhost (inseguro). Além disso, observe que os links Custos da Nuvem e Custos Externos na página Web estão desativados. Esse comportamento acontece porque você não integra OpenCost a uma Tenancy do OCI neste tutorial. Se você precisar dessa funcionalidade para sua implantação, consulte a documentação OpenCost para obter detalhes sobre como configurar sua tenancy do OCI para trabalhar com OpenCost.
Instalar Krew
O Krew é um gerenciador de pacotes dos plug-ins do kubectl, o que facilita a descoberta e a instalação deles no sistema.
-
Abra um novo terminal e conecte-se via SSH à instância
ocne
.ssh oracle@<ip_address_of_instance>
-
Defina a variável de ambiente KUBECONFIG.
export KUBECONFIG=$(ocne cluster show -C mycluster)
-
Instale o pacote git.
sudo dnf install -y git
-
Faça download do plug-in krew e instale-o.
( 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 )
-
Adicione o binário krew à variável de ambiente PATH.
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
Para tornar essa alteração permanente, atualize o arquivo .bashrc e reinicie seu shell fazendo logout e de volta no sistema.
-
Verifique a instalação.
kubectl krew
Exemplo de Saída:
[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.
Instalar o Plug-in CLI OpenCost
-
Instale o plug-in.
kubectl krew install cost
Exemplo de Saída:
[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 a instalação do plug-in.
kubectl cost version kubectl cost --help
Usando o Plug-in da CLI OpenCost
A estrutura de sintaxe básica usada pelo kubectl cost
é mapeada para os conceitos padrão do Kubernetes de namespace, label, implantação, StatefulSet etc. principalmente. Ele usa as APIs do Kubecost para retornar dados de custo úteis relacionados às cargas de trabalho e implantações no cluster do Oracle CNE. A ferramenta é flexível, então vamos começar com alguns exemplos.
-
Mostra a projeção de custo mensal para todos os namespaces do cluster.
kubectl cost namespace --opencost true
Exemplo de Saída:
[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 | | +-----------------+-------------------+--------------------+-----------------+
Onde:
- –opencost true = Quando definido como
true
, ele configura OpenCost para usar os parâmetros de acordo com a especificação padrão OpenCost. O que é equivalente a fornecer as opções da linha de comando:--service-port 9003 --service-name opencost --kubecost-namespace opencost --allocation-path /allocation/compute
.
- –opencost true = Quando definido como
-
Mostre o custo total dos últimos cinco dias por todas as implantações com o rótulo "app".
kubectl cost label --historical -l app --opencost true
Exemplo de Saída:
[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 | | +-----------------+--------------------------------+--------------------+-----------------+
-
Mostre o custo mensal projetado por implantação, incluindo detalhes de eficiência de custo de CPU e CPU.
kubectl cost deployment --show-cpu --opencost true
Exemplo de Saída:
[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 | | +-----------------+-------------------+------------------------------------+------------+----------+--------------------+-----------------+
-
Mostre o custo de cada pod implantado, incluindo custos específicos da CPU.
kubectl cost pod --show-cpu --opencost true
Exemplo de Saída:
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 | | +-----------------+-------------------+-------------------------------------------------------+------------+----------+--------------------+-----------------+
Próximas Etapas
Este tutorial apresentou o uso de OpenCost com o Oracle CNE. Ele apenas mostra como ele pode ajudar você a gerenciar os custos de sua infraestrutura e implantação de aplicativos Oracle CNE. Consulte a documentação da Opencost para obter mais detalhes.
Links Relacionados
- Documentação do Oracle Cloud Native Environment
- OpenCost Documentação
- Roteiro do Oracle Cloud Native Environment
- Oracle Linux Training Station
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Use OpenCost with Oracle Cloud Native Environment
G33059-01
Copyright ©2025, Oracle and/or its affiliates.