Een eerste (stateloze) app deployen

Introductie tot Kubernetes

Frank Heilmann

Platform Architect and Freelance Instructor

Meer over "kubectl"

  • kubectl: hoofdcommando om met Kubernetes-objecten te werken
  • Objecten zijn bijv. pod, service, etc.

$$

  • Typische gebruikspatronen:

    • kubectl create -f <Manifest.yml>: nieuwe objecten maken; -f staat voor "filename"
    • kubectl apply -f <Manifest.yml>: nieuwe objecten maken en de status van objecten wijzigen
    • kubectl get <object>: overzicht van objecten in Kubernetes
    • kubectl describe <object>: gedetailleerde info over een object

    $$

  • Uitgebreide hulp via de optie --help

Introductie tot Kubernetes

Meer over Manifests

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
  • Onthoud: Manifests zijn declaratief
  • Meestal YAML, maar ook JSON
  • Twee belangrijke secties:
    • metadata: kerninfo over het object of de resource
    • spec: definieert de specificaties (gewenste staat) van het object of de resource
  • Secties kunnen diep genest zijn, afhankelijk van de resource
Introductie tot Kubernetes

Stateloze applicaties

  • Stateloze apps:

    • Algemeen concept
    • Niet specifiek voor Kubernetes
    • Slaan geen interne status of verwerkingscontext op
  • Bij onderbreking wordt een nieuwe replica gemaakt en gaat direct verder.

  • Voorbeelden:
    • De database-frontend die een database-backend bevraagt
    • Een zoekapp die een full-textindex bevraagt
    • Een datastream-app die IoT-temperaturen omzet van °F naar °C
Introductie tot Kubernetes

Kubernetes Deployments

  • "Stateloze applicaties" komen overeen met "Kubernetes Deployments"
  • Een voorbeeldmanifest bevat:
    • apiVersion en kind
    • metadata en spec
  • spec definieert het aantal replicas, een selector en een template
  • Meer over selector later
  • template beschrijft hoe de pods van de Deployment worden aangemaakt
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>
Introductie tot Kubernetes

Deployen naar een Kubernetes-cluster

  • kubectl apply -f <manifest.yml> om pods te maken en wijzigingen toe te passen.
  • Het Kubernetes Control Plane plant de Deployment op Nodes in.
    • Daarna worden Pods op de Nodes gestart.
  • Pods krijgen een unieke, maar willekeurige ID; elke Pod is "even goed als elke andere"
Introductie tot Kubernetes

Laten we oefenen!

Introductie tot Kubernetes

Preparing Video For Download...