Créer un cluster
Profiter des avantages d'un orchestrateur de container demande au préalable l'accès à un cluster dans lequel il est possible de déployer ces applicatifs. Dans l'approche NumSpot, les Nodes d'un cluster sont uniquement regroupés dans des Nodepools.
Un nom déjà utilisé par un cluster ne peut être réutilisé si le cluster en question est toujours actif.
Cette action peut être lancée seulement si le cluster en question n'a pas d'opération en cours.
Pour rappel, toute opération constitue une demande qui a un impacte technique sur le cluster.
Voici la liste des opérations:
- Ajouter des workers
- Supprimer un worker
- Mettre à niveau le plan de contrôle
- Mettre à niveau les workers
- Mettre à jour les paquets des nœuds du cluster
- Créer un cluster
- Supprimer un cluster
- Console
- API
Prérequis
- Un compte NumSpot
- Un espace NumSpot auquel le compte est associé
- Un compte avec le rôle
Kubernetes Admin
sur l'espace - Un jeton de connexion associé au compte NumSpot utilisé
Ce qu'il faut savoir avant de créer un cluster
Choix de la version
La liste des versions disponibles peut être consultée depuis une API qui liste toutes les versions disponibles.
La plage d'IP adressable (CIDR)
Le CIDR est utilisé pour définir toutes les adresses IP privées des Nodes du cluster. Le masque de réseau doit être /16.
Le CIDR demandé doit respecter le format 10.X.0.1/16
avec seulement le deuxième octet configurable entre 0 et 255.
La limitation du nombre de Nodes et de 250 dans un cluster.
Nomenclature du nom de cluster
L'utilisateur a la possibilité de définir un nom au cluster pour le reconnaître plus facilement. Le choix du nom n'a aucun impact technique sur le cluster, il est uniquement utile à l'utilisateur.
Le nom doit respecter ces critères:
- Être unique au sein de l'espace NumSpot auquel il appartient parmi les clusters Kubernetes
- Se composer uniquement des caractères alphanumériques (
a-zA-Z0-9
et-
) - Contenir entre 3 et 64 caractères
Les noms de cluster sont propres à chaque service managé, donc avoir deux clusters avec le même nom est possible si le premier est un cluster Kubernetes et le second un cluster Openshift.
Création d'un cluster
Les données qu'il faut avoir
SPACE_ID
est l'identifiant de l'espace NumSpot dans lequel il est souhaité de créer le clusterREGION
est la région dans laquelle l'espace NumSpot est associé, un espace est disponible qu'à partir d'une seule régionACCESS_TOKEN
est le jeton (token) généré via la connexion (consulter la génération d'un token d'accès)
Requête de création d'un cluster
export REGION="myregion"
export SPACE_ID="myspaceid"
export ACCESS_TOKEN="myaccesstoken"
curl -X POST https://api.$REGION.numspot.com/kubernetes/spaces/$SPACE_ID/clusters \
--header "Authorization: Bearer $ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"name": "myCluster",
"cidr": "10.1.0.0/16",
"version": "4.15",
"nodeProfile": "small",
"nodeCount": 2
}'
Pour créer un cluster, il n'est pas autorisé d'initialiser un profil de nœud composé d'un GPU.
Si l'opération lancée est validée et acceptée, un objet Operation
est retourné par l'API avec un code de statut 202 Accepted
:
{
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"operationType": "CreateCluster",
"status": "PENDING",
"progress": "During step",
"target": "https://..../kubernetes/spaces/{spaceId}/clusters/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"selfLink": "https://..../kubernetes/spaces/{spaceId}/operations/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"targetName": "myCluster",
"clusterid": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
...
}
Dès que la demande de création d'un cluster est acceptée, et que le cluster en cours de création, ile devient visible dans la liste des clusters de l'espace.
Si la requête n'est pas acceptée, une erreur au format JSON avec des détails sera renvoyée.
{
"type": "https://docs.numspot.com/docs/domains/cloud/errors#invalid_param",
"title": "Invalid CIDR",
"detail": "The 'cidr' is not a valid one, mask MUST BE '16'",
"instance": "https://..../spaces/{spaceId}/clusters/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"mask": 12
}