Je teste du code Terraform pour créer un cluster Kubernetes, j'ai donc choisi la VM la plus petite / la moins chère
resource "azurerm_kubernetes_cluster" "k8s" { name = "${var.cluster_name}" location = "${azurerm_resource_group.resource_group.location}" resource_group_name = "${azurerm_resource_group.resource_group.name}" dns_prefix = "${var.dns_prefix}" agent_pool_profile { name = "agentpool" count = "${var.agent_count}" vm_size = "Standard_B1s" os_type = "Linux" os_disk_size_gb = "${var.agent_disk_size}" } service_principal { client_id = "${var.client_id}" client_secret = "${var.client_secret}" } }
Cependant, lorsque je terraform applique
je reçois ceci message d'erreur de retour d'Azure:
"Le SKU de VM choisi pour ce cluster
Standard_B1s
ne dispose pas de suffisamment de CPU / mémoire pour fonctionner en tant que nœud AKS."
Comment puis-je répertorier les SKU de VM valides pour les nœuds AKS et les trier par coût?
3 Réponses :
Vous devez sélectionner une instance avec au moins 3,5 Go de mémoire . Lisez Une note sur la taille des nœuds sur ce blog . Vous pouvez répertorier la taille et le prix de la machine virtuelle sur le site de vente Azure < / a>.
Actuellement, le moins cher est le Standard_B2s
avec 4 Go de RAM. Vous pouvez également le trier directement dans le portail Azure.
Juste pour ajouter à la réponse existante. Je ne pense pas qu'il existe une énumération pour répertorier toutes les tailles valides de vms, mais si vous regardez le Définition de l'API , il les répertorie tous assez clairement.
Et vous pouvez utiliser azureprice.net ou quelque chose de similaire pour trouver la machine virtuelle la moins chère pour votre région (généralement sa série B).
Vous faites un B1 qui est moins cher que B2 si vous redimensionnez le vmss, puis mettez à niveau l'instance. Celui-ci coûte 3,80 $ / mois pour Linux et 10,22 $ / mois pour Windows
Pour une raison quelconque, vous ne pouvez pas encore faire cela dans Terraform.
Étape 1: Cliquez sur vmss -> paramètres -> taille -> voir toutes les tailles (en petits caractères) -> redimensionner
Étape 2: Cliquez sur vmss -> settings -> instance -> _0 -> upgrade (en haut de la barre du contrôleur)
Je ne m'inquiéterais pas trop de la taille de l'instance vm. C'est là que Terraform vous arrache. os_disk_size_gb. Définissez ce paramètre plus bas, sinon il est par défaut de 20 $ / mois par instance. Il semble qu'il n'y ait aucun moyen de changer le niveau, ils ont choisi par défaut un disque premium de 128 Go, et ont donné l'impression que vous ne dépenseriez que 30 $ par nœud.
MISE À JOUR: J'ai commencé à rencontrer des problèmes avec une instance de taille b1ls.
C'est intéressant. Cependant, si vous ne pouvez pas le faire automatiquement, cela ne m'aide pas vraiment.
Ce que j'ai fait a été amélioré avec Terraform, puis j'ai écrit un script PowerShell pour effectuer le redimensionnement. Vous pouvez ensuite écrire un PowerShell qui initie et applique Terraform, puis exécute l'autre PowerShell, de sorte qu'il soit entièrement automatisé. Cependant, je rencontre un problème où je ne peux pas supprimer l'espace de noms avec kubectl avec les b1ls. Je mettrai à jour ma réponse bientôt si le redimensionnement en b1ls n'a pas de sens. Je me concentrerais sur os_disk_size_gb si vous essayez d'économiser de l'argent. Vous pouvez ensuite écrire un script pour désallouer vmss lorsqu'il n'est pas utilisé ou terraform destroy lorsqu'il n'est pas utilisé.
J'ai ajouté une photo, si cette réponse est utile, vous pouvez l'accepter comme réponse.
Je l'ai marqué comme utile. Je vais le laisser ouvert pendant encore 24 heures avant d'accepter au cas où il existe un moyen de ligne de commande de répertorier les VM valides.
Les exigences minimales de Kubernetes peuvent être trouvées ici: kubernetes.io/docs / setup / Independent / install-kubeadm /… D'autres recommandations devraient prendre en compte l'analyse de la charge de travail.