Контейнеры: роль в решения Cisco...Container-as-a-Service Developer ready and...

Preview:

Citation preview

Контейнеры: роль в современном ИТ и решения Cisco

Александр Скороходов• Технический консультант

Что такое контейнеры?

Контейнеры в транспортной индустриии

• Сейчас более 90% всех грузов перевозится в стандартных контейнерах

• Ускорение доставки, погрузки/разгрузки

• Улучшение сохранности грузов

• Средняя стоимость доставки снизилась с >25% до <3%: сделало возможной глобализацию и производство just-in-time

Linux контейнеры

• Контейнер – группа процессов на Linux машине, образующих изолированную среду

• Linux котейнер имитирует Linux систему внутри Linuxсистемы

• Изнутри контейнер выглядит (почти) как VM.

• Снаружи – как набор обычных процессов

• Сходство с VM

• Свои сетевые интерфейсы

• Своя файловая система

• Изоляция друг от друга: не могу влиять или даже «увидеть»

• Управление ресурсами

• Отличия от VM

• Контейнеры разделяют ядро OC хоста (т.е. только Linux среда)

• Существенно «легче» с точки зрения ресурсов, времени запуска и т.д. – выше плотность

Zones

Виртуальные машины и контейнеры

App A

Bins/Libs

Hypervisor (Type 2)

Host OS

Server

Host OS

Server

App A’

Bins/Libs

Guest OS

App B

Bins/Libs

Guest OS

Bins/Libs Bins/Libs Co

nta

iner

Co

ntr

ol

App A

App A’

App B

App B’

App C’

App C’

VM

Container

Контейнеры изолированы, но разделяют

ядро ОС и (где возможно) файлы/библиотеки

Guest OS

Виртуальные машины и контейнерыАналогия: дома и квартиры

Services infra Installation

Services infra Installation

Services infra Installation

Services Infrastructure Installation

VMs – как отдельные дома Контейнеры – как квартиры в доме

https://github.com/nsec/the-internet

Пример плотности

• Имитация “Internet”: LXC контейнер “the-internet” с примерно 250 суб-контейнерами, работающими как BGP или OSPFроутеры...

• …на лэптопе!

Namespaces: изоляция системных ресурсов

• Разделение структур данных в ядре ОС для создания виртуальных сред (пространств имён)

• Например, в разных средах:

• Можно иметь разные процессы PID 42

• Можно иметь разных пользователей с именем “user”

• И т.д.

• Различные виды namespace

• pid (processes)

• mnt (mount points, filesystems)

• net (network interfaces, routing...)

• user (UIDs)

• ipc (System V IPC)

• uts (hostname)

Net NamespaceСетевое пространство имён – изоляция сетевых ресурсов

• В каждом сетевом namespace свои…

• Сетевые интерфейсы(включая lo/127.0.0.1)

• IP адреса

• Таблицы маршрутизации

• Правила iptables

• Связь между контейнерами в разных namespace:

• UNIX domain sockets

• Пары veth интерфейсовNet Namespace1

Net devices: eth0

IP address: 1.1.1.1/24

Route

Firewall rule

Sockets

Proc

sysfs

Net Namespace2

Net devices: eth1

IP address: 2.2.2.2/24

Route

Firewall rule

Sockets

Proc

sysfs

Control Groups (cgroups)

• Управление ресурсами, доступными разным потребителям – сам Linux, VMs, контейнеры…

• Подсистемы• Group CPU Scheduler

• CPU Accounting Controller

• Cpuset

• Memory

• Block IO Controller

• Device Whitelist Controller

• Freezer

• Namespace

Что такое Docker?

• Docker – контейнерная технология, обеспечивающая…

• Изоляцию процессов используя Linux namespaces

• Ограничение ресурсов используя Linux cgroups

• Управление контейнерной средой через REST API

• Удобный формат упаковки образов, основанный на «многослойной» файловой системе – экономия при передаче и хранении

• Механизм централиизованных репозиториев образов контейнеров (registry)

• Доступен большой публичный репозиторий (Docker hub) образов (включая сертифцированные) и возможность поддержания частных репозиториев (private registry)

Docker образ состоит из файловых систем,

наложенных (layered) друг на друга

Драйвер файловой системы отвечает за их

представление как единой файловой

системы

При запуске контейнера Docker создаёт пустой

read-write – все изменения происходят в нём

(используется подход copy-on-write)

Эти слои read-only и никогда не

меняются!

В результате, несколько контейнеров могут использовать один образ

Управление Docker контейнерамиСоздание и развёртывание

Base LibsUpdate

DockerImage

Registry

Push

Bin/Libs

App A

PullSource

Repository

Dockerfile

Build Host

Docker Engine

Build

Target Host

Docker Engine

Bin/Libs

App A

App B

App C

Контейнерная экосистема

Infrastructure

Runtime

Orchestration

Kubernetes

Platform-as-a-

Service

Nomad

Public

Cloud

Применения контейнеров

Контейнеры как механизм «упаковки» приложений:Подготовить однажды – внедрить где угодно

• Контейнеры сочетают контент (“RPM”) и контекст (среда, в которой RPM должен быть развёрнут)

• Решает проблему управления зависимостями

• Идеальный механизм для переноса прикладных компонент по конвееру разработки-тестирования-внедрения

Упакованное

приложение

Configuration

Environment

Variables

Process

Bootstrap

Filesystem

mounts

Pseudo

terminals

Networking

Security

Dependency

Packages Dependency

Packages Dependency

Packages

Что такое микросервисы?

• Маленький «кусочек» ПО

• Без поддержания состояния

• Слабо связаны (черех API)

• Независимость от языка/технологии

• Масштабируемость и отказоустойчивость

• Контейнеры – идеальная платформа для микросервисов

• Минимальные накладные расходы

• Скорость запуска

• Лёгкость обновления

• Переносимость в облака

Пример приложения на основе микросервисов

Ref. Microservices Patterns

Chris Richardson

Микросервисы на практике

Контейнерная оркестрация

Надеюсь, вы не управляете контейнерами в продуктивной среде так...

$ ssh host1

host1# docker run container

$ ssh host2

host2# docker run container

$ ssh host3

host3# docker run container

Host / VM 1

Docker Engine

Container

Host / VM 2

Docker Engine

Container

Host / VM 3

Docker Engine

Container

Базовые функции контейнерного оркестратора

• Объединение хостов в единый управлемый кластер

• Планирование запуска контейнеров на хостах кластера

• Организация сетевого взаимодействия между контейнерами на разных хостах и с внешним миром

• Связь контейнеров и хранения

• Связь однородных контейнеров в конструкции более высокого уровня

• Контроль и оптимизация использования ресурсов

Container

Kubernetes

Load Balancing

Health Checks Log Aggregation / Access

Developer API

$kubectl scale deployment <name> --replicas=3

Как выглядит использование оркестратора

Container Container

Контейнерные оркестраторы

• Docker Swarm - контейнерный оркестратор от Docker, Inc. Часть Docker Engine.

• Kubernetes - инициирован Google, сейчас – проект Cloud Native Computing Foundation .

• Mesos Marathon – решение для масштабируемого управления контейнерами на основе Apache Mesos.

• Amazon EC2 Container Service (ECS) – сервис AWS для запуска Docker контейнеров в масштабируемой инфраструктуре

• Hashicorp Nomad - контейнерный оркестратор, разработанный HashiCorp.

Что такое Kubernetes (K8s)?

• Контейнерный оркестратор

• Запуск и управление контейнерами

• Поддерживается различными облачными средами

• Основан на опыте и внутрених системах Google(Borg)

• 100% Open source, написан на Go

• Богатая экосистема плагинов для планирования, хранения, сети

• Использует Docker (обычно) для выполнения контейнеров

Worker Node(s)

Kubelet Kube-Proxy

PodPod

Container

Master(s)

Kubernetes Master

Node(s)

Docker Enterprise: поддерживает Kubernetes

Image source: https://www.docker.com/kubernetes

Mesosphere DC/OS: поддержвает Kubernetes

Image Source: https://mesosphere.com/blog/kubernetes-dcos/

Cloud Foundry: поддерживает Kubernetes

Image Source: https://www.cloudfoundry.org/container-runtime/

Компоненты Kubernetes

34

API сервер Pod

Один или несколько контейнеров, работающих вместе и использующих

один IP адрес

Контроллеры

(ReplicaSet, Services, DNS, Kubelet)

Концепции Kubernetes

Deployment

Pod

Pod

Pod

Service

Cluster

Namespace

Deployment

Pod

Pod

Pod

Service

• Кластер: вся инсталяция Kubernetes

• Namespace: пространство имён (не

означает безопасност или изоляции)

• Pod: ”контейнер”

• Deployment: реплицированный набор

Pod-ов

• Service: набор Pod-ов и способ

доступа к ним

External

Интеграция Cisco ACI с контейнерными средами

Фабрика с поддержкой нескольких гипервизоров

• Заказчик не ограничен в выборе

платформы виртуализации: VMWare,

Microsoft, RedHat Virtualization,

KVM/OpenStack или

невиртуализированных серверов

• Возможность использования

нескольких VMM в одной группе EPG

• Интегрированный шлюз для VLAN и

VxLAN сетей

• Не требуется дополнительное

лицензирование

• Поддержка контейнеров: Kubernetes,

OpenShift, Cloud Foundry

Интеграция с физическим

и виртуальным миром

Сетевой

администратор

Администратор

приложения

ФИЗИЧЕСКИЙ

СЕРВЕР

VLAN

VXLAN

VLAN

NVGRE*

VLAN

VXLAN

VLAN

ESX Hyper-V KVM

Управление

гипервизором

ACI фабрика

APIC

APIC

Варианты внедрения контейнеров на Cisco ACI

Contiv и Cisco ACI

Application

Intent

Compute Storage Compute

Operational

Intent

NETWORK

Deploy any container platform

over ACI (overlay, routed, etc.)

Непосредственная

интеграция контейнерной

оркестрации с ACI

(“Contv-ACI”)

OpFlex Proxy

Расширение политик ACI на Docker контейнерыПроект Contiv: Open Source интеграция Docker с APIC

Docker

Kubernetes

Openshift

Управление

контейнерами

Скоро!

Единый механизм автоматизации и применения политик

во всех средах – серверы, VM, контейнеры

• Open source проект по определению

политик для внедрения контейнеров

• Богатый набор корпоративных функций и

вариантов внедрения

• Первый сертифицированный сетевой

plugin в Docker Store

• Включает интеграцию с APIC API

• Применение политик в ПО (на любой сети)

или в ACI (производительность и видимость)

• Политики ACI теперь могут быть внедрены

для физических серверов, виртуальных

машин и Docker контейнеров

Проект Contiv

Возможности решения

Contiv Master

Contiv APIC Plugin

OVS Contiv Plugin

HYPERVISORHYPERVISORHYPERVISORDocker Host

http://contiv.github.io

Взаимодействие гипервизоров с ACIКонцепция VMM Domain

VMM домен – точка интеграции ACI со

средой виртуализации

Несколько VMM могут подключаться к одной

ACI фабрике

Отношение 1:1 между виртуальным

коммутатором и VMM Domain-ом

В виртуальной среде EPG может

представлять собой порт-группу

виртуального коммутатора, к которой

подключен vNIC виртуальной машины

VMM применяет политики к сетевым

интерфейсам виртуальных машин с

использованием следующих объектов:

Port Groups (VMware)

VM Networks (Hyper-V)

Networks (OpenStack)

vCenter DVS SCVMM

VMM Domain 1

vCenter AVS

VMM Domain 2 VMM Domain 3

Интеграция ACI с Kubernetes и OpenShift

Изоляция тенантов и интеграция сетевых

политик Kubernetes и политик ACI

Видимость: мониторинг в APIC на

уровне контейнеров и отслеживание

«здоровья»

Единый транспорт для контейнеров, VM и

невиртуализированных серверов

Интегрированная в фабрику балансировка

нагрузки между микросервисами для

отказоустойчивости и масштабирования

ACI и контейнеры

Используются существующие APIC,

не нужен новый контроллер

Node

OpFlex OVS

Kubernetes

ACI Policies

Network Policy

Node

OpFlex OVS

Интеграция ACI с Kubernetes и OpenShift

Node

OpFlex OVS

Kubernetes

ACI Policies

Техническое описаниеNetwork Policy

Node

OpFlex OVS

• Поддержка сетевых политик Kubernetes используя

стандартный интерфейс, но с программированием через

OpFlex / OVS используя APIC Host Protection Profiles

• Конфигурации приложений в Kubernetes могут быть

перенесены без изменений между ACI и другими

средами

• Интеграция балансировки нагрузки

• PBR в фабрике для баленсировки внешних сервисов

• OVS для балансировки внутренних сервисов

• VMM домен для Kubernetes

• Статистика для namespace, deployment, service, pod

• Корреляция физических хостов и контейнеров

Интерфейс ACI – контейнерный домен

APIC keeps inventory of pods

and their metadata (labels,

annotations), deployments,

replicasets, etc.

View pods per node, map to

encapsulation, physical point

in the fabric.

Fabric admin can search

APIC for k8s nodes, masters,

pods, services …

Контейнеры/pod-ы включенные в EPG

Изоляция кластера

Различные подходы к определению EPG

Изоляция namespace Изоляция deployment

Pod

Pod

Pod

Pod

Pod

Pod

• Единая EPG для всего кластера

Kubernetes

• Для внутреннего

взаимодействия не нужны

контракты

• Каждое namespace – своя EPG

• Для взаимодействия нужны

контракты

• Каждое deployment – своя EPG

• Жёсткий контроль с помощью

контрактов

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Contra

ct

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Pod

Contra

ct

Contract

Contract

Co

ntra

ct

EPG

Network

Policy

46BRKACI-2505

Contiv 1.0 и Contiv-ACI

Contiv 1.0 в ACI режиме

Docker 1.12+

Support

OpenShift 3.4+

Integration

Physical Domain /

REST API

Contiv-ACI

Open Source at github.com/contiv

Kubernetes 1.6-1.8

VMM Domain /

OpFlex

OpenShift Integration

Contiv Solutions

Support

Контейнерное решение Cisco Container Platform

Проблемы использования контейнеров

Множество Open Source решений

Гибридные среды

Сложность контейнерных сред

Сеть, безопасность,хранение

Source: CNCF Survey, January and June 2017

Тренды в области контейнеров

Рост популярности контейнеров не только в публичных облаках, но и в собственных ЦОД

Kubernetes выходит в лидеры решений контейнерной оркестрации

© 2018 Cisco and/or its affiliates. All rights reserved. Cisco Confidential

Legacy

Services

Apps | Data

Cloud Native

Apps

Локальное внедрение

Google Kubernetes

Engine

Google Cloud

Istio: Multi-cloud

Service

Management

Сеть | Безопасность | Частное облако | Управление потреблением

Private Cloud

infrastructureHyperFlex

Container

Appliance

Cisco ACI:

Intent-based

Networking

Представляем Cisco Container PlatformГибридное облачное решение Cisco и Google

Решение «под ключ»

HyperFlex Data Platform + ACI

On-prem KubernetesCisco Container Platform

Container StorageHyperFlex Flex Volumes

Container NetworkingContiv

Curated Cisco stack to deliver Container-as-a-Service

Developer ready and Developer friendly (same K8s CLI/APIs)

Policy based Networking and security with micro-segmentation

Enterprise grade container storage with data persistency

K8s Lifecycle ManagementDocker Runtime EngineAuthN / AuthZ with ADLogging / monitoring

App load balancing with nginx

Cisco Container Platform на HyperFlex

Cisco Container Platform FeaturesОткрытость и готовность «под ключ» • Автоматическая инсталляция/апгрейд используя virtual

appliance

• Open Source компоненты (Kubernetes и др.)

• Отобранный и валидированный стек ПО/железа

• Мульти-кластерное программное управление

• Поддерживается Cisco

Управление Day-0 и Day-N • Обновления, апгрейды, масштабирование

Богатая функциональность сети и

безопасности

• Бесшовная интеграция контейнеров (Contiv-VPP, Contiv-ACI)

• Сетевая сегментация на основе политик

• «Жёсткая» изоляция тенантов

• Role Based Access Control

Готовое решение по хранению • Интеграция с гиперконвергентным хранением на Hyperflex

Гибкость развёртывания • Внедрение на ESX

• Внедрение на Bare Metal*

• Внедрение на KVM*

Поддержка гибридных облаков • Связь внедрения в ЦОД и public cloud

• Ключевой элемент партнёрства Cisco/Google

Архитектура Cisco Container Platform

Control Plane Data Plane

VM VM VM

Control Plane Kubernetes

Auto

mation

Orc

hestr

ation

Opera

tions

HX ConnectCluster/

Machine

Controllers

VM VM VM

Cluster 1 Kubernetes

Clu

ste

r 1

Work

loads

Clu

ste

r 1

Ops

Pod

Pod

Pod

VM VM VM

Cluster 2 Kubernetes

Clu

ste

r 2

Work

loads

Clu

ste

r 2

Ops

Pod

Pod

Pod

Kubernetes Fluentd Prometheus Kibana Hyperflex Contiv

Storage (Hyperflex)

Networking (Nexus 9K)

Compute Hardware (UCS)

Hypervisor Layer (Hyperflex/VMW)

CCP – CP1

K8S-Red

K8S-Blue

vCenter

PG10

PG20

PG30

100.1.1.0/28

100.1.2.0/24

100.1.3.0/24

HX vSphere Cluster

ASR1K or any L3 GW

Leaf e.g. N93xx

Spine e.g. N95xx 100.1.x.x

Cisco Container PlatformИнтеграция хранения на HyperFlex

Оцените данную сессию в мобильном приложении

конференции

• www.facebook.com/CiscoRu

• www.instagram.com/ciscoru

• www.youtube.com/user/CiscoRussiaMedia

• www.vk.com/cisco

Спасибо за внимание!

Контакты:

Тел.: +7 495 9611410www.cisco.com

Recommended