Séparation logique pour organiser et isoler les ressources dans le cluster : Namespaces et ResourceQuota
Gestion des Espaces : Namespaces
- Namespace : séparation logique pour organiser et isoler les ressources dans le cluster.
- Namespace avec labels
- Namespace avec annotations
- Ajout de ResourceQuota
Un namespace dans Kubernetes est une manière de diviser logiquement un cluster en plusieurs espaces isolés. Cela permet de gérer, organiser et isoler les ressources (comme les Pods, Services, ConfigMaps, etc.) pour différents projets, équipes ou environnements (par exemple, développement, test et production) dans un même cluster. Les objets pris en compte sont de type << namespaced >>
Pourquoi utiliser des Namespaces ?
Les namespaces sont particulièrement utiles pour :
- Isoler les ressources : Limiter l'impact des ressources d'une équipe ou d'un environnement sur les autres.
- Gérer les autorisations : Assigner des rôles spécifiques pour le contrôle d'accès (RBAC) à certains utilisateurs ou équipes dans chaque namespace.
- Appliquer des quotas : Limiter les ressources (CPU, mémoire, nombre de Pods, etc.) pour éviter qu'un namespace ne consomme tout le cluster.
- Organiser le cluster : Faciliter la gestion et l'organisation des ressources dans des projets différents dans un même cluster.
Exemple de namespace : test-ns
apiVersion: v1
kind: Namespace
metadata:
name: test-ns
---
apiVersion: v1
kind: Pod
metadata:
namespace: test-ns
annotations:
prometheus.io/scrape: true
prometheus.io/port: 8080
team: ops
labels:
app: monitoring
name: monitoring-pod
spec:
containers:
- image: prometheus/node-exporter:latest
name: monitoring-pod
Annotation sur un Namespace :
De la même manière, vous pouvez ajouter des Annotations (Annotations) à un Namespace pour fournir des informations supplémentaires. Voici comment ajouter une Annotation à un Namespace :
apiVersion: v1
kind: Namespace
metadata:
name: front
labels:
environment: production
annotations:
description: "Cet espace de noms est utilisé pour l'environnement de production."
---
apiVersion: v1
kind: Pod
metadata:
namespace: front
name: nginx-pod
labels:
app: web
env: production
spec:
containers:
- name: nginx-container
image: nginx:latest
Dans cet exemple, nous avons ajouté une Annotation "description" avec la valeur "Cet espace de noms est utilisé pour l'environnement de production" au Namespace "front". Les Annotations peuvent être utilisées pour fournir des détails supplémentaires sur un Namespace.
Ces exemples montrent comment définir un Namespace, ajouter des Labels pour le catégoriser et ajouter des Annotations pour fournir des informations supplémentaires. Vous pouvez personnaliser davantage ces éléments en fonction de vos besoins spécifiques.
Namespace avec ResourceQuota:
Namespace avec une limite de 2 Pods à l'aide d'un ResourceQuota.
apiVersion: v1
kind: ResourceQuota
metadata:
name: pod-quota
namespace: dev-ns
spec:
hard:
pods: "2"
---
apiVersion: v1
kind: Namespace
metadata:
name: dev-ns
labels:
environment: production
annotations:
description: "Cet espace de noms est utilisé pour l'environnement de production."
---
apiVersion: v1
kind: Pod
metadata:
namespace: dev-ns
name: nginx-pod
labels:
app: web
env: production
spec:
containers:
- name: nginx-container
image: nginx:latest
---
apiVersion: v1
kind: Pod
metadata:
namespace: dev-ns
name: web-pod
labels:
app: web
env: production
spec:
containers:
- name: nginx-container
image: caddy:latest
Commentaires
Aucun commentaire pour le moment.