Kubernetes

https://kubernetes.io/

Production-grade container orchestration.

kubernetes


Components

Control plane

  • etcd: distributed persistent storage (key/value)
  • api server
  • scheduler: in charge of placing different resources on different servers
  • controller manager: manage controllers
  • cloud controller manager: ensure the interactions with the cloud provider APIs

Worker nodes

  • kubelet: in charge of creating and managing pods
  • kubernetes proxy: redirection management
  • container runtime: containers management

Architecture

Liveness vs Readiness

  • a liveness will provoke a container reboot
  • checks performed by the liveness probe: memory issue, dead lock, …
  • checks performed by the readiness probe: check db connection, check external service connection, …
---
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: whoami
spec:
  replicas: 2
  selector:
    matchLabels:
      app: whoami
      level: expert
  template:
    metadata:
      labels:
        app: whoami
        level: expert
    spec:
      containers:
        - name: whoami
          image: containous/whoami:latest
          ports:
            - name: main-port
              containerPort: 80
          readinessProbe:
            httpGet:
              path: /health
              port: 80

Best practices

  • use kubernetes deployment
  • configure probes Startup, Readiness and Liveness
  • use Init containers
  • think twice before having kubernetes pods with multiple containers
  • always set the ImagePullPolicy
  • always set the Requests and Limits
  • use labels and annotations
  • use kubernetes as soon as possible
  • version your descriptors

References