Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Two years of Kubernetes on AWS

Two years of Kubernetes on AWS

This talk describes how things looked like trying to run Kubernetes on AWS two years ago (October 2016), how they are today (October 2018) and where the community is going.

Raffaele Di Fazio

October 16, 2018
Tweet

Other Decks in Technology

Transcript

  1. Two years of Kubernetes on AWS Raffaele Di Fazio -

    @x0rg Photo by José Alejandro Cuffi
  2. Agenda Photo by Estée Janssens • Two years ago •

    Today • Where are we going (and what is needed)
  3. October 2016 • Kubernetes ~1 year old • No “standard”

    deployment architecture • Provisioners’ lack of features
  4. To multi-AZ or not to multi-AZ? • Multi AZ setups

    the majority • EBS volume are per AZ • Cluster autoscaler not zone aware
  5. Multi-master • Opinionated • Kops supporting single master by default

    • Kube-aws supporting multi-master • Availability vs Cost&Simplicity
  6. Multi or single master • Multi master meant increased availability...

    • … and increased costs • In a true HA setup: 3 master, 5 etcd => 8 instances
  7. etcd • The essential part of Kubernetes • Etcd version

    2 • Bad performance • Needs special care (backup, compaction, …)
  8. Main alternatives • Kops (v1.4) • Kube-aws (v0.8) • Plenty

    of people starting their own provisioner • Kubeadm just started (launched with Kubernetes 1.4)
  9. Kops v1.4 • Works pretty well • Already lots of

    code (node agent, etc.) • Tries to work across different clouds
  10. More questions • Monitoring • Logging • Autoscaling (nodes vs

    pods) • Security best practices • Authn, Authz • Overlay network configuration • Load balancing / Ingress traffic (ELB, ELBv2) • Automated cluster updates
  11. October 2018 • Core stable • New features • Even

    more provisioning tools… and a managed solution • Architecture (partially) stabilized
  12. Core (kind of) stable • Deployments, configmaps, etc. are not

    updated so much • We still find some quirks in the basic part of the system
  13. New features • One release every 3 months, no LTS

    • Lots of features! • Stability can be a challenge
  14. New features - stay up to date! • Best approach:

    continuous updates • Use a managed solution: GKE, AKS, EKS • Build automation around OSS tools
  15. Federation “Note: Federation V1, the current Kubernetes federation API which

    reuses the Kubernetes API resources ‘as is’, is currently considered alpha for many of its features. There is no clear path to evolve the API to GA; however, there is a Federation V2 effort in progress to implement a dedicated federation API apart from the Kubernetes API.”
  16. Federation “Note: Federation V1, the current Kubernetes federation API which

    reuses the Kubernetes API resources ‘as is’, is currently considered alpha for many of its features. There is no clear path to evolve the API to GA; however, there is a Federation V2 effort in progress to implement a dedicated federation API apart from the Kubernetes API."
  17. EKS • Managed HA control pane is a big deal

    • Relatively cheap: $0.20 per hour + cost of nodes • Vanilla Kubernetes
  18. EKS (cont’d) • Still at version 1.10 with no announcements

    • Control plane updated without notice • Needs tooling and automation to upgrade worker nodes • https://github.com/weaveworks/eksctl
  19. Kops • Matured and adopted • Has somehow internally an

    opinionated view ◦ Etcd on the masters + EBS volumes ◦ Docker version installed by node agent
  20. Kops • Contains a lot of hidden experiment ◦ ClusterBundle

    ◦ EtcdManager • Stateful aware cluster upgrades... never merged
  21. More provisioners • Kubeadm based ◦ Kubicorn ◦ Heptio quickstart

    • Effort on getting a community version around an API first approach => cluster API
  22. Cluster API • Community effort • Rewriting all code from

    scratch • Still in very early stage
  23. Service meshes “A service mesh is a configurable infrastructure layer

    for a microservices application. It makes communication between service instances flexible, reliable, and fast.”
  24. Application management • Kubernetes is a platform to build PaaSes

    • https://github.com/knative • https://github.com/zalando-incubator/stackset-controller • ...
  25. Share your horror stories • 101 ways to crash your

    cluster (youtube) • A million ways to crash your cluster • Fallacies of distributed computing with Kubernetes on AWS