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

Why we use Kubernetes at my company

Why we use Kubernetes at my company

This presentation was for the Singapore Oracle meetup to highlight the benefits of adopting Kubernetes but also make people aware about some challenges in Kubernetes adoption and when it might not make sense to use Kubernetes.

vincentdesmet

August 20, 2019
Tweet

More Decks by vincentdesmet

Other Decks in Programming

Transcript

  1. Who am I? Vincent De Smet Site Reliability Engineer @

    Swatmobile co-organise Kubernetes meetups in Singapore https://www.meetup.com/Singapore-Kubernetes-User-Group vincentdesmet so0k
  2. What are Containers? • Packages up software binaries & dependencies

    • Immutable & testable • Isolate software from each other • Portable across environments a self-contained process ref: kubernetes-comic
  3. Why Containers? image: ruby:2.1 services: - postgres stages: - Build

    - Test - Staging - Production ... source: GitLab CI Lightweight Reproducible builds
  4. More than just packing and Isolation - Scheduling: Where should

    the containers run? - Resource Optimisation: How much resources does each container really need? - Monitoring: What’s happening with the containers? - Lifecycle and health: Keep containers running despite failures - Auth{n,z}: Control who can do what with the containers? - Scaling: Handle higher load by adding more instances - Discovery: How can I connect to the containers? - … Source
  5. Kubernetes how - Declarative vs Imperative: Replicas:2 vs for(i :=0;

    i<2;i++){ run "replica" } - Desired state + Actual State => Convergence Concept: controllers per resource type (extensible) - One time job (native) - Cron job (native) - Long running stateless process (native) - Let's Encrypt Certificate (extension) - Reverse Proxy Virtual Route (~native)
  6. Kubernetes how - Discovery of endpoints Label resources + use

    label queries - i.e : Find all the long running processes that can service an "orders" API request → Decouple where things are through dynamic discovery (embrace failure / change)
  7. Kubernetes key features - Decouple machines from workloads - Programmable

    workload management (extensible resource types, autoscaling, operators, ...) - Automatic recovery through health checks - Resource optimisation through resource requests / limits - Auth{z,n} strong role-based access control and team resource allocations
  8. Kubernetes pros - Scalable application design - Reproducible environments -

    Decouple server operations from application operations - Ecosystem / innovative OSS projects / great Cloud Provider support
  9. Lessons learned / tips - Developer buy-in is important communication,

    abstractions (!), insights, dev tooling - Ops job becomes a lot more flexible if you keep state out of the cluster (cluster upgrades / migrations / failure zones / … ) - App maturity (Autoscaling) If you can't autoscale (horizontally)…. Kube may not be the right option - Do you have the resources? small startup? kube may be too much of an overhead (get support from cloud provider dedicated architects & use managed solution)