Além das estratégias padrão de alocação de custos, o conjunto de gerenciamento de custos permite criar políticas personalizadas de contabilidade de custos. Para definir sua própria lógica de chargeback para custos de recursos em nuvem, crie um arquivo de configuração que defina preços personalizados para os recursos. Isso ajuda a alinhar os dados de custos mais estreitamente à lógica do seu negócio.
Casos de uso
A precificação personalizada oferece controle refinado sobre seus custos de TI. Os casos de uso comuns incluem:
Uma equipe de operações interna adquire recursos de computação subjacentes em grande volume e os revende para diferentes equipes de negócios.
Normalização de custos no nível de negócios, eliminando variações de preço resultantes do agendamento de pods idênticos em nós com especificações diferentes.
Implementação de precificação diferenciada, incluindo o limite de recursos no cálculo do preço unitário do pod.
Para atender a esses cenários, o conjunto de gerenciamento de custos fornece um recurso de modelo de precificação personalizada. Edite um modelo para configurar o preço unitário de cada recurso de um pod, que são então agregados para determinar o custo personalizado do pod.
Atualmente, o custo personalizado de um pod está disponível apenas por meio da API. Após ativar e configurar a precificação personalizada, recupere o custo no campo customCost na resposta da API. Para obter detalhes sobre como usar a API, consulte Recuperar dados de custos por API.
Pré-requisitos
O recurso de insights de custos está ativado.
Você obteve o arquivo KubeConfig do cluster e usou kubectl para se conectar ao cluster.
Etapa 1: Ativar precificação personalizada para cost-exporter
Faça logon no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em nome do seu cluster. No painel de navegação à esquerda, clique em .
-
No topo da página, alterne o namespace para kube-system. Na coluna Actions da lista de Deployments, clique em More > View in YAML para ack-cost-exporter. Na seção
command, adicione'--enable-custom-price=true'para ativar o recurso de preço personalizado. Em seguida, clique em Update.spec: containers: - command: - /root/alibaba-cloud-price-exporter - '--listen-address=:9091' - '--ali-user-id=1251182063904492' - '--cluster-id=c66b9e33984194a219813f6a7d402cdba' - '--region-id=cn-hangzhou' - '--cluster-type=ManagedKubernetes' - '--cluster-profile=Default' - '--enable-custom-price=true' env: - name: DefaultIDCPricePerCPUCoreHour value: '0.2'
Etapa 2: Configurar o modelo de precificação
Procedimento
-
Crie um arquivo chamado
price-template.yamlcom o seguinte conteúdo de exemplo.ImportanteOs campos sob o campo
specem um modelo são opcionais. Se todos os campos configurados emspeccorresponderem aos metadados do Pod, o Pod será considerado compatível com o modelo. Um modelo comspecvazio pode corresponder a todos os Pods.A correspondência dos modelos segue uma ordem específica. Caso um pod corresponda a vários modelos no arquivo YAML, o sistema usa o primeiro modelo correspondente para calcular o custo do pod.
apiVersion: v1 kind: ConfigMap metadata: name: price-template namespace: kube-system data: template.yaml: | - name: template-nginx spec: labelSelector: app: nginx namespaceSelector: - default - kube-system resource: cpu: 500m memory: 512Mi cpu-overcommit-ratio: 2 memory-overcommit-ratio: 2 price: cpu: 0.2 memory: 0.03 - name: template-default price: cpu: 0.1 memory: 0.02Este modelo de precificação especifica as seguintes regras:
-
O modelo
template-nginxaplica-se a pods que atendem a todas as condições a seguir:O rótulo contém
app:nginxO pod está no namespace
defaultoukube-system.A solicitação de CPU é 500m e o limite é 1 Core.
A solicitação de memória é 512 MiB e o limite é 1 GiB.
Todos os outros pods no cluster usam o modelo
template-default.
A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
name
Nome do modelo de precificação.
spec.labelSelector
Mapa de pares chave-valor. Um pod é considerado compatível se tiver todos os rótulos especificados neste seletor.
spec.namespaceSelector
Lista de namespaces. O namespace do pod deve estar nesta lista para haver correspondência.
spec.resource.cpu
Solicitação de CPU do pod.
spec.resource.memory
Solicitação de memória do pod.
spec.resource.cpu-overcommit-ratio
Taxa de overcommit de CPU do pod, calculada como
limite de CPU / solicitação de CPU.spec.resource.memory-overcommit-ratio
Taxa de overcommit de memória do pod, calculada como
limite de memória / solicitação de memória.price.cpu
Preço unitário da CPU, medido em custo por núcleo-hora.
price.memory
Preço unitário da memória, medido em custo por GiB-hora.
-
Execute o comando a seguir para criar o ConfigMap
price-templateno namespacekube-systeme aplicar sua configuração de precificação personalizada.kubectl apply -f price-template.yaml -n kube-system
Documentos relacionados
Estime os custos dos pods com base na utilização de recursos do cluster usando modelos de recurso único (CPU ou memória) ou ponderado (CPU e memória). Para mais informações, consulte Políticas de estimativa de custos.
Recupere dados de insights de custos via API para desenvolvimento personalizado. Consulte Chamar uma API para consultar dados de custos.