View
21
Download
0
Category
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