Déployer une première application (sans état)

Introduction à Kubernetes

Frank Heilmann

Platform Architect and Freelance Instructor

En savoir plus sur « kubectl »

  • kubectl : commande principale pour interagir avec les objets Kubernetes
  • Objets p. ex. : pod, service, etc.

$$

  • Schémas d'utilisation typiques :

    • kubectl create -f <Manifest.yml> : créer de nouveaux objets ; -f pour « filename »
    • kubectl apply -f <Manifest.yml> : créer de nouveaux objets et modifier l'état des objets
    • kubectl get <object> : vue d'ensemble des objets déployés sur Kubernetes
    • kubectl describe <object> : infos détaillées sur un objet

    $$

  • Aide détaillée via l'option de ligne de commande --help

Introduction à Kubernetes

En savoir plus sur les manifestes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 5
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.25.4
        ports:
        - containerPort: 80
  • Rappel : les manifestes sont déclaratifs
  • Généralement en YAML, mais aussi en JSON
  • Deux sections clés :
    • metadata : infos essentielles sur l'objet ou la ressource
    • spec : définit les spécifications, ou l'état souhaité, de l'objet ou de la ressource
  • Les sections peuvent être très détaillées selon la ressource à déployer
Introduction à Kubernetes

Applications sans état

  • Applications sans état :

    • Concept général
    • Non propre à Kubernetes
    • Ne conservent pas d'état interne ni le contexte des données traitées
  • En cas d'interruption, une nouvelle réplique est recréée et reprend l'exécution.

  • Exemples :
    • Interface de base de données qui interroge un serveur de base de données
    • Application de recherche qui interroge un index en texte intégral
    • Application de flux de données qui convertit des lectures de température d'un capteur IdO de °F en °C
Introduction à Kubernetes

Déploiements Kubernetes

  • Les « applications sans état » correspondent aux « Deployments » Kubernetes
  • Un manifeste type comprend :
    • apiVersion et kind
    • metadata et spec
  • spec définit le nombre de replicas, un selector et un template
  • Plus de détails sur selector plus tard
  • template décrit les détails pour créer les pods dans le Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: <deployment name>
  labels:
    app: <a label for the application>
spec:
  replicas: <number of initial replicas>
  selector:
    matchLabels:
      app: <matches the label above>
  template:
    metadata:
      labels:
        app: <label to be given to each pod>
    spec:
      containers:
      - name: <container name>
        image: <the image to be used>
        ports:
        - containerPort: <ports for networking>
Introduction à Kubernetes

Déployer dans un cluster Kubernetes

  • kubectl apply -f <manifest.yml> pour créer des pods et appliquer des changements.
  • Le plan de contrôle Kubernetes planifie le Deployment sur des nœuds.
    • Ensuite, la création des Pods est déclenchée sur les nœuds.
  • Chaque Pod reçoit un identifiant unique mais aléatoire (imprévisible) ; chaque Pod est « équivalent aux autres »
Introduction à Kubernetes

Passons à la pratique !

Introduction à Kubernetes

Preparing Video For Download...