Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Manage namespaces and quotas

Dernière mise à jour :Sep 21, 2026

Les namespaces partitionnent un cluster Container Service for Kubernetes (ACK) partagé en espaces de travail isolés, permettant de définir des quotas de ressources, de gérer les autorisations et de suivre les coûts par équipe ou par environnement.

Namespaces

Dans un cluster ACK, les namespaces divisent les ressources du cluster en groupes isolés. Lorsque plusieurs équipes partagent un même cluster, créez des namespaces pour classer les ressources par équipe ou par environnement, puis utilisez les quotas de ressources afin de limiter la consommation de chaque namespace.

Par défaut, les pods en cours d'exécution peuvent consommer une quantité illimitée de ressources CPU et mémoire sur les nœuds. Les pods d'un seul namespace risquent ainsi d'épuiser l'ensemble des ressources du cluster. Configurez des quotas de ressources par namespace — notamment pour le CPU, la mémoire et le nombre de pods — pour éviter cette situation.

Exemples d'allocation : dans un cluster disposant de 32 GiB de RAM et de 16 cœurs CPU, allouez 20 GiB et 10 cœurs à l'équipe A, 10 GiB et 4 cœurs à l'équipe B, et conservez 2 GiB et 2 cœurs en réserve. Vous pouvez également attribuer 1 cœur et 1 GiB de RAM au namespace testing et laisser le namespace production utiliser le reste des ressources disponibles.

Créer un namespace

Utiliser la console ACK

  1. Connectez-vous à la ACK console. Dans le volet de navigation de gauche, cliquez sur ClustersClusters.

  2. Sur la page ClustersClusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Namespaces and QuotasNamespaces and Quotas.

  3. Cliquez sur CreateCreate. Dans la boîte de dialogue qui s'affiche, configurez le nom et le libellé du namespace, puis cliquez sur OKOK.

Utiliser kubectl

  1. Créez un namespace.

    kubectl create namespace test
  2. Vérifiez que le namespace a bien été créé.

    kubectl get namespaces

    Résultat attendu :

    NAME              STATUS   AGE
    default           Active   46h
    kube-node-lease   Active   46h
    kube-public       Active   46h
    kube-system       Active   46h
    test              Active   9s

    Le namespace test apparaît désormais avec le statut actif dans la liste.

Configurer les quotas et les limites de ressources

Remarque

Après avoir configuré les quotas de CPU et de mémoire (ResourceQuota) pour un namespace, les pods créés dans ce namespace doivent spécifier des limites de CPU et de mémoire, sauf si des limites de ressources par défaut (LimitRange) sont définies pour le namespace.

Utiliser la console ACK

  1. Sur la page NamespaceNamespace, cliquez sur Resource Quotas and LimitsResource Quotas and Limits dans la colonne ActionsActions correspondant au namespace cible.

  2. Dans la boîte de dialogue Resource Quotas and LimitsResource Quotas and Limits, configurez les quotas de ressources et les limites de ressources par défaut. Pour plus d'informations, consultez les pages Resource Quotas et Configure Default Memory Requests and Limits for a Namespace.

Bonnes pratiques pour la modification des quotas

Important

Modifiez les quotas pendant les heures creuses. Vérifiez l'utilisation des ressources des charges de travail existantes avant d'effectuer toute modification.

  • Réservez suffisamment de ressources pour permettre la mise à l'échelle automatique via Horizontal Pod Autoscaler (HPA).

  • Surveillez le cluster pendant au moins 30 minutes après l'ajustement des quotas afin de vous assurer que le HPA fonctionne comme prévu.

Supprimer un namespace

Avertissement

Les namespaces intégrés (default, kube-system, kube-public, kube-node-lease) ne peuvent pas être supprimés. Supprimez toutes les ressources présentes dans le namespace avant de le supprimer. Si le namespace reste longtemps dans l'état Terminating, consultez la rubrique Que faire si le namespace reste bloqué dans l'état Terminating ?.

Utiliser la console ACK

  1. Sur la page NamespaceNamespace, repérez le namespace cible et cliquez sur imageimage > DeleteDelete dans la colonne ActionsActions. Pour désactiver préalablement la protection contre la suppression, cliquez sur imageimage > Disable Deletion ProtectionDisable Deletion Protection dans la colonne ActionsActions.

  2. Dans la boîte de dialogue ConfirmConfirm, vérifiez les ressources associées au namespace, puis cliquez sur ConfirmConfirm.

Utiliser kubectl

kubectl delete namespace test

FAQ

Que faire si le namespace reste bloqué dans l'état Terminating ?

Lorsqu'un namespace contenant encore des ressources est supprimé, l'opération de suppression reste longtemps dans l'état Terminating. Pour résoudre ce problème, videz le tableau finalizers dans la spécification du namespace ; Kubernetes supprimera alors automatiquement le namespace. Notez que cette opération peut laisser des ressources orphelines dans le cluster ; nettoyez donc les charges de travail du namespace avant de procéder.

Suivez les étapes ci-dessous pour forcer la suppression d'un namespace. Cet exemple utilise le namespace istio-system :

  1. Ouvrez un terminal et démarrez un proxy inverse pour le cluster.

    kubectl proxy

    Résultat attendu :

    Starting to serve on 127.0.0.1:8001
  2. Ouvrez un second terminal. Exportez un jeton et vérifiez la connectivité avec le serveur API.

    export TOKEN=$(kubectl describe secret $(kubectl get secrets | grep default | cut -f1 -d ' ') | grep -E '^token' | cut -f2 -d':' | tr -d '\t')
    curl http://localhost:8001/api/v1/namespaces --header "Authorization: Bearer $TOKEN" --insecure
  3. Exportez la configuration du namespace dans un fichier JSON.

    kubectl get namespace istio-system -o json > istio-system.json
  4. Ouvrez le fichier istio-system.json et videz le tableau finalizers dans la section spec.

    "spec": {
        "finalizers": []
    }
  5. Appliquez la configuration mise à jour pour supprimer les finalizers.

    curl -X PUT --data-binary @istio-system.json http://localhost:8001/api/v1/namespaces/istio-system/finalize -H "Content-Type: application/json" --header "Authorization: Bearer $TOKEN" --insecure

Documentation connexe