Qu’est-ce qu’un espace de noms Kubernetes ?
Les espaces de noms sont un moyen d’organiser les clusters en sous-clusters virtuels. Ils s’avèrent utiles lorsqu’un cluster Kubernetes est partagé entre différentes équipes ou affecté à plusieurs projets. Un cluster prend en charge les espaces de noms, quel que soit leur nombre, chacun étant logiquement séparé des autres, mais avec la possibilité de communiquer entre eux. Il est impossible d’imbriquer les espaces de noms les uns dans les autres.
Toutes les ressources au sein de l’environnement Kubernetes résident dans l’espace de noms par défaut ou dans un espace de noms créé par l’opérateur de cluster. Seuls les nœuds et les volumes de stockage persistants se trouvent en dehors de l’espace de noms ; ces ressources de base sont toujours visibles pour chaque espace de noms du cluster.

État de Kubernetes

Mise en œuvre de Kubernetes
Qu’est-ce qu’un espace de noms par défaut dans Kubernetes ?
Kubernetes est fourni avec trois espaces de noms prêts à l’emploi. Il s’agit de :
- default : comme son nom l’indique, il s’agit de l’espace de noms référencé par défaut pour chaque commande Kubernetes, et dans lequel réside chaque ressource Kubernetes par défaut. Tant que de nouveaux espaces de noms ne sont pas créés, le cluster réside tout entier dans « default ».
- kube-system : utilisé pour les composants Kubernetes, il est recommandé d’éviter son utilisation.
- kube-public : utilisé pour les ressources publiques. Non recommandé pour une utilisation par les utilisateurs.
Pourquoi utiliser des espaces de noms Kubernetes ?
Les cas d’usage des espaces de noms Kubernetes sont nombreux :
- Permettre aux équipes ou aux projets d’utiliser leurs propres clusters virtuels sans craindre d’affecter le travail des autres.
- Améliorer les contrôles d’accès basés sur les rôles (RBAC) en limitant les utilisateurs et les processus à certains espaces de noms.
- Répartir les ressources d’un cluster entre plusieurs équipes et utilisateurs sur la base de quotas de ressources.
- Fournir une méthode simple pour séparer le développement, les tests et le déploiement des applications conteneurisées, tout en permettant de gérer l’ensemble du cycle de vie sur le même cluster.
Quand est-il nécessaire d’utiliser plusieurs espaces de noms Kubernetes ?
Les petites équipes ou les petites entreprises peuvent parfaitement se contenter d’utiliser l’espace de noms par défaut. Il est suffisant en effet s’il n’est pas nécessaire d’isoler les développeurs ou les utilisateurs les uns des autres. L’utilisation de plusieurs espaces de noms présente cependant de nombreux avantages :
- Isolation. Les grosses équipes ou les équipes qui s’agrandissent peuvent utiliser des espaces de noms pour isoler leurs projets et microservices les uns des autres. Elles peuvent réutiliser sans problème les mêmes noms de ressources dans différents espaces de travail. De plus, l’exécution d’une action sur les éléments d’un espace de travail n’affecte jamais les autres espaces de travail.
- Organisation. Les entreprises qui disposent d’un cluster unique pour le développement, les tests et la production peuvent utiliser des espaces de noms pour créer un sandbox des environnements de développement et de test. Cette possibilité garantit que le code de production n’est pas affecté par les modifications apportées par les développeurs ou les testeurs dans leurs propres espaces de noms tout au long du cycle de vie des applications.
- Autorisations. Les espaces de noms prennent en charge le contrôle d’accès basé sur les rôles de Kubernetes, ce qui permet aux équipes de définir des rôles qui regroupent des listes d’autorisations ou de capacités sous un nom unique. Ainsi, seuls les utilisateurs autorisés peuvent accéder aux ressources d’un espace de noms donné.
- Contrôle des ressources. Il est possible de définir des règles de limites de ressources sur les espaces de noms en définissant des quotas pour l’utilisation du CPU ou de la mémoire. Cela garantit que chaque projet ou espace de noms dispose des ressources nécessaires à son exécution et qu’aucun espace de noms ne peut accéder à l’ensemble des ressources disponibles.
- Performances. L’utilisation d’espaces de noms permet d’améliorer les performances d’un cluster. Ainsi, avec un cluster divisé en plusieurs espaces de noms pour une utilisation dans le cadre de différents projets, l’API Kubernetes a moins d’éléments à rechercher lors de l’exécution des opérations. Résultat : une latence réduite et l’accélération des performances globales de chaque application exécutée sur le cluster.
Comment les pods peuvent-ils communiquer d’un espace de noms Kubernetes à l’autre ?
Même si les espaces de noms sont séparés les uns des autres, ils peuvent facilement communiquer entre eux. Le répertoire des services DNS de Kubernetes peut facilement localiser n’importe quel service par son nom en utilisant un adressage DNS étendu :
..svc.cluster.local
Il suffit d’ajouter le nom de l’espace de noms au nom de service pour accéder aux services dans n’importe quel espace de noms du cluster. Par exemple, pour accéder au service de paie dans l’espace de noms de développement, vous devez utiliser l’adresse
payroll.development
Pour accéder au service de paie dans l’espace de noms de production, vous devez utiliser :
payroll.production
À noter que les politiques de réseau peuvent éventuellement être utilisées pour contrôler l’accès entre les espaces de noms. Par exemple, une règle de réseau peut autoriser ou rejeter tout le trafic provenant d’autres espaces de noms. Les politiques de réseau s’appliquent uniquement aux connexions et ne remplacent pas les pare-feu qui inspectent les paquets.
Quelles sont les commandes kubectl de base relatives aux espaces de noms ?
Quelle est la commande permettant de détecter les espaces de noms Kubernetes en cours ?
Tous les espaces de noms du cluster peuvent être affichés à l’aide de la commande suivante :
kubectl get namespace
Elle renvoie la liste de tous les espaces de noms du cluster, y compris les espaces de noms par défaut, ainsi que leur statut et leur ancienneté.
Quelle est la commande permettant de créer un nouvel espace de noms Kubernetes ?
Pour créer un espace de noms, il suffit d’exécuter la commande suivante :
kubectl create namespace
Comme pour toute autre ressource Kubernetes, un fichier YAML peut également être créé et appliqué pour créer un espace de noms. La syntaxe est la suivante :
newspace.yaml:
kind: Namespace
apiVersion: v1
metadata:
name: newspace
labels:
name: newspacekubectl apply -f newspace.yaml
Comment basculer d’un espace de noms Kubernetes à l’autre ?
Pour adresser les espaces de noms une fois qu’ils sont créés, l’option –namespace= doit être incluse dans la commande. Comme la répétition de chaque action peut devenir fastidieuse, l’espace de noms par défaut peut être modifié via la commande kubectl config pour définir l’espace de noms dans le contexte du cluster.
Par exemple, pour remplacer l’espace de noms par défaut par un espace nommé « testing », saisissez la commande :
kubectl config set-context --current --namespace=testing
Résultat : l’espace est défini sur « testing » pour toutes les futures commandes kubectl.
Comment renommer un espace de noms Kubernetes ?
Renommer un espace de noms Kubernetes n’étant pas une pratique courante, il est recommandé de choisir avec attention les espaces de noms concernés.
Comment supprimer un espace de noms Kubernetes ?
La commande suivante permet de supprimer des espaces de noms :
kubectl delete namespaces
Les opérations de suppression étant asynchrones, un espace de noms s’affiche comme étant en cours de suppression jusqu’à sa suppression effective.
Mise en garde concernant la suppression d’espaces de noms Kubernetes
La suppression d’un espace de noms est définitive. Par conséquent, tous les éléments qui se trouvent dans l’espace de noms supprimé, y compris les services, les pods en cours d’exécution et les objets, sont également supprimés. Le nettoyage de la mémoire concerne tous les éléments ayant existé dans l’espace de noms concerné. Veillez à ce que tous les éléments de l’espace de noms aient été supprimés avant d’effectuer cette action.
Solutions et produits connexes
Laboratoires : Modernisation des applications
Migrez vos applications dans le Cloud en quelques semaines seulement.
Tanzu Kubernetes for Operations
La base d’une infrastructure de conteneurs multicloud moderne.
Tanzu Application Platform
Une expérience de développeur multicloud optimale sur Kubernetes.