In 2015, Google open sourced the core of their internal container clustering system under the name Kubernetes. Teams that previously relied upon IaaS and PaaS to run their applications quickly adopted Kubernetes instead. Today, only a few years later, Kubernetes is key to many companies and runs applications with literally billions of users. Kubernetes has become the de facto standard for deploying and running cloud native applications. We’ll give an overview of what Kubernetes is today and share our experiences from using Kubernetes in an ecormmerce and an IoT application. The future of Kubernetes could not look better. The Kubernetes ecosystem is growing, allowing to provision professionally managed databases directly within the cluster, running functions in a serverless-fashion, and even allowing us to host the code, the build pipeline and the application itself on Kubernetes. In the future, there might be only one Kubernetes to rule them all.
One Kubernetes to rule them all (ZEUS 2019 Keynote)
1. One Kubernetes
to rule them all
Simon Harrer
Tammo van Lessen
2019-02-15
BAYREUTH / ZEUS 2019
Photo by Maximilian Weisbecker on Unsplash
2. The only slide about
• When you start, you can choose the laptop and phone
you want.
• When you need something (mouse, book, etc.), just
order it through the company Amazon account.
• The whole company meet every two months for two to
three days for an internal conference.
https://www.innoq.com/en/culture/working-at-innoq/
3. One Kubernetes to rule them all
• Why Kubernetes?
• eCommerce Project
• Industrial IoT Project
• Where will Kubernetes be tomorrow?
• How can Kubernetes help you?
5. Dependencies are the root of all evil
• Software dependencies (leftpad, cryptominer)
• Accept code duplication
• Service/Team dependencies (canonical user service)
• Accept data duplication
• Operations dependencies (operations department)
• Accept “you build, you run it”
6. It’s all about independence
• Vertical Architecture
• Cross-functional teams building microservices
• Minimal dependencies to other verticals
• Favour data redundancy over runtime dependencies
• Self-Service Everywhere
• Get everything with Credit Card + API Call
• Everything as Code
7. Containers are the Entry Ticket
• Container package services with their runtime in a
portable, reproducible, and sharable way
• Applications consists of multiple services, each service
is packaged in its own container
• is the de facto standard
8. Kubernetes is the cloud OS
• DevOps Team builds applications as set of Docker images
• DevOps Team declaratively specifies the runtime as code
• DevOps Team tells Kubernetes their runtime specification
• Kubernetes manages the application
• Load balancing, zero-downtime, logging, metrics, auto-
scaling, self-healing, [put-buzz-word-here]
17. eCommerce Project
• What are we doing?
• Order management and stock keeping
• Why we use Kubernetes?
• Mainly for self-service, Infrastructure as Code, and
vendor independence
• And a little bit of load-balancing, self-healing, and
scaling (black friday)
20. Industrial IoT Project
• What are we doing?
• IoT ingestion pipeline for refrigeration control systems
• Webapp for Management/Monitoring
• Platform platform for food retailing
• Why we use Kubernetes?
• Vendor independence, enabling dynamic growth (up to
10k supermarkets), infrastructure as code, zero-
downtime deployments, load-balancing, self-healing.
21. Ingestion Pipeline
CI/Virtus MQTT BrokerMarket Device
Content Enricher
Alarm Importer
Component
Importer
Time Series
Importer TSDB
Alarm DB
Component DB
Web
Backend
Web/APIWeb/APIWeb/API
22. How do we use Kubernetes?
• Managed K8s (Azure AKS)
• Dev and QA in one cluster with namespace per env
• Provisioning: terraform, shell scripts, Helm, K8s manifests,
Open Service Broker API for Azure
• Inside K8s: Spring Boot & Akka microservices, HiveMQ, Kafka,
InfluxDB, Prometheus/Grafana, NGINX, HAProxy, Hydra (OIDC)
• Outside K8s: PostgreSQL for Azure, Azure Container Insights,
Gitlab CI (CI/CD)
25. Service Mesh is the new ESB
• Services fulfil functional requirements
• Service Mesh fulfil nonfunctional requirements
• Routing (A/B testing, canary deployments)
• Monitoring (metrics, logs, traces)
• Resilience (circuit breakers, timeouts, retries)
• Security (authentication, authorisation, encryption)
26. Serverless on Kubernetes
• Scale to Zero
• Request proxy scales replicas (even to 0)
• Challenge is down/upscaling nodes (time to node = 5min)
• Functions as a Service on K8s
• Function runtime deployed as container in K8s
• Execute functions on those auto-scaled runtimes
• No vendor-lock in
27. Going All-in on Kubernetes
• Continuous Integration and Deployment in Kubernetes
• For every commit or pull request
• Build, test, and run in Kubernetes
• Operator Pattern FTW!
• You can even run your Gitlab in Kubernetes :-)
29. Kubernetes for Research
• Reproducible research is a challenge
• Publish Docker container and Kubernetes manifest of
your experiment or prototype
• Getting compute resources from University data centres
can be (read: is) cumbersome
• Test in local cluster (e.g. minikube)
• Use credit card for managed K8s (pay CPU/s)
30. One Kubernetes
to rule them all
Simon Harrer
Tammo van Lessen
2019-02-15
BAYREUTH / ZEUS 2019
Photo by Maximilian Weisbecker on Unsplash
Thank You!
Questions?