Containerizing the Cloud with Kubernetes and Docker
This deck looks at Google Compute Engine integration with Docker and at Kubernetes, an Open Source Container scheduler. This deck was delivered during the Google Cloud Platform Developer Roadshow events in 2014.
Google confidential │ Do not distribute What is a container? • Lightweight Linux environment • Hermetically sealed, deployable application • Introspectable, runnable artifact • Recently popularized by Docker
Google confidential │ Do not distribute Static application environment = reliable deployments No stress deployment and update Why do developers care? Repeatable, runnable artifact = portability Develop here, run there Pick your cloud solely on its merits Loosely coupled = easier to build and manage Compose applications from micro- services Mix in and extend third party services
Google confidential │ Do not distribute Everything at Google runs in a container. • Resource isolation • Predictability • Quality of service • Efficient overcommit • Resource accounting Images by Connie Zhou
Google confidential │ Do not distribute Why do developers care? • Efficiency: optimized packing, better scaling • Performance: active environment tuning • Continuous integration: easy and reliable • Robustness: active monitoring, self healing Highly automatable = path to active management
Google confidential │ Do not distribute Managed Base OS Node Container Manager Scheduled Containers Cluster Scheduler Node container management on the Google Cloud Container Optimized VM Image Standardized Declarative Container Manifest Container health monitoring and restart
Google confidential │ Do not distribute User Experience Container Env. User App Host GCE VM Google Provided OS monitoring agent logging agent init / systemd sshd docker
Google confidential │ Do not distribute Managed Base OS Node Container Manager Scheduled Containers Cluster Scheduler Cluster container scheduling on the Google Cloud Schedule containers across machines Replication and resizing Service naming and discovery
Google confidential │ Do not distribute But it takes a community... Containers are portable. The active management framework must be portable too: • Run on your development machine. • Run on your cloud. • Run on Google Cloud Platform. • Run a different provider or your own hardware. And it must be enterprise grade. The community is working to create a framework that runs well everywhere: Kubernetes Microsoft, IBM, Red Hat, Docker, Mesosphere, SaltStack, and CoreOS, have joined the family.
Google confidential │ Do not distribute FE FE FE FE FE FE BE BE BE BE BE BE BE BE BE Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler Too Many Pods
Google confidential │ Do not distribute labels: role: frontend FE FE FE FE FE FE BE BE BE BE BE BE BE BE BE Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler Labels
Google confidential │ Do not distribute labels: role: frontend stage: production Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler FE FE FE FE FE FE BE BE BE BE BE BE BE BE BE Labels
Google confidential │ Do not distribute We’re just getting started ● Clone Kubernetes at: https://github.com/GoogleCloudPlatform/kubernetes ● Check out container VMs at: https://developers.google.com/compute/docs/containers ● Join the discussion on freenode: http://webchat.freenode.net/?channels=google-containers
Google confidential │ Do not distribute We’re taking lessons we’ve learned and open sourcing them Kubernetes is our evolving effort to make cluster management easy We’re eager to hear from you! 1 2 3 Summary