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

Kubernetes - Resilient & Scalable platform for ...

Kubernetes - Resilient & Scalable platform for containerized-Microservices

Avatar for minhchuduc

minhchuduc

May 21, 2016

Other Decks in Technology

Transcript

  1. About me • Name: Chu Duc Minh - Age: 32

    • Cloud Chief Architect @ VCCorp • Head of Cloud Solutions department @ VCCloud • Expertise: Linux, OpenStack, CEPH, Docker, Kubernetes, Hashicorp's toolbox • Passion: Cloud & Infrastructure Technologies • Hobby: Programming Languages (learned Python, Go, Elixir, Clojure, Scala, Node.js - and forgot almost)
  2. Kubernetes • Kubernetes is a platform for running and orchestrating

    Docker containers in a clustered environment with multiple Docker hosts • Provides container grouping, load balancing, auto-healing, scaling features • Project was started by Google • Contributors = Google, CoreOS, Redhat, Mesosphere, Microsoft, HP, IBM, VMWare, Pivotal, SaltStack, etc • Can run on anywhere: Public Cloud, Private Cloud, baremetal, v.v...
  3. Design Overview “ Kubernetes is a system for managing containerized

    applications across multiple hosts, providing basic mechanisms for deployment, maintenance, and scaling of applications. ” https://github.com/kubernetes/kubernetes/tree/master/docs/design
  4. Design Overview “ Kubernetes is primarily targeted at applications composed

    of multiple containers, such as elastic, distributed micro-services. It is also designed to facilitate migration of non-containerized application stacks to Kubernetes. …[Kubernetes] provides ways for containers to find and communicate with each other in relatively familiar ways. ” https://github.com/kubernetes/kubernetes/tree/master/docs/design
  5. Key concepts • Pod - A group of co-living containers

    • Labels - Labels for identifying pods • Replication Controller - Manages replication of pods • Service - A logical set of pods and way to expose them • Namespaces - Way to seperate environments, projects, applications, … • Service Discovery - By cluster-DNS
  6. Design for failure = vital for distributed system resilience or

    resiliency [ri-zil-yuh ns, -zil-ee-uh ns] noun 1. the power or ability to return to the original form, position, etc., after being bent, compressed, or stretched: elasticity. 2. ability to recover readily from illness, depression, adversity, or the like; buoyancy. http://www.dictionary.com/browse/resilience
  7. K8s make microservices more manageable & resilient The power of

    declaration language 1. Pods (composite, livenessProbe, restart) 2. Replication Controller (keep it running) 3. Autoscaler (reactive)
  8. Integrate with OpenStack Auto-provision and configure: ❖ Load-balancer (LBaaS @

    OpenStack) ❖ Volume (Cinder @ OpenStack) ❖ etc …magically!
  9. Deploy microservices Mailship • a Transactional Email System developed by

    VCCloud (similar to Mandrill, Sendgrid, v.v...) • quite complex, will has more than 10 microservices when fully developed • CI/CD with auto test/build/push docker images to private registry
  10. Conclusion Kubernetes is a Toolkit for running distributed systems in

    production! Co-locating helper processes Naming and discovery Mounting storage systems Load balancing Distributing secrets Rolling updates Application health-checking Resource monitoring Replicating application instances Log access and ingestion Horizontal auto-scaling Support for introspection and debugging