---
title: "Créer un cluster"
description: "Découvrez comment créer un cluster Kubernetes managé par OVHcloud via l'espace client, l'API, la CLI, Terraform, Pulumi ou CDK pour Terraform"
url: https://docs.ovhcloud.com/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/create-cluster
lang: fr
lastUpdated: 2026-06-03
---
# Créer un cluster

## Objectif

Le service OVHcloud Managed Kubernetes vous permet de déployer des clusters prêts pour la production sans vous soucier de leur installation ou de leur maintenance. Créez un cluster via l'espace client OVHcloud, l'API, la CLI, ou automatisez le processus grâce à des outils d'Infrastructure as Code comme Terraform, Pulumi ou CDK pour Terraform.

## Prérequis

- Un [projet Public Cloud](/fr/guides/public-cloud/cross-functional/create-a-public-cloud-project.md) dans votre compte OVHcloud

:::tip
Bénéficiez de tarifs réduits en vous engageant sur une durée de 1 à 36 mois sur vos ressources Public Cloud. Plus d'informations sur notre page [Savings Plans](https://www.ovhcloud.com/fr/public-cloud/savings-plan/).

:::


***

### Accès à l'espace client OVHcloud

- **Lien direct :** <ManagerLink to="/#/pci/projects">Projets Public Cloud</ManagerLink>
- **Chemin de navigation :** <code className="action">Public Cloud</code> > Sélectionnez votre projet

***


:::info
L'API OVHcloud, la CLI, Terraform, CDK pour Terraform et Pulumi nécessitent des identifiants API OVHcloud (`application_key`, `application_secret`, `consumer_key`). Suivez le guide [Premiers pas avec les API OVHcloud](/fr/guides/manage-and-operate/api/first-steps.md) pour les générer.

:::

## En pratique


**Via l'espace client OVHcloud**

Cliquez sur <code className="action">Managed Kubernetes Service</code> dans le menu de gauche, puis sur <code className="action">Créer un cluster</code>.
![Créer un cluster](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/creating-a-cluster1.png)Sélectionnez une localisation pour votre nouveau cluster.
![Sélectionner une localisation](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/creating-a-cluster2.png)Choisissez la version mineure de Kubernetes.
![Choisir la version mineure de Kubernetes](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/creating-a-cluster3.png):::info
Nous recommandons d'utiliser toujours la dernière version stable. Consultez notre page [Fin de vie / fin de support](/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/eos-eol-policies.md) pour comprendre notre politique de versions.
:::
Vous pouvez intégrer votre cluster Kubernetes à un réseau privé via le vRack OVHcloud. Pour plus d'informations, consultez notre guide [Utiliser le vRack](/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/using-vrack.md).
![Choisir un réseau privé pour ce cluster](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/creating-a-cluster4.png)Configurez le node pool par défaut. Un node pool est un groupe de nœuds partageant la même configuration. Consultez le guide [Gérer les node pools](/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/managing-nodes.md) pour plus d'informations.
![Node pool](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/creating-a-cluster5.png)Définissez la taille du node pool par défaut.
![Node pool par défaut](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/creating-a-cluster6.png)Activez optionnellement l'<code className="action">Autoscaling</code> et définissez la taille minimale et maximale du pool.
![Autoscaling](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/creating-a-cluster7.png)Choisissez le mode de facturation (mensuel ou horaire) et activez optionnellement le mode anti-affinité.
![Choisir le mode de facturation](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/creating-a-cluster8.png):::info
L'anti-affinité répartit les nœuds sur différents hyperviseurs pour une meilleure tolérance aux pannes. Les node pools en anti-affinité sont limités à 5 nœuds. La facturation mensuelle ne peut pas être convertie en facturation horaire par la suite.
:::
Saisissez un nom pour votre cluster et cliquez sur <code className="action">Envoyer</code>.
![Saisir un nom pour votre cluster](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/creating-a-cluster9.png)Le cluster sera disponible dans quelques minutes.
:::warning
Une fois un cluster créé, la région et l'identifiant du réseau privé ne peuvent plus être modifiés.
:::


**Via l'API OVHcloud**

Connectez-vous à l'[explorateur d'API OVHcloud](https://api.ovh.com/console/).
**Créer le cluster :**
Appelez l'endpoint suivant avec ce corps :

🇪🇺EU▾

[POST/cloud/project/{serviceName}/kube](https://eu.api.ovh.com/console/?section=/cloud&branch=v1#post-/cloud/project/-serviceName-/kube)

```json
{
  "name": "my-cluster",
  "region": "GRA7",
  "version": "1.34"
}
```
:::info
Nous recommandons d'utiliser toujours la dernière version stable. Consultez notre page [Fin de vie / fin de support](/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/eos-eol-policies.md) pour comprendre notre politique de versions.
:::
Notez l'`id` retourné dans la réponse — il sera nécessaire pour créer le node pool.
**Créer un node pool :**
Appelez l'endpoint suivant avec ce corps :

🇪🇺EU▾

[POST/cloud/project/{serviceName}/kube/{kubeId}/nodepool](https://eu.api.ovh.com/console/?section=/cloud&branch=v1#post-/cloud/project/-serviceName-/kube/-kubeId-/nodepool)

```json
{
  "name": "my-pool",
  "flavorName": "b2-7",
  "desiredNodes": 3,
  "minNodes": 3,
  "maxNodes": 3
}
```
:::warning
Les noms de node pool n'acceptent que les caractères minuscules, les chiffres et le tiret `-`. Les underscores et les points ne sont pas supportés.
:::
:::warning
Une fois un cluster créé, la région et l'identifiant du réseau privé ne peuvent plus être modifiés.
:::


**Via la CLI OVHcloud**

:::info
Installez la [CLI OVHcloud](https://github.com/ovh/ovhcloud-cli) et configurez vos identifiants avant de commencer.
:::
**Créer le cluster :**
```bash
ovhcloud cloud kube create \
  --cloud-project <serviceName> \
  --name my-cluster \
  --region GRA7 \
  --version 1.34
```
:::info
Nous recommandons d'utiliser toujours la dernière version stable. Consultez notre page [Fin de vie / fin de support](/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/eos-eol-policies.md) pour comprendre notre politique de versions.
:::
Notez l'`id` dans la sortie — il sera nécessaire pour créer le node pool.
**Créer un node pool :**
```bash
ovhcloud cloud kube nodepool create <kubeId> \
  --cloud-project <serviceName> \
  --name my-pool \
  --flavor-name b2-7 \
  --desired-nodes 3 \
  --min-nodes 3 \
  --max-nodes 3
```
:::warning
Les noms de node pool n'acceptent que les caractères minuscules, les chiffres et le tiret `-`. Les underscores et les points ne sont pas supportés.
:::
:::warning
Une fois un cluster créé, la région et l'identifiant du réseau privé ne peuvent plus être modifiés.
:::


**Via Terraform**

:::info
Installez [Terraform CLI](https://www.terraform.io/docs/cli/index.html) (version 0.12.x minimum) avant de commencer.
:::
OVHcloud fournit un [provider Terraform](https://registry.terraform.io/providers/ovh/ovh/latest) disponible dans le registre officiel Terraform.
L'identifiant de votre projet Public Cloud correspond au `service_name`. Récupérez-le via le bouton <code className="action">Copier dans le presse-papier</code> dans la section Public Cloud.
![Copier le service name](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/get-service-name.png)**provider.tf :**
```bash
terraform {
  required_providers {
    ovh = {
      source = "ovh/ovh"
    }
  }
}

provider "ovh" {
  endpoint           = "ovh-eu"
  application_key    = "<your_access_key>"
  application_secret = "<your_application_secret>"
  consumer_key       = "<your_consumer_key>"
}
```
Utilisez des variables d'environnement pour éviter de stocker des secrets dans votre code source : `OVH_ENDPOINT`, `OVH_APPLICATION_KEY`, `OVH_APPLICATION_SECRET`, `OVH_CONSUMER_KEY`.
**variables.tf :**
```bash
variable service_name {
  type    = string
  default = "<your_service_name>"
}
```
**ovh\_kube\_cluster.tf :**
```bash
resource "ovh_cloud_project_kube" "my_kube_cluster" {
   service_name = "${var.service_name}"
   name         = "my_kube_cluster"
   region       = "GRA7"
   version      = "1.34"
}

resource "ovh_cloud_project_kube_nodepool" "node_pool" {
   service_name  = "${var.service_name}"
   kube_id       = ovh_cloud_project_kube.my_kube_cluster.id
   name          = "my-pool"
   flavor_name   = "b2-7"
   desired_nodes = 3
   max_nodes     = 3
   min_nodes     = 3
}
```
**output.tf :**
```bash
output "kubeconfig" {
  value     = ovh_cloud_project_kube.my_kube_cluster.kubeconfig
  sensitive = true
}
```
:::warning
Les noms de node pool n'acceptent que les caractères minuscules, les chiffres et le tiret `-`. Les underscores et les points génèrent une erreur `gzip: invalid header`.
:::
Déployez :
```bash
terraform init && terraform apply
```


**Via CDK pour Terraform**

:::info
Vous avez besoin de [kubectl](https://kubernetes.io/docs/tasks/tools/), de la [CLI CDK pour Terraform](https://developer.hashicorp.com/terraform/tutorials/cdktf/cdktf-install) et de [Go](https://go.dev/doc/install) installés.
:::
![CDKTF](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/cdktf.png)CDKTF traduit le code Go en HCL Terraform et utilise le provider Terraform OVHcloud. Définissez les identifiants nécessaires sous forme de variables d'environnement :
```bash
export OVH_ENDPOINT="ovh-eu"
export OVH_APPLICATION_KEY="xxx"
export OVH_APPLICATION_SECRET="xxx"
export OVH_CONSUMER_KEY="xxx"
export OVH_CLOUD_PROJECT_SERVICE="xxx"
```
Initialisez le projet :
```bash
mkdir ovhcloud-kube && cd ovhcloud-kube
cdktf init --template=go --providers="ovh/ovh@~>0.37.0" "hashicorp/local" --providers-force-local --local --project-name=ovhcloud-kube
```
Éditez `main.go` :
```go
package main

import (
    "os"
    "path"

    "cdk.tf/go/stack/generated/hashicorp/local/file"
    local "cdk.tf/go/stack/generated/hashicorp/local/provider"
    "cdk.tf/go/stack/generated/ovh/ovh/cloudprojectkube"
    "cdk.tf/go/stack/generated/ovh/ovh/cloudprojectkubenodepool"
    ovh "cdk.tf/go/stack/generated/ovh/ovh/provider"
    "github.com/aws/constructs-go/constructs/v10"
    "github.com/aws/jsii-runtime-go"
    "github.com/hashicorp/terraform-cdk-go/cdktf"
)

func NewMyStack(scope constructs.Construct, id string) cdktf.TerraformStack {
    stack := cdktf.NewTerraformStack(scope, &id)

    ovh.NewOvhProvider(stack, jsii.String("ovh"), &ovh.OvhProviderConfig{
        Endpoint: jsii.String("ovh-eu"),
    })
    local.NewLocalProvider(stack, jsii.String("local"), &local.LocalProviderConfig{})

    serviceName := os.Getenv("OVH_CLOUD_PROJECT_SERVICE")

    kube := cloudprojectkube.NewCloudProjectKube(stack, jsii.String("my_desired_cluster"), &cloudprojectkube.CloudProjectKubeConfig{
        ServiceName: jsii.String(serviceName),
        Name:        jsii.String("my_desired_cluster"),
        Region:      jsii.String("GRA5"),
    })

    cdktf.NewTerraformOutput(stack, jsii.String("cluster_version"), &cdktf.TerraformOutputConfig{
        Value: kube.Version(),
    })

    pwd, _ := os.Getwd()
    file.NewFile(stack, jsii.String("kubeconfig"), &file.FileConfig{
        Filename:       jsii.String(path.Join(pwd, "kubeconfig.yaml")),
        Content:        kube.Kubeconfig(),
        FilePermission: jsii.String("0644"),
    })

    nodePool := cloudprojectkubenodepool.NewCloudProjectKubeNodepool(stack, jsii.String("my-pool"), &cloudprojectkubenodepool.CloudProjectKubeNodepoolConfig{
        ServiceName:  kube.ServiceName(),
        KubeId:       kube.Id(),
        Name:         jsii.String("my-pool"),
        DesiredNodes: jsii.Number(1),
        MaxNodes:     jsii.Number(3),
        MinNodes:     jsii.Number(1),
        FlavorName:   jsii.String("b2-7"),
    })

    cdktf.NewTerraformOutput(stack, jsii.String("nodePoolID"), &cdktf.TerraformOutputConfig{
        Value: nodePool.Id(),
    })

    return stack
}

func main() {
    app := cdktf.NewApp(nil)
    NewMyStack(app, "ovhcloud")
    app.Synth()
}
```
Déployez :
```bash
cdktf deploy
```


**Via Pulumi**

:::info
Vous avez besoin de la [CLI Pulumi](https://www.pulumi.com/docs/install/), d'un [compte Pulumi](https://www.pulumi.com/) avec un [token d'accès](https://app.pulumi.com/account/tokens) et de [kubectl](https://kubernetes.io/docs/tasks/tools/) installés.
:::
![Pulumi](/images/public-cloud/containers-orchestration/managed-kubernetes/creating-a-cluster/pulumi.jpg)Le provider Pulumi OVH supporte Go, Python, Node.js/TypeScript, C# et Java. Consultez les [exemples](https://github.com/ovh/pulumi-ovh/tree/main/examples/kubernetes).
Définissez les identifiants sous forme de variables d'environnement :
```bash
export OVH_ENDPOINT="ovh-eu"
export OVH_APPLICATION_KEY="xxx"
export OVH_APPLICATION_SECRET="xxx"
export OVH_CONSUMER_KEY="xxx"
```
Créez et initialisez le projet :
```bash
mkdir pulumi_ovh_kube && cd pulumi_ovh_kube
pulumi new go -y
go get github.com/ovh/pulumi-ovh/sdk/go/...
```
Éditez `Pulumi.yaml` pour ajouter le service name :
```yaml
config:
 serviceName: <your-service-name>
```
Éditez `main.go` :
```go
package main

import (
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi/config"
    "github.com/ovh/pulumi-ovh/sdk/go/ovh/cloudproject"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        serviceName := config.Require(ctx, "serviceName")

        myKube, err := cloudproject.NewKube(ctx, "my_desired_cluster", &cloudproject.KubeArgs{
            ServiceName: pulumi.String(serviceName),
            Name:        pulumi.String("my_desired_cluster"),
            Region:      pulumi.String("GRA5"),
        })
        if err != nil {
            return err
        }

        ctx.Export("kubeconfig", pulumi.ToSecret(myKube.Kubeconfig))

        nodePool, err := cloudproject.NewKubeNodePool(ctx, "my-desired-pool", &cloudproject.KubeNodePoolArgs{
            ServiceName:  pulumi.String(serviceName),
            KubeId:       myKube.ID(),
            Name:         pulumi.String("my-desired-pool"),
            DesiredNodes: pulumi.Int(1),
            MaxNodes:     pulumi.Int(3),
            MinNodes:     pulumi.Int(1),
            FlavorName:   pulumi.String("b2-7"),
        })
        if err != nil {
            return err
        }

        ctx.Export("nodePoolID", nodePool.ID())
        return nil
    })
}
```
Exécutez `go mod tidy` puis déployez :
```bash
pulumi up
```


## Connexion au cluster


**Via l'espace client OVHcloud**

Sur la page de votre cluster, ouvrez l'onglet <code className="action">Service</code> et téléchargez le fichier de configuration `kubectl` pour vous connecter à votre cluster.


**Via l'API OVHcloud**

Appelez l'endpoint suivant pour récupérer le contenu du kubeconfig et enregistrez-le dans un fichier :

🇪🇺EU▾

[POST/cloud/project/{serviceName}/kube/{kubeId}/kubeconfig](https://eu.api.ovh.com/console/?section=/cloud&branch=v1#post-/cloud/project/-serviceName-/kube/-kubeId-/kubeconfig)

```bash
kubectl --kubeconfig=kubeconfig.yaml get nodes
```


**Via la CLI OVHcloud**

```bash
ovhcloud cloud kube kubeconfig generate <kubeId> \
  --cloud-project <serviceName> > kubeconfig.yaml
kubectl --kubeconfig=kubeconfig.yaml get nodes
```


**Via Terraform**

```bash
terraform output -raw kubeconfig > ~/.kube/my_kube_cluster.yml
kubectl --kubeconfig=~/.kube/my_kube_cluster.yml get nodes
```


**Via CDK pour Terraform**

Le fichier kubeconfig a été enregistré localement sous `kubeconfig.yaml` lors du déploiement :
```bash
kubectl --kubeconfig=kubeconfig.yaml get nodes
```


**Via Pulumi**

```bash
pulumi stack output kubeconfig --show-secrets -s dev > kubeconfig.yaml
kubectl --kubeconfig=kubeconfig.yaml get nodes
```


## Problèmes connus

### « not enough xxx quotas »

Par défaut, les quotas de ressources Public Cloud (RAM, CPU, espace disque, nombre d'instances, etc.) sont limités pour des raisons de sécurité. Si vous manquez de ressources lors de la création d'un node pool, suivez le guide [Augmenter les quotas Public Cloud](/fr/guides/public-cloud/cross-functional/increasing-public-cloud-quota.md) pour les augmenter.


**Via Terraform**

**« gzip: invalid header »**
Cette erreur survient lorsque le nom d'un node pool ou d'un flavor contient `_` ou `.`. Seuls les caractères minuscules, les chiffres et le tiret `-` sont acceptés :
```bash
name        = "my-pool"
flavor_name = "b2-7"
```


**Via Pulumi**

**« Provider is missing a required configuration key »**
Vous avez oublié d'exporter les variables d'environnement OVHcloud requises :
```bash
export OVH_ENDPOINT="ovh-eu"
export OVH_APPLICATION_KEY="xxx"
export OVH_APPLICATION_SECRET="xxx"
export OVH_CONSUMER_KEY="xxx"
```
**« Node pool name xxx is invalid »**
Seuls les caractères minuscules, les chiffres et le tiret `-` sont acceptés dans les noms de node pool. Renommez votre node pool avec une valeur valide :
```go
Name: pulumi.String("my-desired-pool"),
```


## Suppression (nettoyage)


**Via l'espace client OVHcloud**

Dans la section <code className="action">Managed Kubernetes Service</code>, cliquez sur le bouton <code className="action">...</code> en regard de votre cluster et sélectionnez <code className="action">Supprimer</code>.


**Via l'API OVHcloud**

Appelez l'endpoint suivant pour supprimer le cluster et toutes ses ressources associées :

🇪🇺EU▾

[DELETE/cloud/project/{serviceName}/kube/{kubeId}](https://eu.api.ovh.com/console/?section=/cloud&branch=v1#delete-/cloud/project/-serviceName-/kube/-kubeId-)


**Via la CLI OVHcloud**

```bash
ovhcloud cloud kube delete <kubeId> --cloud-project <serviceName>
```


**Via Terraform**

```bash
terraform destroy
```


**Via CDK pour Terraform**

```bash
cdktf destroy
```


**Via Pulumi**

```bash
pulumi destroy
```
Pour supprimer également l'historique du stack Pulumi :
```bash
pulumi stack rm dev
```


## Aller plus loin

Pour avoir une vue d'ensemble du service OVHcloud Managed Kubernetes, rendez-vous sur la [page OVHcloud Managed Kubernetes](https://www.ovhcloud.com/fr/public-cloud/kubernetes/).

Pour déployer votre première application sur votre cluster Kubernetes, nous vous invitons à suivre notre guide de [configuration des paramètres par défaut de `kubectl`](/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/configure-kubectl.md) et de [déploiement d'une application Hello World](/fr/guides/public-cloud/containers-orchestration/managed-kubernetes/deploy-hello-world.md).

- Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en œuvre de nos solutions, contactez votre commercial ou rendez-vous sur la page [Professional Services](https://www.ovhcloud.com/fr/professional-services/) pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l'équipe Professional Services.

- Échangez avec notre [communauté d'utilisateurs](https://community.ovhcloud.com/).
