- Simple and flexible horizontal and vertical scaling
- Consistent tooling for all deployments, customisations, addons in Kube YAML
- Allows for the complexity and customisation of old VM based networks, with the flexibility and scalability of containers
- Containerisation + microservices architecture - isolating and running each microservice as a versionable container and managing it's resources, scaling and availability
- Optimised for autoscaling - cost optimisation via rapid and automated scaling when needed
- Flexible multi-container pods to enforce compliance or security requirements eg logging, service mesh, traffic scanning etc
- Network Policy as code - apply ingress and egress network rules between Pods and Nodes
- Everything as Code > auditable, scannable, versionable
- Everything deployed, configured and maintained as code
- Supports rapid deployment of code (read: features & hotfixes), limiting blast radius
- Reduced human error in making changes based on declarative config in git
- Consistent and repeatable deployments
- Scheduled 'cron' jobs to spawn containers to carry out repetitive tasks
- Versioning of infrastructure (in code and in the container registry)
- Smart deployments with built in zero-downtime Green/Blue deployments, self-healing and automatic rollback
- Service discoverability (great for containers starting and stopping in a microservices world)
- Cloud agnostic able to be deployed on Prem (Rancher, OpenShift, Custom) + Azure, AWS, GCP etc
- Multi cloud / Hybrid cloud friendly
- Integrated deeply with cloud providers for persistent storage ie. Blob, Disks, Buckets
- Very strong open source communities backed by Google and the Cloud Native Compute Foundation
- Empowers DevOps - Developers are able to declaratively configure their own containers with GitOps
- CI/CD and Automation friendly, zero touch management and deployments using GitOps
- DevSecOps friendly - everything is in code, easily scan code repos, containers and nodes for full coverage
- Large pool of human resources in the market with existing or aspiring Kubernetes skillset
- Case Studies:
- Pokemon Go
- AirBNB
- Tinder
- Spotify
- Shopify
Some references: https://www.sumologic.com/blog/why-use-kubernetes/ https://www.forbes.com/sites/forbesbusinessdevelopmentcouncil/2020/10/28/what-the-c-suite-needs-to-know-about-using-kubernetes/?sh=1f699711c14e
Downsides & Misconceptions
- Just like VM based networks, K8s has the complexity of managing networks and infrastructure, (less than VMs) but still complex BUT very flexible
- K8s will not fix bad code, bad app architecture, bad DevOps practices
- K8s is only ONE of a handful of container orchestration tools - also worth considering PaaS like Azure Container Apps which is "serverless" containers
- K8s still requires a team to manage, IaC/DevOps people instead of old school sysadmins BUT sysadmins/cloudOps could be trained up definitely