Skip to content

Kubernetes

Cours en ligne Udacity: Scalable Microservices with Kubernetes

Architecture

Architecture modulable. Permet la création de distributions Kubernetes.

  • CRI: Container Runtime Interface
  • CNI: Container Network Interface
  • CSI: Container Storage Interface

Benefices

  • Réseau de containers spanné sur plusieurs nodes, mais avec abstraction de façon à ne voir qu'une seule machine logique.
  • Note: En mode docker normal, utilisation du docker bridge sur le host + mapping sur eth0 à l'intérieur du container = seuls les containers sur la même machine et sur le même bridge peuvent se voir.

Resources

Deployment

Notions

Kubernetes engine:

Installation de Kubernetes: GKE, EKS... Une fois l'engine crée, il faut encore créer le ou les clusters qui seront à l'intérieur

Cluster:

Master:

  • contient le Kubernetes API Server + le Replication Controller
  • 1 master -> plusieurs workers/nodes

Deployment:

kubectl run nginx --image=nginx:1.0.0 crée un deployment

Service:

Obtenu lorsque l'on expose un deployment

1
kubectl expose deployment nginx --port 80 --type LoadBalancer

Pod:

1
kubectl get pods
  • entité éphémère, 1 seule adresse IP qui change au restart
  • contient plusieurs containers et volumes
  • pod template = conf pour créer des réplicas de pod
  • tous les container sur un même pod se connaissent.

Node:

  • on doit spécifier le nombre de nodes du cluster kubernetes
  • un node peut accueillir plusieurs pods
  • chaque node run aussi: Kubelet (agent) et kube-proxy (utilisé par les Services pour communiquer entre plusieurs pods du même node) et Docker

Labels: permet de grouper des pods et des les sélectionner pour faire des opérations dessus (ex: app=myapp tier=backend)

Manifest:

Tools

Kubelet: l'agent qui tourne sur chaque node

Minikube: single-node kubernetes en mode local = environnement de dev. Ce machin possède un dashboard.

MicroK8s: pareil

Kubectl: outil officiel cli

Helm: outil officiel de gestion de package

  • Package: une application qui contient des charts et des templates
  • Chart: chart.yml, équivalent d'un docker-compose
  • Template: autres fichiers de config