Formation-K8S

Formation K8S avec exercices et labs

View project on GitHub

Namespace

Role

On peut voir les namespaces comme un moyen de classer et compartimenter au sein d’un K8S. On va souvent créer un namespace par produit installé. On peut également appliquer des règles de sécurités au sein d’un namespace et ainsi permettre une isolation entre plusieurs projets.

schema

Toutes les resources Kubernetes n’appartiennent pas à des namespaces. Certaines sont liées au Cluster.

Il existe des namespaces spécifiques :

  • default (celui où vous vos objects kubernetes iront si vous ne spécifiez pas de namespace et si vous ne l’avez pas changé via votre contexte)
  • kube-system (celui utilisé pour les composants system)
  • kube-public (ns visible par tous)

    On ne peut pas déplacer un objet kubernetes d’un namespace vers un autre namespace.

Structure

 apiVersion: v1
 kind: Namespace
 metadata:
     name: monnamespace

Commandes utiles

Création d’un namespace

kubectl create ns <mon_namespace>

Voir le yaml décrivant votre namespace

kubectl get ns <mon_namespace> -o yaml

Lister les namespaces

kubectl get ns

Supprimer un namespace

kubectl delete ns <mon_namespace>

Namespace bloqué en mode Terminating

Il arrive que lors d’une suppression de namespace celui-ci reste bloqué en mode Terminating cela peut être dû à plusieurs causes.

  • une api de service est cassée (comme toutes les api de service vont être sollicitées lors de la destruction, si une dysfonctionne cela bloque la destruction)
    => vérifier l’état de vos api kubectl get apiservice
  • un pod reste bloqué en destruction => kubectl delete pod NOMDUPOD -n NAMESPACE --force
  • une resource custom est présente et n’est pas détruite => trouver la racine du problème et la supprimer
  • Seulement en dernier recours supprimer le finalizer du namespace

Exercice:

  • Essayer de créer un namespace “TEST-NOM-PRENOM” pourquoi K8S ne l’accepte t il pas ?
  • Création d’un namespace “test-nom-prenom”
  • Création d’un deuxième namespace “nom-prenom”
  • Affichage du yaml de votre namespace
  • Lister les namespaces
  • Modifier votre contexte (cf KubeConfig) pour prendre comme namespace par défaut votre namespace “nom-prenom”

Retour, Menu, Suite