Upload
ihor-dvoretskyi
View
238
Download
0
Embed Size (px)
Citation preview
Deploying and managing container-based applications with OpenStack and Kubernetes
Ihor Dvoretskyi - OpenStack Operations Engineer at Mirantis Inc.
#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
#dfist
What is OpenStack?What is OpenStack and why it became quite popular solution for building private clouds?
#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
#dfist
MuranoOpenStack's response to application management needs
#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)
#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
#dfist
ContainersAnd the benefits of application containerization
#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
#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
#dfist
KubernetesThe leading tool for managing container clusters
#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
#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)
#dfist
Kubernetes Architecture
#dfist
The Benefits of Kubernetes and OpenStack collaboration● Docker provides:
○ The benefits of containers usage
● Kubernetes provides:
○ Portability, isolation from the underlying layers (infrastructure)
○ Container management, service discovery, load balancing
● Murano provides:
○ Ready-to-install applications
○ Cluster management
○ Infrastructure automation and autoscaling options
○ Application catalogue
● OpenStack provides:
○ Infrastructure as a Service layer for everything above
#dfist
Demo
Demo deployment of Kubernetes cluster on OpenStack using Murano
Thank you!Questions?Questions?
@idvoretskyihttps://plus.google.com/+IgorDvoretskyihttps://github.com/idvoretskyihttps://ua.linkedin.com/in/idvoretskyi