etc) ◦ External libraries in your OS (libssl, libc etc.) ◦ Libraries at specific versions ( django 2.1) ◦ Source code at specifc commit ( user service on commit 1 of master branch) • Traditionally this is done by some step by step operation (manual installation, bash script, ansible) ◦ Pretty fragile ◦ Difficult to ensure it runs the same on two machines ( development machine is macOS, production is Ubuntu) • Package all this so that its the same every run ( images)
your resources using declarable configurations ◦ Kubernetes scheduler will make sure the system state matches this configuration ◦ Self heals when things go wrong • Velocity ( provision dev/ test/ prod environments and throw them away quickly) • Efficiency ( physical resources are not underutilized )
the traditional deployment except you play with containers now. ◦ Load balancer => Ingress Controller ( Service) ◦ EC2 instances for applications => Pods ( Deployment) ◦ Autoscaling group => Horizonal Pod Autoscaler / Replicas ◦ Stateful Databases => StatefulSets ◦ DNS => Kubernetes DNS ◦ Also some extra stuff : ▪ ConfigMaps for configuration management ▪ Secretes for secret stuff like passwords etc.
if you want ) Skip most of the other concepts while starting to not get overwhelmed Do this course ( it’s 15 mins long in the browser) https://www.katacoda.com/courses/kubernetes/kubectl-run-containers
- Extending developer environment ( let every developer run the complete distributed system for themselves for a safe playground ) - Introduce Service Mesh - Traffic tracing - Circuit breakers / rate limiting - SLA monitoring