En plus des stratégies de répartition des coûts par défaut, la suite de gestion des coûts vous permet de créer des politiques de comptabilisation des coûts personnalisées. Pour définir votre propre logique de refacturation des coûts des ressources cloud, créez un fichier de configuration qui définit les prix personnalisés des ressources. Cela permet d'aligner plus étroitement les données de coûts sur votre logique métier.
Cas d'utilisation
La tarification personnalisée offre un contrôle granulaire sur vos coûts informatiques. Voici quelques cas d'utilisation courants :
Une équipe opérationnelle interne achète des ressources de calcul sous-jacentes en gros et les revend à différentes équipes métier.
Normalisez les coûts au niveau métier en éliminant les variations de prix résultant de la planification de pods identiques sur des nœuds aux spécifications différentes.
Pour mettre en œuvre une tarification différenciée, incluez la limite de ressource lors du calcul du prix unitaire du pod.
Pour répondre à ces scénarios, la suite de gestion des coûts propose une fonctionnalité de modèle de tarification personnalisé. Vous pouvez modifier un modèle pour configurer le prix unitaire de chaque ressource d'un pod ; ces prix sont ensuite agrégés pour déterminer le coût personnalisé du pod.
Le coût personnalisé d'un pod est actuellement disponible uniquement via l'API. Après avoir activé et configuré la tarification personnalisée, récupérez le coût à partir du champ customCost dans la réponse de l'API. Pour plus de détails sur l'utilisation de l'API, consultez Récupération des données de coûts par API.
Prérequis
La fonctionnalité Cost Insights est activée.
Vous avez obtenu le fichier KubeConfig du cluster et utilisé kubectl pour vous connecter au cluster.
Étape 1 : Activer la tarification personnalisée pour cost-exporter
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
En haut de la page, basculez le namespace vers kube-system. Dans la colonne Actions de la liste des Deployments, cliquez sur More > View in YAML pour ack-cost-exporter. Dans la section
command, ajoutez'--enable-custom-price=true'pour activer la fonctionnalité de prix personnalisé. Ensuite, cliquez sur 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'
Étape 2 : Configurer le modèle de tarification
Procédure
-
Créez un fichier nommé
price-template.yamlavec le contenu d'exemple suivant.ImportantLes champs sous le champ
specd'un modèle sont facultatifs. Si tous les champs configurés sousspeccorrespondent aux métadonnées du Pod, le Pod est considéré comme correspondant au modèle. Un modèle avec unspecvide peut correspondre à tous les Pods.Les modèles sont appariés dans l'ordre. Si un pod correspond à plusieurs modèles dans le fichier YAML, le système utilise le premier modèle correspondant pour calculer le coût du 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.02Ce modèle de tarification spécifie les règles suivantes :
-
Le modèle
template-nginxs'applique aux pods qui remplissent toutes les conditions suivantes :Le label contient
app:nginxLe pod se trouve dans le namespace
defaultoukube-system.La requête CPU est de 500 m et la limite est de 1 cœur.
La requête mémoire est de 512 MiB et la limite est de 1 GiB.
Tous les autres pods du cluster utilisent le modèle
template-default.
Le tableau suivant décrit les paramètres.
Paramètre
Description
name
Le nom du modèle de tarification.
spec.labelSelector
Une carte de paires clé-valeur. Un pod est considéré comme correspondant s'il possède tous les labels spécifiés dans ce sélecteur.
spec.namespaceSelector
Une liste de namespaces. Le namespace du pod doit figurer dans cette liste pour correspondre.
spec.resource.cpu
La requête CPU du pod.
spec.resource.memory
La requête mémoire du pod.
spec.resource.cpu-overcommit-ratio
Le ratio de surengagement CPU du pod, calculé comme
CPU limit / CPU request.spec.resource.memory-overcommit-ratio
Le ratio de surengagement mémoire du pod, calculé comme
memory limit / memory request.price.cpu
Le prix unitaire du CPU, mesuré en coût par cœur-heure.
price.memory
Le prix unitaire de la mémoire, mesuré en coût par GiB-heure.
-
Exécutez la commande suivante pour créer le ConfigMap
price-templatedans le namespacekube-systemet appliquer votre configuration de tarification personnalisée.kubectl apply -f price-template.yaml -n kube-system
Documents connexes
Estimez les coûts des pods en fonction de l'utilisation des ressources du cluster en utilisant des modèles à ressource unique (CPU ou mémoire) ou pondérés (CPU et mémoire). Pour plus d'informations, consultez Politiques d'estimation des coûts.
Récupérez les données Cost Insights via l'API pour un développement personnalisé. Consultez Appel d'une API pour interroger les données de coûts.