Idea of Cloud Native Architecture
Optimize software for cost efficiency and reliability
Definition of Cloud Native
Build and run scalable applications in modern and dynamic environments
Reason for Cloud Native
Come away from the monolithic approach
Characteristics of Cloud Native Applications
Autoscaling
Serverless
Open Standards
Use of Containers
Container basics
4 Cs (outter to inner)
Security with Containers
Container Orchestration Fundamentals
Networking within Containers
Service Discovery
DNS:
- modern DNS servers with API to register new services
Key-Value-Store:
- database to store information about services, f.e. etcd, Consul or Apache Zookeeper
Service Mesh
Storage
Kubernetes Architecture
K8s Control plane
kube-apiserver:
- centerpiece of k8s. All the other components interact with it
etcd:
- the database which holds the state of the cluster
kube-scheduler:
- chooses the worker node that could fit a workload that should be scheduled based on properties like CPU and RAM
kube-controller-manager:
- contains non-terminating control loops that manage the state of the cluster. F.e. this checks if a desired number of your application is available at all times
cloud-controller-manager (optional):
- can be used to interact with the API of cloud providers, to create external resources like load balancers, storage or security groups
K8s Worker node
container runtime:
- responsible for running containers on the worker node, f.e. docker or containerd
kubelet:
- small agent that runs on every worker node. Talks to the api-server and container runtime to handle the starting of containers
kube-proxy:
- a network proxy that handles inside and outside communication of the cluster. Tries to rely on the networking capabilitiesof the underlying operating system
K8s API
Containers in K8s
containerd:
- lightweight and performant implementation to run containers
- most popular container runtime atm
- used by all major cloud providers for Kubernetes As A Service producs
CRI-O
- created by Red Hat, similar to podman and buildah
Docker
- long time standard, but never really made for container orchestration
- usage of docker will be deprecated in Kubernetes 1.23
Networking in K8s
K8s scheduling
K8s objects