Kubernetes et Cloud privé
Où dans l'administration : Kubernetes : Infrastructure › Cloud provider › CloudStack › Kubernetes (CKS) (
/infra/cloudstack?tab=k8s), puis Services › Kubernetes (Overview, Clusters, Versions, Policy). Private Cloud : Services › Private Cloud (Overview/vpc, VPC/vpc/list, Plans & pricing/vpc/plans). Activez les deux modules sous System › Admin › License & updates.
Description
- Kubernetes. Les clients créent des clusters Kubernetes gérés sur votre CloudStack avec CloudStack Kubernetes Service (CKS). Le plan de contrôle est gratuit ; les clients paient pour les nœuds worker. NexCMP crée un réseau distinct et une IP publique pour chaque cluster et isole les clusters de chaque client.
- Private Cloud. Les clients disposent d'un réseau privé (un VPC CloudStack) doté d'un routeur, de sous-réseaux (tiers), de règles de pare-feu (ACL réseau) et de machines virtuelles. Il est vendu par forfait de bande passante avec un débit dédié et non mesuré (par exemple 50, 100, 500 Mbps, 1 et 3 Gbps). Chaque client peut posséder un VPC par défaut.
Tous deux reposent sur CloudStack et utilisent son API via la même connexion.
Prérequis
Kubernetes
| Élément | Prérequis |
|---|---|
| CloudStack | 4.23 (testé). CKS doit être activé (cloud.kubernetes.service.enabled = true). |
| Compte | Un compte Domain Admin dans le domaine dédié, afin que NexCMP puisse créer un projet CloudStack pour chaque client et des limites de ressources associées. Voir CloudStack. |
endpoint.url | Le paramètre global CloudStack doit pointer vers votre API de gestion, accessible depuis les machines virtuelles du cluster. NexCMP affiche la valeur et le résultat d'une vérification de point de terminaison. |
| Versions | Au moins une version Kubernetes prise en charge avec son ISO de binaires, à l'état Enabled. Les versions en fin de vie ne peuvent pas être proposées à la vente. |
| Offre de plan de contrôle | Une offre de service gratuite avec exactement 2 vCPU, 2048 Mo de RAM et une limite de processeur (limitcpuuse = true), visible par le compte. Le serveur rejette toute autre configuration avec cp_offering_invalid. |
| Réseau | Une offre de réseau isolé compatible CKS qui est activée. |
| IP | Des adresses IPv4 publiques gratuites dans la plage vendable ; chaque cluster en utilise une. |
| Capacité | Chaque cluster vous coûte 2 à 4 Go de RAM pour le plan de contrôle et une petite machine virtuelle routeur. Surveillez les onglets de capacité. |
Cloud privé
| Élément | Prérequis |
|---|---|
| CloudStack | 4.23 (testé) avec VPC activé. |
| Offre VPC | Une offre VPC. Une offre double pile attribue également un /64 IPv6 à chaque sous-réseau. |
| Offres de réseau de sous-réseau | Une offre de réseau par forfait de bande passante, créée pour le VPC, avec le débit réseau (Mbps) égal au forfait, plus une offre verrouillée de 1 Mbps qui s'applique lorsqu'un VPC est verrouillé pour non-paiement. |
| Compte | Le compte dédié (Domain Admin recommandé). Les réseaux VPC restent dans le compte, pas dans les projets. |
| IP | Adresses IPv4 publiques gratuites (chaque VPC en utilise une pour le NAT source). |
| Espace d'adressage | Chaque VPC reçoit un /16 de 10.128.0.0/9. Conservez cette plage inutilisée sur vos propres réseaux. |
| Dépend de | CloudStack connecté ; le module Private Cloud. |
Préparer l'infrastructure
Kubernetes : activer CKS et ajouter des versions
Activez le service et définissez le point de terminaison, puis redémarrez le serveur de gestion :
bashcmk update configuration name=cloud.kubernetes.service.enabled value=true cmk update configuration name=endpoint.url value=https://cloudstack.example.com/client/api sudo systemctl restart cloudstack-managementendpoint.urlest appelé en retour par le contrôleur du cluster, il doit donc s'agir d'une adresse accessible par les machines virtuelles du cluster.Compilez un ISO de binaires Kubernetes pour la version que vous souhaitez vendre, à l'aide du script
create-kubernetes-binaries-iso.shde l'arborescence source de CloudStack, hébergez-le sur un serveur web et enregistrez-le :bashcmk add kubernetessupportedversion name="Kubernetes 1.35.0" semanticversion=1.35.0 \ url=https://files.example.com/setup-v1.35.0-calico-amd64.iso zoneid=<zone-id> \ mincpunumber=2 minmemory=2048 cmk list kubernetessupportedversions filter=name,semanticversion,state,isostateAttendez que l'état de l'ISO devienne Ready et que la version soit Enabled.
Créez l'offre de plan de contrôle, limitée au domaine NexCMP :
bashcmk create serviceoffering name=K8S-CP-2-2 displaytext="Kubernetes control plane" \ cpunumber=2 cpuspeed=1000 memory=2048 limitcpuuse=true offerha=false domainid=<domain-id>Vérifiez qu'une offre de réseau CKS est activée :
bashcmk list networkofferings state=Enabled forvpc=false filter=id,name
Cloud privé : créer les offres
Dans l'interface utilisateur de CloudStack (Service Offerings › Network Offerings › Add network offering) ou avec cmk :
Répertoriez ce que vous possédez :
bashcmk list vpcofferings filter=id,name,state cmk list networkofferings forvpc=true filter=id,name,networkrate,stateUtilisez une offre VPC activée (double pile si vous souhaitez l'IPv6). Si vous en avez besoin d'une nouvelle, klonez l'offre VPC par défaut de CloudStack et activez-la.
Pour chaque forfait de bande passante que vous vendez, créez une offre de réseau pour VPC (klonez l'offre par défaut "isolated network offering for VPC networks") et définissez Network rate (Mb/s) sur la vitesse du forfait :
50,100,500,1000,3000. Activez chaque offre.Créez une offre supplémentaire avec un débit réseau de 1 (
VPC-LOCKED-1M) pour les VPC verrouillés : les clients peuvent toujours accéder à leurs serveurs via SSH, mais la vitesse est limitée.Notez l'UUID de chaque offre. NexCMP en a besoin dans la section suivante.
Les ID d'offre fournis n'existent pas dans votre cloud
Le formulaire Private Cloud est pré-rempli avec des UUID d'offre appartenant à une autre installation CloudStack. Remplacez chacun d'eux par le vôtre, sinon la première commande VPC échouera.
Connecter dans NexCMP
Kubernetes
Ouvrez Infrastructure › Cloud provider › CloudStack et choisissez l'onglet Kubernetes (CKS). La carte de droite CKS status on CloudStack (read-only) affiche
kubernetesserviceenabled,endpoint.urlavec Endpoint check, l'offre de réseau CKS, les paramètrescloud.kubernetes.*et la liste des ISO et versions. Cliquez sur Recheck après avoir corrigé un problème.Dans Sales config, choisissez le Control plane Offering (un avertissement apparaît s'il ne s'agit pas exactement de 2 vCPU / 2048 Mo / limite CPU), définissez Max workers per cluster (1 à 9 : CKS autorise 10 nœuds, y compris le nœud de contrôle), activez l'option Enable CKS for this backend et cliquez sur Save. Le commutateur reste désactivé tant qu'aucune offre n'est choisie.

Ouvrez Services › Kubernetes › Versions et cliquez sur Sync from CloudStack. Activez Available for new clusters pour les versions que vous vendez, définissez la version par défaut et, si vous le souhaitez, une date de Fin de vie (EOL).
Ouvrez Services › Kubernetes › Policy. Dans Worker plans, ajoutez des plans dotés d'un Code de plan (A-Z, 0-9, tiret, jusqu'à 16 caractères). Définissez NVMe per worker (GB), les valeurs Min and max workers, ainsi que les limites du cluster (clusters actifs par compte, créations par 24 heures, plafond global, opérations CKS simultanées). Activez ensuite Sell Kubernetes (CKS). Au moins un plan doit rester en vente.

Cloud privé
Ouvrez Services › Private Cloud (Vue d'ensemble). Dans la carte des politiques, remplacez VPC offering et Locked offering tier par vos propres UUID. Vérifiez les limites (VPC par compte, niveaux, machines virtuelles et règles ACL par VPC, solde en heures de frais de plan requis pour la création, modifications de plan par 24 heures, opérations concurrentes où 0 correspond à un arrêt d'urgence) ainsi que les serveurs DNS. Cliquez sur Save (un motif vous sera demandé).

Ouvrez Services › Private Cloud › Plans & pricing. Pour chaque plan, cliquez sur Edit et définissez le paramètre VND price per month, l'option On sale et l'UUID de l'CloudStack tier offering dont le débit réseau correspond aux Mbps du plan. La ligne indique le coût et le bénéfice en cas d'utilisation maximale, ce qui vous permet d'identifier les plans dont le tarif est inférieur à vos coûts.

Activez Sell Private Cloud. Pour tester le service au préalable, ajoutez des identifiants de comptes de test dans Beta accounts : ces comptes pourront utiliser le service même si le commutateur de vente est désactivé.
Vérification
- Kubernetes : la carte d'état indique
kubernetesserviceenabled: true, une vérification d'endpoint réussie et une version activée. Créez un cluster de test à un seul worker en tant que client ; il doit atteindre l'état d'exécution etkubectl get nodesdoit indiquer qu'il est prêt. Supprimez-le ensuite : le réseau et l'IP retournent dans le pool. - Private Cloud : créez un VPC avec le plus petit plan en tant que client de test. Le VPC s'affiche comme actif, un niveau obtient son sous-réseau, une machine virtuelle du niveau accède à Internet via le routeur VPC, et l'option Change plan vers un plan supérieur prend effet en environ 20 secondes sans interruption des connexions.
Limites et remarques
- Kubernetes : les workers sont facturés comme des machines virtuelles aux prix des plans et comptent comme des machines virtuelles dans les limites de VM. Un cluster peut comporter au maximum 9 workers en raison de la limite CKS de 10 nœuds.
- Kubernetes : le plan de contrôle, le routeur et l'adresse IP publique d'un cluster sont gratuits pour le client ; vous en assumez les coûts.
- Private Cloud : tous les plans sont non mesurés. Les prix du formulaire sont en dongs vietnamiens par mois ; la colonne des coûts utilise un prix de référence qui n'est pas le vôtre, veillez donc à utiliser vos propres chiffres.
- Un VPC verrouillé est limité à 1 Mbps, n'est pas facturé et n'est pas supprimé automatiquement.
- Private Cloud utilise un routeur par VPC et non une paire redondante. En cas de défaillance de son hôte, CloudStack le reconstruit en quelques minutes.
Dépannage
| Symptôme | Cause | Solution |
|---|---|---|
cp_offering_invalid / "Cette offre n'est pas 2 vCPU / 2048 Mo / limitcpuuse" | L'offre du plan de contrôle a d'autres tailles ou aucune limite de CPU | Créez l'offre comme à l'étape 3 et sélectionnez-la à nouveau. |
| Le commutateur Enable CKS est désactivé | Aucune offre de plan de contrôle choisie | Sélectionnez-en une d'abord. |
kubernetesserviceenabled: false | CKS est désactivé dans CloudStack | Activez-le et redémarrez le serveur de gestion. |
| La vérification du point de terminaison échoue | endpoint.url n'est pas joignable depuis les machines virtuelles du cluster | Définissez une URL joignable, redémarrez le serveur de gestion et cliquez sur Recheck. |
| "Fin de vie (EOL) : impossible d'activer la vente" | La date de fin de vie (EOL) de la version est dépassée | Enregistrez une version plus récente. |
| "Aucune version : cliquez sur Sync from CloudStack" | Aucune version de Kubernetes enregistrée | Enregistrez une version et synchronisez. |
| "Le backend CKS est désactivé : les clients ne peuvent pas créer de clusters même si l'indicateur de vente est activé" | L'interrupteur de vente est activé mais le backend CKS est désactivé | Activez CKS sur l'onglet CloudStack. |
| "Au moins 1 plan doit être en vente" | Dernier plan worker supprimé | Conservez au moins un plan ou désactivez la vente de Kubernetes. |
| Cluster bloqué en cours de création | Capacité insuffisante ou ISO manquante | Vérifiez les onglets de capacité et l'état ISO de la version. |
| Un nouveau VPC échoue à la première étape | L'ID de l'offre VPC ou de l'offre de niveau n'est pas valide | Remplacez chaque UUID d'offre par un provenant de votre CloudStack. |
| "cs_offering_id doit être un UUID" | Un ID d'offre n'est pas un UUID | Collez l'ID de cmk list networkofferings. |
| Le changement de plan a échoué | La nouvelle offre de niveau n'existe pas ou le débit réseau est incorrect | Vérifiez l'UUID de l'offre et son débit réseau. |