Driftsätta en första (tillståndslös) applikation

Introduktion till Kubernetes

Frank Heilmann

Platform Architect and Freelance Instructor

Mer om "kubectl"

  • kubectl: huvudkommando för att interagera med Kubernetes-objekt
  • Objekt är t.ex. pod, service osv.

$$

  • Typiska användningsmönster:

    • kubectl create -f <Manifest.yml>: skapa nya objekt, där -f står för "filename"
    • kubectl apply -f <Manifest.yml>: skapa nya objekt & ändra objekts tillstånd
    • kubectl get <object>: översikt över objekt driftsatta på Kubernetes
    • kubectl describe <object>: detaljerad information om ett objekt

    $$

  • Detaljerad hjälp finns via kommandoradsalternativet --help

Introduktion till Kubernetes

Mer om Manifest

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
  • Kom ihåg: Manifest är deklarativa
  • Vanligtvis YAML, men även JSON-format stöds
  • Två viktiga avsnitt:
    • metadata: viktig information om objektet eller resursen
    • spec: definierar specifikationerna, eller önskat tillstånd, för objektet eller resursen
  • Avsnitten kan vara ganska djupa, beroende på resursen som ska driftsättas
Introduktion till Kubernetes

Tillståndslösa applikationer

  • Tillståndslösa appar:

    • Allmänt koncept
    • Inte specifikt för Kubernetes
    • Sparar inget internt tillstånd eller kontext för bearbetad data
  • Vid avbrott återskapas en ny replik av den tillståndslösa appen och börjar köra.

  • Exempel:
    • Ett databasgränssnitt som ställer frågor mot en databasbackend
    • En sökapp som ställer frågor mot ett fulltextindex
    • En dataströmningsapp som konverterar temperaturavläsningar från en IoT-sensor från °F till °C
Introduktion till Kubernetes

Kubernetes Deployments

  • "Tillståndslösa applikationer" motsvarar "Kubernetes Deployments"
  • Ett exempelmanifest består av:
    • apiVersion och kind
    • metadata och spec
  • spec definierar antalet replicas, en selector och en template
  • Mer om selector senare
  • template beskriver detaljer för att skapa pods i 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>
Introduktion till Kubernetes

Driftsätta på ett Kubernetes-kluster

  • kubectl apply -f <manifest.yml> används för att skapa pods och tillämpa ändringar.
  • Kubernetes Control Plane schemalägger Deployment på Nodes.
    • Därefter triggas skapandet av Pods på Nodes.
  • Pods tilldelas ett unikt men slumpmässigt (oförutsägbart) id – varje Pod är "likvärdig med alla andra"
Introduktion till Kubernetes

Nu kör vi en övning!

Introduktion till Kubernetes

Preparing Video For Download...