Professional Documents
Culture Documents
Matthias Sohn Adel Zaalouk SAP
Matthias Sohn Adel Zaalouk SAP
Matthias Sohn Adel Zaalouk SAP
Adel Zaalouk
SAP
From Containers to Kubernetes Container Scheduler
Benefits
Isolation
Container Immutable infrastructure
Portability
Faster deployments Kubernetes
Versioning
Ease of sharing
Orchestration of cluster of containers across
multiple hosts
Container Runtime •Automatic placements, networking, deployments,
Challenges scaling, roll-out/-back, A/B testing
Host OS
Networking Declarative – not procedural
VM Deployments •Declare target state, reconcile to desired state
Service Discovery •Self-healing
Auto Scaling
Persisting Data Workload Portability
Logging, Monitoring •Abstract from cloud provider specifics
Access Control •Multiple container runtimes
Docker
What does Kubernetes not cover ?
…we do the
following:
We use Kubernetes to deploy, host and operate
Kubernetes
Control planes are “seeded” into already existing clusters
Common Kubernetes Cluster Setup
Master Worker Master Worker Master Worker
HA Master
Worker
Worker
manages
Worker Worker Worker
HTTPS
Controller Manager D
New Shoot Clusters can be created via the Gardener Optional Addons
dashboard or by uploading a new Shoot resource to Addon Manager D
the Garden Cluster. The Gardener picks it up and starts
a Terraform job to create the necessary IaaS Machine Controller D
components. Then it deploys the Shoot Cluster Control R Actual Workload
Plane into the Seed Cluster and required add-ons into
the Shoot Cluster. Update or delete operations are
Terraformer
Shoot Cluster Control Plane
J
R ...
handled by the Gardener fully automatically as well.
Monitoring VPN
... Logging
R
SCP ... ...
...
IaaS IaaS
Following the Design Principle Gardener
uses…
Workload
Additional Tooling
Add-On Manager Network policies Cert Manager Cluster Prometheus
Helm Calico Cert Broker Autoscaler
EFK Stack
Long-Term Goal
Become CNCF Project
Gardener Blog
CNCF Presentation
Kubernetes Podcast
Hacker News
Reddit
Thank You!
GitHub https://github.com/gardener
Home Page https://gardener.cloud
Wiki https://github.com/gardener/documentation/wiki
Mailing List https://groups.google.com/forum/?fromgroups#!forum/gardener
Slack Channel https://kubernetes.slack.com/messages/gardener
Community Installer https://github.com/gardener/landscape-setup
Kubernetes Machine Controller Manager
Problem
•Node provisioning and de-provisioning is out of scope of current Kubernetes
•In the beginning we used terraform scripts ➦ unmanageable
•No mechanism
• to smoothly scale clusters
• upgrade cluster nodes for all providers
Deployment MachineDeployment
MCM Custom Resources
AWS-Machine-Class Secret
(Template)
Name: test-secret
Name: v1 Cloudconfig:
Machine Type: t2.large abc….xzy
Disk Size: 50GB AccessKeyId: abc123
Secret: test-secret SecretAccessKey: xyz789
……
Machine Machine-
Machine-Set Deployment
Name: test-
machine Name: test-ms Name: test-md
Replicas: 3 Replicas: 3
MachineClass: v1 UpdateStrategy: Rolling
MachineClass: v1
MachineClass: v1
Working of MCM Kubernetes
Controller
Manager
Cloud 3 VMs
Provider API
Node objects help in
monitoring the machine
status – Health Machine Controller
Manager
Machine
Node Machine
Deployment
Machine
Machine
Class: V1 Node Machine
Class + Secret Machine
Controller
Replicas: 3
V1 Class + Secret
Node Machine
Forked Cluster
Autoscaler Now assume that all the nodes resources are Cloud
nearly consumed and a new pod is created Provider API
kubectl
Machine
Pod Machine Deployment
ETCD Deployment Controller
Image: Nginx (Key-value store)
Node: Node4
Unschedulable Class: V1
Replicas: 4
3
Machine Controller Manager - Components
Create/delete Create/update Update no. of
Machines to maintain Machine-sets to replicas based on
required replicas perform updates load