Skip to content

Latest commit

 

History

History
375 lines (248 loc) · 5.82 KB

k8s-2019-01-25.rst

File metadata and controls

375 lines (248 loc) · 5.82 KB

Kubernetes





B3 Init

[Kubernetes wheel]


Jonas Linde <jonas.linde@b3.se>

Jonas Linde

  • IT-konsult sedan 1997
  • Infrastruktur
  • Systemutveckling
  • DevOps

[me]

Agenda

  • Översikt
  • Detaljer
  • Verktyg
  • Demo
  • O.s.v.

[lingon]

Översikt

[master and worker nodes]

Arkitektur

  • "Kubernetes (k8s) is an open-source system for automating deployment, scaling, and management of containerized applications."

[master and worker nodes]

Varför?

Resurser

  • Node
  • Deployment DaemonSet ReplicaSet StatefulSet
  • Pod Job CronJob
  • Service Ingress
  • StorageClass PersistentVolume PersistentVolumeClaim
  • Configmap Secret

Metadata

  • Annotations
  • Labels
  • NodeSelector
  • Taints
  • Tolerations
  • Affinity

Detaljer

[eye]

Nodes

  • en eller flera VM:ar
  • kör containrar
    • har container-loggarna
  • hanterar nätverket

Enheter

  • Deployment
    • deklaration av Pods och ReplicaSets
  • StatefulSet
    • som Deployment men med state
  • DaemonSet
    • Pods som ska köras på alla noder

Containrar

  • Pod
    • innehåller en eller flera containrar
    • startas om om den avslutas
  • Job
    • startas bara en gång
  • CronJob
    • startas periodiskt

[containers]

Åtkomst

  • Service
    • Pods är tillfälliga; de kan krascha eller flyttas
    • en Service är en stabil endpoint
  • Ingress
    • en Ingress exponerar Services
    • en Ingress Controller utför själva nätverkskopplingen

Lagring

  • StorageClass
    • type av lagring för automatisk skapning
  • PersistentVolume
    • k8s-enhet som representerar en lagringsenhet
  • PersistentVolumeClaim
    • kopplar en volym till en Pod

Konfiguration

  • ConfigMap
    • en bunt nyckel-värde-par
  • Secret
    • en bunt "hemliga" nyckel-värde-par
    • base64-kodade (sic!)

Metadata

  • Labels
    • nyckel-värde-par
    • kan användas för att peka ut objekt eller grupper av objekt
  • Annotations
    • kan innehålla strukturerat metadata
    • valfri användning
  • metadata kan knytas till olika typer av resurser

Metadata för att välja Node

  • NodeSelector
    • låter en Pod välja Node via en Label
  • Taints
    • spärrar användning av en Node
  • Tolerations
    • tolererar Taints
  • Affinity
    • ett nytt kraftfullare sätt att välja Node

Nätverk

  • via klusternätet kan en Pod kommunicera med alla andra Pods
  • routing sker via iptables-regler
    • t.ex. 172.1.0.3
  • Nodes har vanliga IP-adresser
    • t.ex. 10.1.2.3
  • en Ingress Controller kopplar externa adresser till Services
  • det finns massor av lösningar för s.k. overlay networks

Verktyg

[tools]

Kubectl

Minikube

Helm

Kubespray

  • "an incubated Kubernetes community project for deploying K8s clusters"
  • i praktiken en bunt Ansible playbooks

Publika moln

  • GCE
  • EKS
  • AKS
  • m.fl.

[master and worker nodes]

Demo

[burning]

Demo

  • https://kubernetes.io/docs/tutorials/hello-minikube/

    minikube start
    kubectl create deployment hello-node \
       --image=gcr.io/hello-minikube-zero-install/hello-node
    kubectl get all
    kubectl get events
    kubectl describe pod
    kubectl expose deployment hello-node --type=LoadBalancer --port=8080
    kubectl get all
    kubectl config view
    server=$(kubectl config view -o json |
             jq -r .clusters[].cluster.server | cut -d: -f2)
    port=$(kubectl get services -o json hello-node | jq .spec.ports[].nodePort)
    curl -i http:$server:$port/; echo
    

O.s.v.

[to infinity and beyond]

Ytterligare komponenter

  • ClusteAutoscaler
    • ResourceRequest
    • ResourceLimit
  • DnsController
  • mätvärden
  • monitorering
  • m.m.

Tack för ordet!

[more dominoes]

[more dominoes]