Aller au contenu principal
Sommaire de la formation

Séparation logique pour organiser et isoler les ressources dans le cluster : Namespaces et ResourceQuota

coolibra296 vues

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

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.