SlideShare a Scribd company logo
1 of 40
Download to read offline
A Future Journey:
How to Migrate 100
Clusters to GCP without
Downtime?
Tobias Schneck
Head of Professional Service
toschneck
@toschneck
tobi@kubermatic.com
Manuel Stößel
Systems Architect / Tech Lead
@ManuStoessel
@Manuel_Stoessel
manuel@kubermatic.com
What Else?
• Part of Professional Services @
Kubermatic
• Supporting customers on their
cloud-native journey
• Geeking out over Kubernetes and
adjacent technologies
Why Migrate Clusters?
Reasons for Cluster Migration Scenarios
● Business Reasons
● Better contract/conditions at another cloud provider ⇒ cost saving
● Data center migration to/from (cloud) providers
● Multi cloud strategy ⇒ decrease dependency to existing provider
● Technical Reasons
● Location migration of data centers
● Migrate to other network segments
● Adaption of on-prem / cloud improvements at new data center provider
● Data location of cloud offered service e.g. machine learning data
What Are the Main
Challenges?
Kubernetes Abstracts Infrastructure, But:
● Consummation of infrastructure resources
○ (Virtual) Machines
○ Network:
■ Network IP Address Spaces
■ Routing, Firewall
■ Ingress / Egress Traffic
○ DNS
○ External Storage Systems
● Cloud dependent Kubernetes components
○ Cloud Controller Manager
■ Node controller - responsible for updating kubernetes nodes
■ Service controller - responsible for services of type LoadBalancer
■ Route controller - responsible for setting up network routes
○ Storage Classes
○ (sometimes) Overlay Networking
K8s Master
API Server
Dashboard
Scheduler
kubelet kubelet kubelet kubelet
Container
Registry
etcd
Controllers
web browsers
kubectl
web browsers
Config
file
Image
CNI - Plugin Network (e.g. Flannel, Calico)
Developer
Developer
⇒ Application workload has the highest priority!
● Ensure fundamental networking rules at any time
○ All containers within a pod can communicate (L4) with each other unimpeded.
○ All pods can communicate with all other pods without NAT.
○ All nodes can communicate with all pods (and vice-versa) without NAT.
○ The IP that a pod sees itself as is the same IP that others see it as.
● External dependencies need to be reachable
○ External routed IPs for Load Balancers / Node Port Service
○ DNS Names need to be reachable
● Storage
○ State needs to migrated without data loss
Migration Without Downtime
Scale Level of 100 Clusters
● Larger organizations running a lot of clusters
⇒ different locations, org units, time zones
● Cluster users are only consumers
⇒ following the cluster as a service approach
● Cluster connection and secrets needs to be stable
=> no change of interface
Solution Approach
Status Quo
● Multi Cloud Setup with Kubermatic Kubernetes Platform (KKP)
○ Seed cluster hold containerized control plane of user clusters
○ Worker nodes provisioned by Cluster API conform Kubermatic machine-controller
○ Canal as default overlay network
● Target
○ Migrate user and seed cluster control planes and worker to different cloud
○ Keep external Cluster Endpoints stable
■ Control Plan: Kubernetes API Server endpoints
■ Application: DNS, Ingress
○ Out-of-Scope (for now): Storage replication
■ Assumption: Application Layer manages storage replication, e.g. etcd
Kubermatic
Kubermatic Master Cluster
KubeOne Seed Cluster - Region EU
User k8s
Worker
User k8s
Worker
User k8s Master
API Controller
Scheduler etcd
User k8s
Worker
User k8s
Worker
User k8s Master
API Controller
Scheduler etcd
Recommended Prerequisites
● Announce maintenance window and block cluster updates
● Ensure backups and recovery procedure for
○ Seed and user clusters
○ Application workload
● Create target cloud cluster as reference
● Ensure control of DNS entries
Migrate User Clusters
Solution Approach
1) Migrate User Cluster Workers
● Create new worker nodes in target cloud
⇒ Machine controller with new Machine Deployment at target cloud
● User worker nodes and Pods need to talk to each other at any time
⇒ Strap a VPN overlay by DaemonSets across current and target cloud
⇒ Route overlay CNI traffic through VPN network
● Ensure reachability
=> Keep old and create new cluster Ingress endpoints
=> Transfer workload to new cloud
=> Delete after workload / connectivity is ensured
KubeOne Seed Cluster - Region EU
User k8s Master
API Controller
Scheduler etcd
User k8s
Worker
VPN Server Machine
Controller
Application
User k8s
Worker
Application
*.cluster-1.example.com
K8s API Server tunnel
Canal Overlay
(eth0)
MetalLB
Migrate User Cluster Worker Nodes:
KubeOne Seed Cluster - Region EU
User k8s Master
API Controller
Scheduler etcd
User k8s
Worker
VPN Server Machine
Controller
User k8s
Worker
Application Application
*.cluster-1.example.com
K8s API Server tunnel
Canal Overlay
(kube)
Migrate User Cluster Worker Nodes:
1. VPN Daemon Set with client-to-client
communication
2. Route Overlay Traffic over VPN interface
3. Pause existing Cluster & Machine Deployment
VPN
Client
VPN
Client
MetalLB
KubeOne Seed Cluster - Region EU
User k8s Master
API Controller
Scheduler etcd
User k8s
Worker
Machine
Controller
VPN Server
User k8s
Worker
Application Application
*.cluster-1.example.com
K8s API Server tunnel
Canal Overlay
(kube)
Migrate User Cluster Worker Nodes:
1. VPN Daemon Set with client-to-client
communication
2. Route Overlay Traffic over VPN interface
3. Pause existing Cluster & Machine Deployment
4. Update Cluster Spec & Cloud Credentials
5. Unpause Cluster with new Cloud Provider
6. Apply new Machine Deployment
VPN
Client
VPN
Client
User k8s
Worker
VPN
Client
MetalLB
User k8s
Worker
VPN
Client
GCP LB
KubeOne Seed Cluster - Region EU
User k8s Master
API Controller
Scheduler etcd
User k8s
Worker
Machine
Controller
User k8s
Worker
*.cluster-1.example.com
K8s API Server tunnel
Canal Overlay
(kube)
Migrate User Cluster Worker Nodes:
1. VPN Daemon Set with client-to-client
communication
2. Route Overlay Traffic over VPN interface
3. Pause existing Cluster & Machine Deployment
4. Update Cluster Spec & Cloud Credentials
5. Unpause Cluster with new Cloud Provider
6. Apply new Machine Deployment
7. Test new cluster ingress entrypoint
8. Migrate Workload and update DNS
VPN
Client
VPN
Client
User k8s
Worker
VPN
Client
MetalLB GCP LB
User k8s
Worker
VPN
Client
Application Application
KubeOne Seed Cluster - Region EU
User k8s Master
API Controller
Scheduler etcd
VPN Server Machine
Controller
*.cluster-1.example.com
K8s API Server tunnel
Migrate User Cluster Worker Nodes:
1. VPN Daemon Set with client-to-client
communication
2. Route Overlay Traffic over VPN interface
3. Pause existing Cluster & Machine Deployment
4. Update Cluster Spec & Cloud Credentials
5. Unpause Cluster with new Cloud Provider
6. Apply new Machine Deployment
7. Test new cluster ingress entrypoint
8. Migrate Workload and update DNS
9. Cleanup old cloud resource
User k8s
Worker
GCP LB
User k8s
Worker
Application Application
Canal Overlay
(eth0)
github.com/kubermatic-labs/cluster-migration
DEMO Time 🎉
Migrate Seed Cluster
Solution Approach
Kubermatic
KubeOne Master Cluster
migrated
KubeOne Seed Cluster - Region EU
User k8s
Worker
User k8s
Worker
User k8s Master
API Controller
Scheduler etcd
migrated
User k8s
Worker
User k8s
Worker
User k8s Master
API Controller
Scheduler etcd
2) Migrate Seed Cluster
● Create new seed master nodes at new cloud
=> New Kubernetes API Load Balancer
=> API Endpoint needs to be updated by DNS
=> Block seed cluster upgrades to ensure worst case recovery
● Migrate user cluster control plane
=> Handle migration the same way (like user cluster workload)
=> Ensure etcd quorum and migration by data replication
=> Block user cluster upgrades to ensure worst case recovery
User k8s Master
API Scheduler Controller etcd
KubeOne Seed Cluster - Region EU
Seed k8s
Master
Seed k8s
Master
Seed k8s
Master
seed-k8s-api.example.com
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Worker
Migrate Seed Master Nodes:
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
KubeOne Seed Cluster - Region EU
Seed k8s
Master
Seed k8s
Master
Seed k8s
Master
seed-k8s-api.example.com
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Worker
Migrate Seed Master Nodes:
1. Setup VPN Overlay
2. Pause existing Cluster & Machine
Deployment
3. Create and join new 2 Master Nodes
Seed k8s
Master
Seed k8s
Master
VPN Server
Canal Overlay
(kube)
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
KubeOne Seed Cluster - Region EU
seed-k8s-api.example.com
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Worker
Migrate Seed Master Nodes:
1. Setup VPN Overlay
2. Pause existing Cluster & Machine
Deployment
3. Create and join new 2 Master Nodes
4. Add new LB Service & Update DNS
5. Remove 2 old Master Nodes and move
etcd quorum to new cloud
Seed k8s
Master
Seed k8s
Master
VPN Server
Canal Overlay
(kube)
Seed k8s
Master
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
KubeOne Seed Cluster - Region EU
Seed k8s
Master
seed-k8s-api.example.com
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Worker
Migrate Seed Master Nodes:
1. Setup VPN Overlay
2. Pause existing Cluster & Machine
Deployment
3. Create and join new 2 Master Nodes
4. Add new LB Service & Update DNS
5. Remove 2 old Master Nodes and move
etcd quorum to new cloud
6. Create 3rd Master Node at new cloud
and remove last old Master Node
Seed k8s
Master
Seed k8s
Master
VPN Server
Canal Overlay
(kube)
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
Migrate Seed Cluster Workers
Solution Approach
KubeOne Seed Cluster - Region EU
K8s API Server tunnels
Seed k8s
Master
Seed k8s
Master
Seed k8s
Master
*.seed.example.com
User k8s
Worker
User k8s
Worker
User k8s
Worker
[cluster-id]
NodePort Proxy
Service
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Worker
VPN Server
Canal Overlay
(kube)
Migrate Seed Worker Nodes:
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
KubeOne Seed Cluster - Region EU
K8s API Server tunnels
Seed k8s
Master
Seed k8s
Master
*.seed.example.com
User k8s
Worker
User k8s
Worker
User k8s
Worker
[cluster-id]
NodePort Proxy
Service
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Master
VPN Server
Canal Overlay
(kube)
Migrate Seed Worker Nodes:
1. VPN Overlay, Pause existing Cluster, Machine
Deployment
2. Create 2 new Workers (migration steps similar to
user cluster)
Seed k8s
Worker
Seed k8s
Worker
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
KubeOne Seed Cluster - Region EU
K8s API Server tunnels
Seed k8s
Master
Seed k8s
Master
*.seed.example.com
User k8s
Worker
User k8s
Worker
User k8s
Worker
[cluster-id]
NodePort Proxy
Service
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Master
VPN Server
Canal Overlay
(kube)
Migrate Seed Worker Nodes:
1. VPN Overlay, Pause existing Cluster, Machine
Deployment
2. Create 2 new Workers (migration steps similar to
user cluster)
3. Taint existing workers as non-schedule
4. Scale up etcd count of user cluster to 5
⇒ data replicated by etcd
Seed k8s
Worker
Seed k8s
Worker
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
Migrate Seed Worker Nodes:
1. VPN Overlay, Pause existing Cluster, Machine
Deployment
2. Create 2 new Workers (migration steps similar to
user cluster)
3. Taint existing workers as non-schedule
4. Scale up etcd count of user cluster to 5
⇒ data replicated by etcd
5. Create new LB for NodePort Proxy and update DNS
KubeOne Seed Cluster - Region EU
K8s API Server tunnels
Seed k8s
Master
Seed k8s
Master
*.seed.example.com
User k8s
Worker
User k8s
Worker
User k8s
Worker
[cluster-id]
NodePort Proxy
Service
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Master
VPN Server
Canal Overlay
(kube)
Seed k8s
Worker
Seed k8s
Worker
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
Migrate Seed Worker Nodes:
1. VPN Overlay, Pause existing Cluster, Machine
Deployment
2. Create 2 new Workers (migration steps similar to
user cluster)
3. Taint existing workers as non-schedule
4. Scale up etcd count of user cluster to 5
⇒ data replicated by etcd
5. Create new LB for NodePort Proxy and update DNS
6. Add 1 new worker and drain 1 old workers
⇒ etcd quorum migrated to new cloud
KubeOne Seed Cluster - Region EU
K8s API Server tunnels
Seed k8s
Master
Seed k8s
Master
*.seed.example.com
User k8s
Worker
User k8s
Worker
User k8s
Worker
[cluster-id]
NodePort Proxy
Service
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Worker
Seed k8s
Master
VPN Server
Canal Overlay
(kube)
Seed k8s
Worker
Seed k8s
Worker
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
Migrate Seed Worker Nodes:
1. VPN Overlay, Pause existing Cluster, Machine
Deployment
2. Create 2 new Workers (migration steps similar to
user cluster)
3. Taint existing workers as non-schedule
4. Scale up etcd count of user cluster to 5
⇒ data replicated by etcd
5. Create new LB for NodePort Proxy and update DNS
6. Add 1 new worker and drain 1 old workers
⇒ etcd quorum migrated to new cloud
7. Drain missing worker nodes, cleanup old cloud
KubeOne Seed Cluster - Region EU
K8s API Server tunnels
Seed k8s
Master
Seed k8s
Master
*.seed.example.com
User k8s
Worker
User k8s
Worker
User k8s
Worker
[cluster-id]
NodePort Proxy
Service
Seed k8s
Worker
Seed k8s
Master
VPN Server
Canal Overlay
(kube)
Seed k8s
Worker
Seed k8s
Worker
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
Migrate Seed Worker Nodes:
1. VPN Overlay, Pause existing Cluster, Machine
Deployment
2. Create 2 new Workers (migration steps similar to
user cluster)
3. Taint existing workers as non-schedule
4. Scale up etcd count of user cluster to 5
⇒ data replicated by etcd
5. Create new LB for NodePort Proxy and update DNS
6. Add 1 new worker and drain 1 old workers
⇒ etcd quorum migrated to new cloud
7. Drain missing worker nodes, cleanup old cloud
8. Scale down etcd count of user cluster to 3
9. Remove VPN Overlay
KubeOne Seed Cluster - Region EU
K8s API Server tunnels
Seed k8s
Master
Seed k8s
Master
*.seed.example.com
User k8s
Worker
User k8s
Worker
User k8s
Worker
[cluster-id]
NodePort Proxy
Service
Seed k8s
Worker
Seed k8s
Master
Canal Overlay
(eth0)
Seed k8s
Worker
Seed k8s
Worker
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
User k8s Master
API Scheduler Controller etcd
Outlook
● Automate clean up procedure
○ Idea: switch back cloud provider / machine controller for clean up
● Manage migration by Operator
○ Health checks
○ Wait conditions for migration steps
● Stabilize VPN connection
○ Multiple VPN servers
○ Soft switchover between VPN / Host network overlay
○ Evaluate Wireguard usage
● Automate Load Balancer and DNS management
Any Questions?
Join Us For Our Next Webinar!
February 23 at 8 AM CET / 6 PM AEST
Empower Your DevOps
Organization With Kubernetes
We’re Hiring!
Check Out Our Job Openings:
https://careers.smartrecruiters.com/KubermaticGmbH
kubermatic/kubermatic
@kubermatic
marketing@kubermatic.com

More Related Content

What's hot

What's hot (20)

Top 3 reasons why you should run your Enterprise workloads on GKE
Top 3 reasons why you should run your Enterprise workloads on GKETop 3 reasons why you should run your Enterprise workloads on GKE
Top 3 reasons why you should run your Enterprise workloads on GKE
 
Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple Effective Building your Platform with Kubernetes == Keep it Simple
Effective Building your Platform with Kubernetes == Keep it Simple
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It Matters
 
Kubernetes CI/CD with Helm
Kubernetes CI/CD with HelmKubernetes CI/CD with Helm
Kubernetes CI/CD with Helm
 
Cloud spanner architecture and use cases
Cloud spanner architecture and use casesCloud spanner architecture and use cases
Cloud spanner architecture and use cases
 
My kubernetes toolkit
My kubernetes toolkitMy kubernetes toolkit
My kubernetes toolkit
 
Container Camp London (2016-09-09)
Container Camp London (2016-09-09)Container Camp London (2016-09-09)
Container Camp London (2016-09-09)
 
CI Implementation with Kubernetes at LivePerson by Saar Demri
CI Implementation with Kubernetes at LivePerson by Saar DemriCI Implementation with Kubernetes at LivePerson by Saar Demri
CI Implementation with Kubernetes at LivePerson by Saar Demri
 
What's new in Kubernetes
What's new in KubernetesWhat's new in Kubernetes
What's new in Kubernetes
 
Kubernetes Webinar Series - Exploring Daemon Sets and Jobs
Kubernetes Webinar Series - Exploring Daemon Sets and JobsKubernetes Webinar Series - Exploring Daemon Sets and Jobs
Kubernetes Webinar Series - Exploring Daemon Sets and Jobs
 
Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWS
 
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
Kubernetes Deployment Tutorial | Kubernetes Tutorial For Beginners | Kubernet...
 
How to Achieve Canary Deployment on Kubernetes
How to Achieve Canary Deployment on KubernetesHow to Achieve Canary Deployment on Kubernetes
How to Achieve Canary Deployment on Kubernetes
 
GKE Tip Series - Usage Metering
GKE Tip Series -  Usage MeteringGKE Tip Series -  Usage Metering
GKE Tip Series - Usage Metering
 
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
Kubernetes Architecture | Understanding Kubernetes Components | Kubernetes Tu...
 
Kubernetes Application Deployment with Helm - A beginner Guide!
Kubernetes Application Deployment with Helm - A beginner Guide!Kubernetes Application Deployment with Helm - A beginner Guide!
Kubernetes Application Deployment with Helm - A beginner Guide!
 
Learn kubernetes in 90 minutes
Learn kubernetes in 90 minutesLearn kubernetes in 90 minutes
Learn kubernetes in 90 minutes
 
Exploring Magnum and Senlin integration for autoscaling containers
Exploring Magnum and Senlin integration for autoscaling containersExploring Magnum and Senlin integration for autoscaling containers
Exploring Magnum and Senlin integration for autoscaling containers
 
KubeCon EU 2016: Heroku to Kubernetes
KubeCon EU 2016: Heroku to KubernetesKubeCon EU 2016: Heroku to Kubernetes
KubeCon EU 2016: Heroku to Kubernetes
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 

Similar to How to Migrate 100 Clusters from On-Prem to Google Cloud Without Downtime

Kubernetes for Beginners
Kubernetes for BeginnersKubernetes for Beginners
Kubernetes for Beginners
DigitalOcean
 
kubernetesssssssssssssssssssssssssss.pdf
kubernetesssssssssssssssssssssssssss.pdfkubernetesssssssssssssssssssssssssss.pdf
kubernetesssssssssssssssssssssssssss.pdf
bchiriamina2
 

Similar to How to Migrate 100 Clusters from On-Prem to Google Cloud Without Downtime (20)

Kubermatic.pdf
Kubermatic.pdfKubermatic.pdf
Kubermatic.pdf
 
Kubermatic CNCF Webinar - start.kubermatic.pdf
Kubermatic CNCF Webinar - start.kubermatic.pdfKubermatic CNCF Webinar - start.kubermatic.pdf
Kubermatic CNCF Webinar - start.kubermatic.pdf
 
Introduction to istio
Introduction to istioIntroduction to istio
Introduction to istio
 
Openstack days sv building highly available services using kubernetes (preso)
Openstack days sv   building highly available services using kubernetes (preso)Openstack days sv   building highly available services using kubernetes (preso)
Openstack days sv building highly available services using kubernetes (preso)
 
Container orchestration and microservices world
Container orchestration and microservices worldContainer orchestration and microservices world
Container orchestration and microservices world
 
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the Datacenter
 
Kubernetes for Beginners
Kubernetes for BeginnersKubernetes for Beginners
Kubernetes for Beginners
 
CN Asturias - Stateful application for kubernetes
CN Asturias -  Stateful application for kubernetes CN Asturias -  Stateful application for kubernetes
CN Asturias - Stateful application for kubernetes
 
Scaling Kubernetes to Support 50000 Services.pptx
Scaling Kubernetes to Support 50000 Services.pptxScaling Kubernetes to Support 50000 Services.pptx
Scaling Kubernetes to Support 50000 Services.pptx
 
Workday's Next Generation Private Cloud
Workday's Next Generation Private CloudWorkday's Next Generation Private Cloud
Workday's Next Generation Private Cloud
 
kubernetesssssssssssssssssssssssssss.pdf
kubernetesssssssssssssssssssssssssss.pdfkubernetesssssssssssssssssssssssssss.pdf
kubernetesssssssssssssssssssssssssss.pdf
 
Multi-Cloud Orchestration for Kubernetes with Cloudify
Multi-Cloud Orchestration for Kubernetes with CloudifyMulti-Cloud Orchestration for Kubernetes with Cloudify
Multi-Cloud Orchestration for Kubernetes with Cloudify
 
OSS Japan 2019 service mesh bridging Kubernetes and legacy
OSS Japan 2019 service mesh bridging Kubernetes and legacyOSS Japan 2019 service mesh bridging Kubernetes and legacy
OSS Japan 2019 service mesh bridging Kubernetes and legacy
 
Docker on docker leveraging kubernetes in docker ee
Docker on docker leveraging kubernetes in docker eeDocker on docker leveraging kubernetes in docker ee
Docker on docker leveraging kubernetes in docker ee
 
Webinar- Tea for the Tillerman
Webinar- Tea for the TillermanWebinar- Tea for the Tillerman
Webinar- Tea for the Tillerman
 
Puppet Camp Berlin 2015: Configuration Management @ CERN: Going Agile with Style
Puppet Camp Berlin 2015: Configuration Management @ CERN: Going Agile with StylePuppet Camp Berlin 2015: Configuration Management @ CERN: Going Agile with Style
Puppet Camp Berlin 2015: Configuration Management @ CERN: Going Agile with Style
 
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...
Puppet Camp Berlin 2015: Andrea Giardini | Configuration Management @ CERN: G...
 
Multi-Cloud Orchestration for Kubernetes with Cloudify - Webinar Presentation
Multi-Cloud Orchestration for Kubernetes with Cloudify - Webinar PresentationMulti-Cloud Orchestration for Kubernetes with Cloudify - Webinar Presentation
Multi-Cloud Orchestration for Kubernetes with Cloudify - Webinar Presentation
 
Overview of OpenDaylight Container Orchestration Engine Integration
Overview of OpenDaylight Container Orchestration Engine IntegrationOverview of OpenDaylight Container Orchestration Engine Integration
Overview of OpenDaylight Container Orchestration Engine Integration
 
Unleashing k8 s to reduce complexities of an entire middleware platform
Unleashing k8 s to reduce complexities of an entire middleware platformUnleashing k8 s to reduce complexities of an entire middleware platform
Unleashing k8 s to reduce complexities of an entire middleware platform
 

More from loodse

More from loodse (7)

KubeCon 2018 - Running VM Workloads Side by Side with Container Workloads
KubeCon 2018 -  Running VM Workloads Side by Side with Container Workloads KubeCon 2018 -  Running VM Workloads Side by Side with Container Workloads
KubeCon 2018 - Running VM Workloads Side by Side with Container Workloads
 
Kubernetes ClusterAPI
Kubernetes ClusterAPIKubernetes ClusterAPI
Kubernetes ClusterAPI
 
One cluster to serve them all
One cluster to serve them allOne cluster to serve them all
One cluster to serve them all
 
k8s NodeSet
k8s NodeSet k8s NodeSet
k8s NodeSet
 
Kubernetes Workshop
Kubernetes WorkshopKubernetes Workshop
Kubernetes Workshop
 
Kubernetes Frankfurt
Kubernetes FrankfurtKubernetes Frankfurt
Kubernetes Frankfurt
 
Docker meets Kubernetes
Docker meets KubernetesDocker meets Kubernetes
Docker meets Kubernetes
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Recently uploaded (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 

How to Migrate 100 Clusters from On-Prem to Google Cloud Without Downtime

  • 1. A Future Journey: How to Migrate 100 Clusters to GCP without Downtime?
  • 2. Tobias Schneck Head of Professional Service toschneck @toschneck tobi@kubermatic.com Manuel Stößel Systems Architect / Tech Lead @ManuStoessel @Manuel_Stoessel manuel@kubermatic.com What Else? • Part of Professional Services @ Kubermatic • Supporting customers on their cloud-native journey • Geeking out over Kubernetes and adjacent technologies
  • 4. Reasons for Cluster Migration Scenarios ● Business Reasons ● Better contract/conditions at another cloud provider ⇒ cost saving ● Data center migration to/from (cloud) providers ● Multi cloud strategy ⇒ decrease dependency to existing provider ● Technical Reasons ● Location migration of data centers ● Migrate to other network segments ● Adaption of on-prem / cloud improvements at new data center provider ● Data location of cloud offered service e.g. machine learning data
  • 5. What Are the Main Challenges?
  • 6. Kubernetes Abstracts Infrastructure, But: ● Consummation of infrastructure resources ○ (Virtual) Machines ○ Network: ■ Network IP Address Spaces ■ Routing, Firewall ■ Ingress / Egress Traffic ○ DNS ○ External Storage Systems ● Cloud dependent Kubernetes components ○ Cloud Controller Manager ■ Node controller - responsible for updating kubernetes nodes ■ Service controller - responsible for services of type LoadBalancer ■ Route controller - responsible for setting up network routes ○ Storage Classes ○ (sometimes) Overlay Networking
  • 7. K8s Master API Server Dashboard Scheduler kubelet kubelet kubelet kubelet Container Registry etcd Controllers web browsers kubectl web browsers Config file Image CNI - Plugin Network (e.g. Flannel, Calico) Developer Developer
  • 8. ⇒ Application workload has the highest priority! ● Ensure fundamental networking rules at any time ○ All containers within a pod can communicate (L4) with each other unimpeded. ○ All pods can communicate with all other pods without NAT. ○ All nodes can communicate with all pods (and vice-versa) without NAT. ○ The IP that a pod sees itself as is the same IP that others see it as. ● External dependencies need to be reachable ○ External routed IPs for Load Balancers / Node Port Service ○ DNS Names need to be reachable ● Storage ○ State needs to migrated without data loss Migration Without Downtime
  • 9. Scale Level of 100 Clusters ● Larger organizations running a lot of clusters ⇒ different locations, org units, time zones ● Cluster users are only consumers ⇒ following the cluster as a service approach ● Cluster connection and secrets needs to be stable => no change of interface
  • 11. Status Quo ● Multi Cloud Setup with Kubermatic Kubernetes Platform (KKP) ○ Seed cluster hold containerized control plane of user clusters ○ Worker nodes provisioned by Cluster API conform Kubermatic machine-controller ○ Canal as default overlay network ● Target ○ Migrate user and seed cluster control planes and worker to different cloud ○ Keep external Cluster Endpoints stable ■ Control Plan: Kubernetes API Server endpoints ■ Application: DNS, Ingress ○ Out-of-Scope (for now): Storage replication ■ Assumption: Application Layer manages storage replication, e.g. etcd
  • 12. Kubermatic Kubermatic Master Cluster KubeOne Seed Cluster - Region EU User k8s Worker User k8s Worker User k8s Master API Controller Scheduler etcd User k8s Worker User k8s Worker User k8s Master API Controller Scheduler etcd
  • 13. Recommended Prerequisites ● Announce maintenance window and block cluster updates ● Ensure backups and recovery procedure for ○ Seed and user clusters ○ Application workload ● Create target cloud cluster as reference ● Ensure control of DNS entries
  • 15. 1) Migrate User Cluster Workers ● Create new worker nodes in target cloud ⇒ Machine controller with new Machine Deployment at target cloud ● User worker nodes and Pods need to talk to each other at any time ⇒ Strap a VPN overlay by DaemonSets across current and target cloud ⇒ Route overlay CNI traffic through VPN network ● Ensure reachability => Keep old and create new cluster Ingress endpoints => Transfer workload to new cloud => Delete after workload / connectivity is ensured
  • 16. KubeOne Seed Cluster - Region EU User k8s Master API Controller Scheduler etcd User k8s Worker VPN Server Machine Controller Application User k8s Worker Application *.cluster-1.example.com K8s API Server tunnel Canal Overlay (eth0) MetalLB Migrate User Cluster Worker Nodes:
  • 17. KubeOne Seed Cluster - Region EU User k8s Master API Controller Scheduler etcd User k8s Worker VPN Server Machine Controller User k8s Worker Application Application *.cluster-1.example.com K8s API Server tunnel Canal Overlay (kube) Migrate User Cluster Worker Nodes: 1. VPN Daemon Set with client-to-client communication 2. Route Overlay Traffic over VPN interface 3. Pause existing Cluster & Machine Deployment VPN Client VPN Client MetalLB
  • 18. KubeOne Seed Cluster - Region EU User k8s Master API Controller Scheduler etcd User k8s Worker Machine Controller VPN Server User k8s Worker Application Application *.cluster-1.example.com K8s API Server tunnel Canal Overlay (kube) Migrate User Cluster Worker Nodes: 1. VPN Daemon Set with client-to-client communication 2. Route Overlay Traffic over VPN interface 3. Pause existing Cluster & Machine Deployment 4. Update Cluster Spec & Cloud Credentials 5. Unpause Cluster with new Cloud Provider 6. Apply new Machine Deployment VPN Client VPN Client User k8s Worker VPN Client MetalLB User k8s Worker VPN Client GCP LB
  • 19. KubeOne Seed Cluster - Region EU User k8s Master API Controller Scheduler etcd User k8s Worker Machine Controller User k8s Worker *.cluster-1.example.com K8s API Server tunnel Canal Overlay (kube) Migrate User Cluster Worker Nodes: 1. VPN Daemon Set with client-to-client communication 2. Route Overlay Traffic over VPN interface 3. Pause existing Cluster & Machine Deployment 4. Update Cluster Spec & Cloud Credentials 5. Unpause Cluster with new Cloud Provider 6. Apply new Machine Deployment 7. Test new cluster ingress entrypoint 8. Migrate Workload and update DNS VPN Client VPN Client User k8s Worker VPN Client MetalLB GCP LB User k8s Worker VPN Client Application Application
  • 20. KubeOne Seed Cluster - Region EU User k8s Master API Controller Scheduler etcd VPN Server Machine Controller *.cluster-1.example.com K8s API Server tunnel Migrate User Cluster Worker Nodes: 1. VPN Daemon Set with client-to-client communication 2. Route Overlay Traffic over VPN interface 3. Pause existing Cluster & Machine Deployment 4. Update Cluster Spec & Cloud Credentials 5. Unpause Cluster with new Cloud Provider 6. Apply new Machine Deployment 7. Test new cluster ingress entrypoint 8. Migrate Workload and update DNS 9. Cleanup old cloud resource User k8s Worker GCP LB User k8s Worker Application Application Canal Overlay (eth0)
  • 23. Kubermatic KubeOne Master Cluster migrated KubeOne Seed Cluster - Region EU User k8s Worker User k8s Worker User k8s Master API Controller Scheduler etcd migrated User k8s Worker User k8s Worker User k8s Master API Controller Scheduler etcd
  • 24. 2) Migrate Seed Cluster ● Create new seed master nodes at new cloud => New Kubernetes API Load Balancer => API Endpoint needs to be updated by DNS => Block seed cluster upgrades to ensure worst case recovery ● Migrate user cluster control plane => Handle migration the same way (like user cluster workload) => Ensure etcd quorum and migration by data replication => Block user cluster upgrades to ensure worst case recovery
  • 25. User k8s Master API Scheduler Controller etcd KubeOne Seed Cluster - Region EU Seed k8s Master Seed k8s Master Seed k8s Master seed-k8s-api.example.com Seed k8s Worker Seed k8s Worker Seed k8s Worker Migrate Seed Master Nodes: User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 26. KubeOne Seed Cluster - Region EU Seed k8s Master Seed k8s Master Seed k8s Master seed-k8s-api.example.com Seed k8s Worker Seed k8s Worker Seed k8s Worker Migrate Seed Master Nodes: 1. Setup VPN Overlay 2. Pause existing Cluster & Machine Deployment 3. Create and join new 2 Master Nodes Seed k8s Master Seed k8s Master VPN Server Canal Overlay (kube) User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 27. KubeOne Seed Cluster - Region EU seed-k8s-api.example.com Seed k8s Worker Seed k8s Worker Seed k8s Worker Migrate Seed Master Nodes: 1. Setup VPN Overlay 2. Pause existing Cluster & Machine Deployment 3. Create and join new 2 Master Nodes 4. Add new LB Service & Update DNS 5. Remove 2 old Master Nodes and move etcd quorum to new cloud Seed k8s Master Seed k8s Master VPN Server Canal Overlay (kube) Seed k8s Master User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 28. KubeOne Seed Cluster - Region EU Seed k8s Master seed-k8s-api.example.com Seed k8s Worker Seed k8s Worker Seed k8s Worker Migrate Seed Master Nodes: 1. Setup VPN Overlay 2. Pause existing Cluster & Machine Deployment 3. Create and join new 2 Master Nodes 4. Add new LB Service & Update DNS 5. Remove 2 old Master Nodes and move etcd quorum to new cloud 6. Create 3rd Master Node at new cloud and remove last old Master Node Seed k8s Master Seed k8s Master VPN Server Canal Overlay (kube) User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 29. Migrate Seed Cluster Workers Solution Approach
  • 30. KubeOne Seed Cluster - Region EU K8s API Server tunnels Seed k8s Master Seed k8s Master Seed k8s Master *.seed.example.com User k8s Worker User k8s Worker User k8s Worker [cluster-id] NodePort Proxy Service Seed k8s Worker Seed k8s Worker Seed k8s Worker VPN Server Canal Overlay (kube) Migrate Seed Worker Nodes: User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 31. KubeOne Seed Cluster - Region EU K8s API Server tunnels Seed k8s Master Seed k8s Master *.seed.example.com User k8s Worker User k8s Worker User k8s Worker [cluster-id] NodePort Proxy Service Seed k8s Worker Seed k8s Worker Seed k8s Worker Seed k8s Master VPN Server Canal Overlay (kube) Migrate Seed Worker Nodes: 1. VPN Overlay, Pause existing Cluster, Machine Deployment 2. Create 2 new Workers (migration steps similar to user cluster) Seed k8s Worker Seed k8s Worker User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 32. KubeOne Seed Cluster - Region EU K8s API Server tunnels Seed k8s Master Seed k8s Master *.seed.example.com User k8s Worker User k8s Worker User k8s Worker [cluster-id] NodePort Proxy Service Seed k8s Worker Seed k8s Worker Seed k8s Worker Seed k8s Master VPN Server Canal Overlay (kube) Migrate Seed Worker Nodes: 1. VPN Overlay, Pause existing Cluster, Machine Deployment 2. Create 2 new Workers (migration steps similar to user cluster) 3. Taint existing workers as non-schedule 4. Scale up etcd count of user cluster to 5 ⇒ data replicated by etcd Seed k8s Worker Seed k8s Worker User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 33. Migrate Seed Worker Nodes: 1. VPN Overlay, Pause existing Cluster, Machine Deployment 2. Create 2 new Workers (migration steps similar to user cluster) 3. Taint existing workers as non-schedule 4. Scale up etcd count of user cluster to 5 ⇒ data replicated by etcd 5. Create new LB for NodePort Proxy and update DNS KubeOne Seed Cluster - Region EU K8s API Server tunnels Seed k8s Master Seed k8s Master *.seed.example.com User k8s Worker User k8s Worker User k8s Worker [cluster-id] NodePort Proxy Service Seed k8s Worker Seed k8s Worker Seed k8s Worker Seed k8s Master VPN Server Canal Overlay (kube) Seed k8s Worker Seed k8s Worker User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 34. Migrate Seed Worker Nodes: 1. VPN Overlay, Pause existing Cluster, Machine Deployment 2. Create 2 new Workers (migration steps similar to user cluster) 3. Taint existing workers as non-schedule 4. Scale up etcd count of user cluster to 5 ⇒ data replicated by etcd 5. Create new LB for NodePort Proxy and update DNS 6. Add 1 new worker and drain 1 old workers ⇒ etcd quorum migrated to new cloud KubeOne Seed Cluster - Region EU K8s API Server tunnels Seed k8s Master Seed k8s Master *.seed.example.com User k8s Worker User k8s Worker User k8s Worker [cluster-id] NodePort Proxy Service Seed k8s Worker Seed k8s Worker Seed k8s Worker Seed k8s Master VPN Server Canal Overlay (kube) Seed k8s Worker Seed k8s Worker User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 35. Migrate Seed Worker Nodes: 1. VPN Overlay, Pause existing Cluster, Machine Deployment 2. Create 2 new Workers (migration steps similar to user cluster) 3. Taint existing workers as non-schedule 4. Scale up etcd count of user cluster to 5 ⇒ data replicated by etcd 5. Create new LB for NodePort Proxy and update DNS 6. Add 1 new worker and drain 1 old workers ⇒ etcd quorum migrated to new cloud 7. Drain missing worker nodes, cleanup old cloud KubeOne Seed Cluster - Region EU K8s API Server tunnels Seed k8s Master Seed k8s Master *.seed.example.com User k8s Worker User k8s Worker User k8s Worker [cluster-id] NodePort Proxy Service Seed k8s Worker Seed k8s Master VPN Server Canal Overlay (kube) Seed k8s Worker Seed k8s Worker User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 36. Migrate Seed Worker Nodes: 1. VPN Overlay, Pause existing Cluster, Machine Deployment 2. Create 2 new Workers (migration steps similar to user cluster) 3. Taint existing workers as non-schedule 4. Scale up etcd count of user cluster to 5 ⇒ data replicated by etcd 5. Create new LB for NodePort Proxy and update DNS 6. Add 1 new worker and drain 1 old workers ⇒ etcd quorum migrated to new cloud 7. Drain missing worker nodes, cleanup old cloud 8. Scale down etcd count of user cluster to 3 9. Remove VPN Overlay KubeOne Seed Cluster - Region EU K8s API Server tunnels Seed k8s Master Seed k8s Master *.seed.example.com User k8s Worker User k8s Worker User k8s Worker [cluster-id] NodePort Proxy Service Seed k8s Worker Seed k8s Master Canal Overlay (eth0) Seed k8s Worker Seed k8s Worker User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd User k8s Master API Scheduler Controller etcd
  • 37. Outlook ● Automate clean up procedure ○ Idea: switch back cloud provider / machine controller for clean up ● Manage migration by Operator ○ Health checks ○ Wait conditions for migration steps ● Stabilize VPN connection ○ Multiple VPN servers ○ Soft switchover between VPN / Host network overlay ○ Evaluate Wireguard usage ● Automate Load Balancer and DNS management
  • 39. Join Us For Our Next Webinar! February 23 at 8 AM CET / 6 PM AEST Empower Your DevOps Organization With Kubernetes
  • 40. We’re Hiring! Check Out Our Job Openings: https://careers.smartrecruiters.com/KubermaticGmbH kubermatic/kubermatic @kubermatic marketing@kubermatic.com