Pods statiques à Kuberentes

Les Static Pods sont gérés directement par le kubelet et le serveur API n’a aucun contrôle sur ces pods. Le kubelet est chargé de surveiller chaque static Pod et de le redémarrer s’il se plante.Les Pods statiques fonctionnant sur un nœud sont visibles sur le serveur API mais ne peuvent pas être contrôlés par le serveur API. Le Pod statique n’a pas de contrôleur de réplication associé, le service kubelet lui-même le surveille et le redémarre s’il se plante. Il n’y a pas de contrôle de santé pour les pods statiques. Le processus kubelet surveille le répertoire spécifique désigné pour les pods statiques.

Pour en savoir plus sur les Static Pods, visite la page officielle de Kubernetes ici.

Dans cet article, nous verrons les étapes pour créer un Static Pod à partir du fichier enregistré à l’emplacement par défaut où kubelet lit les manifestes et nous changerons également l’emplacement par défaut pour un autre répertoire et verrons comment obtenir un pod statique créé à partir de là. Nous allons créer des pods statiques sur le nœud Worker.

Pré-requis

  1. Cluster Kubernetes avec au moins 1 nœud de travail.
    Si tu veux apprendre à créer un cluster Kubernetes, cliqueici. Ce guide t’aidera à créer un cluster Kubernetes avec 1 Maître et 2 Nœuds sur des Instances EC2 AWS Ubuntu 18.04.

Que ferons-nous ?

  1. Créer des pods statiques

Créer des pods statiques

Exécute les commandes suivantes depuis le nœud maître pour obtenir les détails des nœuds et des pods du cluster.

$master kubectl  get nodes
$master kubectl  get pods

get-all-pods

Tu peux vérifier les conteneurs qui fonctionnent dans le cadre des pods.

$worker docker ps
$worker docker ps -a

containers-on-worker-node

Maintenant, connecte-toi au nœud ouvrier et crée un nouveau fichier avec le contenu suivant dans le chemin par défaut des manifestes de pods statiques.

$worker vim /etc/kubernetes/manifests/static-web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

static-pod-definition-at-default-location

Dès que tu crées une définition de pod à l’emplacement par défaut du manifeste des pods statiques, le pod est créé et n’est pas contrôlé par le serveur API.

Tu peux vérifier le pod nouvellement créé avec la commande suivante depuis le nœud maître.

$master kubectl  get pods
$master kubectl  get pods --all-namespaces

statique-pod-créé

Pour vérifier les conteneurs créés dans le cadre du pod, exécute la commande suivante sur le nœud ouvrier.

$worker docker ps
$worker docker ps -a

containers-on-worker-node

Nous pouvons également modifier l’emplacement par défaut à partir duquel kubelet lit les manifestes.

Crée maintenant un nouveau dossier dans lequel nous souhaitons stocker les manifestes des Pods statiques.

Ici, nous créons « /etc/kubelet.d/ ».

$worker mkdir -p /etc/kubelet.d/

Crée un fichier de définition de pod dans le répertoire que nous avons créé.

$worker vim /etc/kubelet.d/static-web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: static-web-2
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

Pour modifier le chemin par défaut à partir duquel Kubelets lit les manifestes des Static Pods, édite le fichier /var/lib/kubelet/config.yaml et change la valeur de « staticPodPath » en « staticPodPath=/etc/kubelet.d ».

change-static-pod-path

Une fois la configuration en place, redémarre le service Kubelet

$worker systemctl restart kubelet

Dès que le service est redémarré, Kubelet détecte le nouvel emplacement, lit les manifestes de cet emplacement et crée les pods.

Vérifie si le pod a été créé ou non.

$master kubectl  get pods

statique-pod

Vérifie le conteneur créé dans le cadre du pod sur le nœud ouvrier à l’aide de la commande suivante.

$worker docker ps

containers-on-worker-node

Conclusion

Dans cet article, nous avons vu les étapes pour créer des pods statiques et nous avons également vu le changement de configuration nécessaire dans Kubelet pour modifier le répertoire par défaut pour les manifestes des pods statiques.

Vous aimerez aussi...