Linux containers have recently taken the industry by storm, offering a lightweight, powerful, portable and upgradeable alternative to traditional app deployment on a host OS/VM.
Managing Docker containers on OpenStack VMs is possible today with Mirantis OpenStack, with the Murano Application Catalog radically simplifying the job of placing multiple application containers in an environment, installing apps in them from public resources such as Docker Hub, and deploying the environment on VMs for use. For managing containers at large scales, Mirantis and Google are now working jointly to enable Murano to configure and deploy Kubernetes — the Google-initiated open source project to build and refine cluster orchestration for containers on infrastructure.
In this presentation the core concepts of OpenStack, Docker and Kubernetes will be described, as well as demonstrated abilities to deploy containerized applications, managed by Kubernetes on above of OpenStack cloud.
2. #dfist
Agenda
● What is OpenStack and why it became quite popular solution for building
private clouds?
● Murano - OpenStack's response to application management needs
● Containers and the benefits of application containerization
● Kubernetes - the leading tool for managing container clusters
● Demo
● Q&A
4. #dfist
What is OpenStack?
● OpenStack is a free and open-source cloud-computing software platform
● OpenStack is a complex set of tools that provides possibility for anyone to
build a ready-to-use cloud environment
● OpenStack fits the concept of “Infrastructure-as-a-service”
● OpenStack-based cloud environment can be comprised from a wide variety
of commodity hardware and software options
● OpenStack is the most popular open source cloud project in the world*
*according to the survey of more than 550 respondents conducted by Linux.com and The
New Stack
6. #dfist
Murano: OpenStack App Management Tool
● The Application catalog - a single-point to publish for tenants and users within tenants to consume
different ready-to-use applications
● The Murano Project introduces an application catalog to OpenStack, enabling application
developers and cloud administrators to publish various cloud-ready applications in a browsable
categorized catalog.
● Murano ready-to-use applications are being published on Community App Catalog - http://apps.
openstack.org, source code is being published on GitHub - https://github.com/openstack/murano.
● Murano provides possibility to to be abstract from underlying IaaS resources
● Murano supports multiple OS options (Linux & Windows)
7. #dfist
Murano Architecture
● Murano Dashboard (UI)
○ Uses python murano client to call Murano API
● Murano API
○ Exposes REST API
○ Sends tasks to the engine using RabbitMQ
● Murano Engine
○ Listens for tasks on RabbitMQ
○ Sends API calls to Heat API
○ Sends tasks to agents via RabbitMQ
● Murano Agent
○ Is located on guest VM’s
○ Listens for the tasks from RabbitMQ
○ Returns results back to Murano engine using RabbitMQ
9. #dfist
Docker Containers: benefits of usage
● Docker - is a lightweight isolation technology that allows users to launch
applications in an isolated environment on Linux
● Docker containers usage is a totally different way of application
management
● Containers have the huge benefits, that should be the perfect reasons to
prefer them over the rest technologies:
○ Performance
○ Repeatability
○ Isolation
○ Portability
10. #dfist
Containers - are not VMs
Containers - are not VMs
Containers VMs
Primary use case Containers are build for managing
applications, but not the
infrastructure
VM management solution has
capabilities for managing the
infrastructure (network, compute,
storage etc.)
Guest OS support For production environments only
Linux might be used natively
Any common operating system
Performance Containers do not incur performance
overhead
VMs incur performance overhead
Security and isolation Containers are using the shared
kernel - that’s not a full isolation
VMs are fully isolated, any kind of
failure will not affect other VM
Application management Containers are managed as a code
and do need specific management
software (e.g. Kubernetes)
VMs are managed as the fully-loaded
machines
12. #dfist
Kubernetes as a container orchestration tool
● The predecessor of Kubernetes was the “Borg” container orchestration tool,
originally developed by Google.
● All the best ideas from Borg were incorporated into Kubernetes, that is
open sourced and is available for everyone and runs everywhere
● Kubernetes is a container orchestrator that runs containers and supports
various underlying environments
13. #dfist
Kubernetes components
Kubernetes consists of the following main components:
● Cluster - a set of nodes used by Kubernetes to run applications
● Node - a virtual or physical machine, where Kubelet is runned and where pods can be created
● Pod - the smallest unit of Kubernetes - a colocated group of applications, running the same
context (e.g. - “Webserver”)
● Replication Controller - a loop that drives current state towards expected state
● Service - a set of running pods that run together (e.g. - load-balanced backends)
● Labels - identifying metadata attached to their objects (dev vs prod)