Виртуализация, контейнеризация презентация

Содержание

Слайд 2

План занятия
Рассмотрение основных понятий и определений.
Введение в системы виртуализации и контейнеризации
Типы систем

виртуализации. Популярные решения.
Описание систем контейнеризации
Итоги.
Домашнее/практическое задание.
По итогу занятия вы сможете получить представления о том, что представляют из себя системы виртуализации и контейнеризации, их отличия, особенности применения на практике. Закрепите на практическом уровне данный материал.

Слайд 3

Виртуализация

Слайд 4

Введение в системы виртуализации и контейнеризации
- Определение терминов
-Различия между виртуализацией и контейнеризацией
-

Почему виртуализация и контейнеризация важны для IT-инфраструктуры

Слайд 5

Определение терминов

Виртуализа́ция — предоставление набора вычислительных ресурсов или их логического объединения, абстрагированное от

аппаратной реализации, и обеспечивающее при этом логическую изоляцию друг от друга вычислительных процессов, выполняемых на одном физическом ресурсе.
Контейнеризация — метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя вместо одного. Эти экземпляры с точки зрения выполняемых в них процессов идентичны отдельному экземпляру операционной системы.
Паравиртуализация — техника виртуализации, при которой гостевые операционные системы подготавливаются для исполнения в виртуализированной среде, для чего их ядро незначительно модифицируется.

Слайд 6

Определение терминов

Простыми словами Виртуализация — это создание изолированных окружений в рамках одного физического

устройства.
Каждое окружение выглядит, как отдельный компьютер со своими характеристиками (доступная память, процессор и тп.)
Такое окружение называют набором логических ресурсов или виртуальной машиной. ОС, внутри которой стартует другая ОС, называется хостовой системой, (host). А ОС, которая работает в виртуальном окружении — гостевой (guest).

Слайд 7

Основные понятия

Гипервизор – специальное программное обеспечение, позволяющее создавать виртуальные машины и управлять ими.
Виртуальная

машина (далее VM) – изолированная система, которая представляет собой логический сервер внутри физической машины со своим набором вычислительных мощностей и операционной системой.
Хост виртуализации (родительский сервер) — физический сервер с запущенным на нем гипервизором.
Гипервизор может управлять виртуальными машинами не обязательно в рамках одного физического сервера, а в целом кластере физических серверов, в таком случае один родительский сервер, на котором непосредственно находится виртуальная машина, может называться узел кластера.

[ссылка на источник]

Слайд 8

Типы виртуализации

Аппаратная
Программная (на уровне ОС)
Контейнерная (контейнеризация)
Хостинговая (облачная)

Слайд 9

Почему виртуализация и контейнеризация важны для IT-инфраструктуры
Используя виртуализацию, вы можете взаимодействовать с любым

аппаратным ресурсом с большей гибкостью. Физические серверы потребляют электроэнергию, занимают место для хранения и нуждаются в обслуживании. Доступ к ним часто ограничивается физической близостью и дизайном сети. Виртуализация позволяет устранить все эти ограничения путем абстрагирования функциональных возможностей физического оборудования в программное обеспечение. Вы можете контролировать, обслуживать и использовать свою аппаратную инфраструктуру в качестве веб-приложения.

[ссылка на источник]

Слайд 10

Пример виртуализации

Рассмотрим компанию, которой нужны серверы для выполнения трех функций:
безопасное хранение корпоративной электронной

почты;
запуск клиентских приложений;
запуск внутренних бизнес-приложений.
У каждой из этих функций разные требования к конфигурации. 
Для приложений электронной почты требуется большой объем хранилища и операционная система Windows.
Для клиентских приложений требуется операционная система Linux и высокая вычислительная мощность для обработки больших объемов трафика веб-сайта.
Для внутренних бизнес-приложений требуется iOS и большой объем внутренней памяти (ОЗУ).
Чтобы соответствовать этим требованиям, компания устанавливает три разных выделенных физических сервера для каждого приложения. Компания должна делать большие первоначальные инвестиции и выполнять текущее обслуживание и модернизацию одной машины за раз. Кроме того, компания не может оптимизировать свои вычислительные мощности. Она оплачивает 100 % стоимости обслуживания серверов, но использует лишь часть их мощностей хранения и обработки.

[ссылка на источник]

Слайд 11

Преимущества использования ВРТ

С помощью виртуализации компания создает три цифровых сервера или виртуальные машины

на одном физическом сервере. Она определяет требования к операционной системе для виртуальных машин и может использовать их как физические серверы. Однако теперь у компании меньше аппаратного обеспечения и меньше связанных с этим расходов. 
Каковы преимущества виртуализации?
Эффективное использование ресурсов
Виртуализация повышает эффективность аппаратных ресурсов, используемых серверных. Благодаря меньшему количеству базовых физических серверов можно освободить место в помещении и сэкономить деньги на электричестве, генераторах и охлаждающих устройствах. 
Автоматизированное управление ИТ
Теперь, когда физические компьютеры стали виртуальными, появилась возможность управлять ими с помощью программных инструментов. Администраторы создают программы развертывания и настройки для определения шаблонов виртуальных машин. Вы можете постоянно и последовательно дублировать свою инфраструктуру и избегать настроек вручную, подверженных ошибкам (например, Vagrant) .
Быстрое аварийное восстановление
Когда такие события, как стихийные бедствия или кибератаки, отрицательно сказываются на бизнес-операциях, восстановление доступа к ИТ-инфраструктуре, а также замена или ремонт физических серверов могут занять часы или даже дни. А в виртуализированной среде этот процесс занимает всего несколько минут. Оперативное реагирование значительно повышает отказоустойчивость и способствует непрерывности бизнес-процессов, чтобы операции могли продолжаться по расписанию.  

[ссылка на источник]

Слайд 12

Преимущества использования ВРТ

- Эффективное использование аппаратных ресурсов
- Быстрое развертывание и масштабирование
- Повышенная безопасность
-

Упрощение управления приложениями

[ссылка на источник]

Слайд 13

Чем виртуализация серверов отличается от контейнеризации?

Контейнеризация – это способ развертывания кода приложения для запуска

в любой физической или виртуальной среде без изменений. Разработчики связывают код приложения с соответствующими библиотеками, файлами конфигурации и другими зависимостями, которые необходимы коду для запуска. Этот единый пакет программного обеспечения, который называется контейнером, может работать независимо на любой платформе. Контейнеризация – это тип виртуализации приложений.
Виртуализация серверов напоминает строительство дороги для соединения двух мест. Необходимо воссоздать всю виртуальную среду, а затем запустить в ней свое приложение. Для сравнения, контейнеризация напоминает создание вертолета, который может прилететь в любое из этих мест. Ваше приложение находится внутри контейнера и может работать в физической или виртуальной среде любого типа.
Виртуальная машина (ВМ) — абстракция на уровне физического оборудования, превращает один сервер в несколько.
Контейнер — абстракция на уровне приложения, объединяет зависимости и код.

[ссылка на источник]

Слайд 14

[ссылка на источник]

Чем виртуализация серверов отличается от контейнеризации?

Слайд 15

Типы виртуализации

Аппаратная виртуализация работает благодаря поддержке со стороны железа: процессора.
В отличие от

программной виртуализации, гостевые ОС управляются гипервизором напрямую, без участия хостовой ОС.
+ Работает без посредников.
- Привязана к платформе: нет технологии — нет виртуализации.

Слайд 16

Типы виртуализации – Аппаратная ВРТ

[ссылка на источник]

Слайд 17

Типы виртуализации – Аппаратная ВРТ

История создания аппаратной виртуализации
Первая аппаратная виртуализация Intel была воплощена

в 386-х процессорах и носила название V86 mode. Этот режим работы 8086-го процессора позволял запускать параллельно несколько DOS-приложений.
Следующее это было появление многозадачности. Она является первым уровнем абстракции приложений. Каждое приложение распределяет ресурсы физического процессора в режиме разделения исполнения кода по времени.

Слайд 18

Типы виртуализации – Аппаратная ВРТ

Следующим шагом аппаратной виртуализации было появлении технологии HyperThreading, который

представляет собой аппаратную технологию виртуализации: при ее использовании происходит симуляция двух виртуальных процессоров в рамках одного физического с помощью техники Symmetric Multi Processing (SMP).

Слайд 19

Типы виртуализации – Аппаратная ВРТ

[ссылка на источник]

Слайд 20

Типы виртуализации – Аппаратная ВРТ

[ссылка на источник]

Слайд 21

Типы виртуализации – Аппаратная ВРТ

Технологии аппаратной виртуализации по производителям:
Intel — VT-x VT-d VMDQ


AMD — AMD-V
ARM Limited — EL2
Данные технологии обладают своими специфическими инструкциями и режимами работы процессоров для управлениями виртуализацией. В свою очередь для работы программной виртуализации процессор должен обладать специальными инструкциями.

[ссылка на источник]

Слайд 22

Программная виртуализация

Программная виртуализация (на уровне ОС) —в которой деление аппаратных ресурсов физического сервера

осуществляется ОС. Из-за этого все виртуальные машины используют общее программное ядро. Из этого следует главное требование для программной виртуализации — ОС виртуальных машин должна поддерживать программное ядро операционной системы физического сервера.

Слайд 23

Программная виртуализация

[ссылка на источник]

Слайд 24

Преимущества и недостатки гипервизоров 

[ссылка на источник]

Слайд 25

[ссылка на источник]

Слайд 26

Популярные гипервизоры

Virtuozzo  OpenVZ
Тип виртуализации — программная.
Использование — базовые VM для тестов, недорогой хостинг. Распространение

— бесплатная базовая версия (OpenVZ), платные с расширенным набором функций.
Плюсом использования гипервизора выступает быстрый запуск и простота развертки необходимого количества виртуальных машин — особенность всех решений программного типа. К преимуществам также относится — быстрый доступ с хост-сервера и понятное управление. В свое время, эти достоинства вкупе с доступностью решения помогли гипервизору завоевать огромную популярность у пользователей.
При этом гипервизор имеет и ряд серьезных недостатков - работа виртуальных машин часто нестабильна из-за влияния «соседей» по родительскому серверу, а автоматическое распределение ресурсов бывает неравномерным.
Кроме того, платное решение от Virtuozzo — дорогое, а бесплатный OpenVZ не поддерживает современные ядра Linux, что сильно ограничивает выбор ОС для установки на виртуальные машины. Поэтому сегодня гипервизор уже не так популярен, как раньше.

[ссылка на источник]

Слайд 27

Популярные гипервизоры

Xen (XenServer, Citrix Hypervisor)
Тип виртуализации — аппаратная, гибридная.
Использование — решение кроссплатформенных задач,

хостинг различных конфигураций.
Распространение — платные и бесплатные редакции.
Первый публичный релиз такого гипервизора был выпущен в 2003 году. В 2007 году проект был поглощен Citrix. Продукт является кроссплатформенным гипервизором с поддержкой аппаратной виртуализации и паравиртуализации (из-за этого его часто относят к гибридным гипервизорам). Объем кода минимален, так как большая часть модулей идет отдельно от гипервизора. Исходный код — открытый, это дает специалистам широкие возможности для модификаций.

[ссылка на источник]

Слайд 28

Популярные гипервизоры

Oracle VM VirtualBox
Тип виртуализации — программная и аппаратная
Использование — среда для тестирования

разработчиками разного уровня, настольное решение по развертке виртуальных машин
Распространение — бесплатно
Кроссплатформенный гипервизор для операционных систем Linux, macOS, FreeBSD и др. Базовая версия с открытым исходным кодом распространяется по лицензии GNU GPL, чем объясняется высокая популярность гипервизора. Отличительная особенность гипервизора — возможность работы с 64-битными гостевыми ОС, даже если ОС хоста 32-битная. Является одним из самых популярных решений для тестов различных ОС и приложений под них в рамках локального компьютера разработчика или тестировщика, но одним из самых неудобных решений в плане автоматизации создания виртуальных машин и использования их для хостинга.

[ссылка на источник]

Слайд 29

Популярные гипервизоры

Microsoft Hyper-V
Тип виртуализации — аппаратная.
Использование — виртуальные машины с Windows, использование иных

продуктов Microsoft.
Распространение — платно.
Стандартно в ОС Windows Server есть роль для установки Hyper-V, которая позволяет создавать виртуальные машины (две в редакции Windows Standard и неограниченно в редакции Datacenter). Здесь стоит учитывать лицензионную политику Microsoft — стоимость лицензий отличается для разных редакций и зависит от количества физических ядер. Гипервизор Hyper-V Server создавался специально для того, чтобы пользователи могли организовать виртуализацию без оплаты лицензии на ОС. Однако это не относится к ОС Windows на виртуальных машинах — если разворачиваете ее на VDS, то лицензирование обязательно. 

[ссылка на источник]

Слайд 30

Популярные гипервизоры

VMware ESXi
Тип виртуализации — аппаратная.
Использование — тестирование функций, решение для локальной развертки

виртуальных машин, хостинг определенных конфигураций.
Распространение — платно, присутствует бесплатная версия.
В основе гипервизора находится упрощенное Linux-ядро VMkernel, с необходимыми для виртуализации технологиями и приложениями. Входит в продукт VMware vSphere. Лицензия приобретается на каждое физическое ядро процессора сервера. Объем ОЗУ и виртуальных машин не учитываются при расчете стоимости лицензии.
VMware также предлагает и бесплатные решения для виртуализации, однако, они подходят только для любительского или полупрофессионального использования, поскольку имеют ряд существенных ограничений по функционалу (ограничения на операции, ограничения на ресурсы виртуальных машины, недоступные функции и т.д.).

[ссылка на источник]

Слайд 31

Популярные гипервизоры

QEMU KVM
Тип виртуализации — аппаратная.
Использование — быстрый и упрощенный переход к виртуализации

на Linux-системах, хостинг различных конфигураций.
Распространение — бесплатно.
Open-source гипервизор: предназначен для серверов на базе Linux/x86, поддерживает аппаратные расширения (Intel-VT и AMD-V). Первоначально работал только с архитектурой x86, но актуальные версии KVM поддерживают различные CPU и гостевые ОС, в т.ч. Windows, Linux, BSD и пр. Богатая функциональность KVM сделала его популярным и широко распространенным.
В настоящее время гипервизор активно используется во многих сетевых проектах.

[ссылка на источник]

Слайд 32

Виртуализация KVM

KVM (Kernel-based Virtual Machine) — технология аппаратной виртуализации, позволяющая создать на хост-машине

полный виртуальный аналог физического сервера. KVM позволяет создать полностью изолированный от «соседей» виртуальный сервер с собственным ядром ОС, который пользователь может настраивать и модифицировать под собственные нужды без ограничений. Каждому такому серверу выделяется своя область в оперативной памяти и пространство на жестком диске, что повышает общую надежность работы такого сервера. Разработка REDHAT.
Отличительная особенность — open-source гипервизор: предназначен для серверов на базе Linux/x86, поддерживает аппаратные расширения (Intel-VT и AMD-V).
Преимущества KVM
Высокий уровень приватности.
Независимость ресурсов друг от друга.
Возможность установки собственной ОС.
Безопасность KVM можно усилить с помощью антивирусов.
Эмуляция сетевых карт, поддержка всех протоколов и firewall.

[ссылка на источник]

Слайд 33

Виртуализация KVM

Начиная с версии ядра 2.6.20, KVM является основной составляющей Linux.
То есть,

если у вас установлен обычный Linux, то у вас уже присутствует KVM.
Необходимым условием для использования KVM является поддержка одной из инструкций виртуализации — Intel VT-x, AMD-V или ARP с поддержкой EL2

Слайд 34

Виртуализация KVM

KVM позволяет виртуальным машинам использовать немодифицированные образы дисков QEMU, VMware и других,

содержащие ОС.
Каждая виртуальная машина имеет свое собственное виртуальное аппаратное обеспечение:
● сетевые карты,
● диск,
● видеокарта,
● и другие устройства.

Слайд 35

Виртуализация KVM

[ссылка на источник]

Слайд 36

Виртуализация libvirt

libvirt — свободная реализация API, демон и набор инструментов для управления виртуализацией.


Позволяет управлять гипервизорами Xen, KVM, VirtualBox, OpenVZ, LXC, User-mode Linux, VMware ESX/GSX/Workstation/Player, QEMU, Hyper-V, PowerVM[en], Parallels Workstation, bhyve[en] и рядом других средств виртуализации, предоставляет возможность контролировать виртуальные машины по сети, расположенные на других компьютерах. Эти API широко используются в слоях гипервизоров при разработке облачных решений.

[ссылка на источник]

Слайд 37

Виртуализация libvirt

[ссылка на источник]

Слайд 38

Виртуализация libvirt

Проверяем активирована ли KVM
lsmod | grep lvm
Если ничего не выводиться, то включите

модуль KVM
modprobe kvm
или
modprobe kvm_intel # или modprobe kvm_amd
Для управления виртуальными машинами из командой строки используется утилита virsh. Если есть созданная ВМ в хостовой ОС, то выполните команду для вывода списка гостевых ВМ.
virsh list
Для использование GUI — утилита virt-manager.

[ссылка на источник]

Слайд 39

Виртуализация libvirt

1. Создание пустой виртуальной машины:
sudo virt-install \
--name my_vm \
--memory 2048 \
--vcpus 2

\
--disk size=10 \
--os-type linux \
--os-variant ubuntu20.04 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial

[ссылка на источник]

Слайд 40

Виртуализация libvirt

2. Создание виртуальной машины из ISO образа:
sudo virt-install \
--name my_vm \
--memory 2048

\
--vcpus 2 \
--disk path=/var/lib/libvirt/images/my_vm.qcow2,bus=virtio,size=10 \
--os-type linux \
--os-variant ubuntu20.04 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--cdrom /path/to/ubuntu20.04.iso

[ссылка на источник]

Слайд 41

Виртуализация libvirt

3. Установка виртуальной машины из ISO образа:
virt-install --name myvirtmachine \
--location ~/Downloads/имяскаченногообраза.iso

\
--memory=1024 \
--vcpus=1 \
--disk size=8

[ссылка на источник]

Слайд 42

Виртуализация libvirt

3. Установка виртуальной машины из ISO образа:
sudo virt-install \
--name my_vm \
--memory 2048

\
--vcpus 2 \
--disk path=/var/lib/libvirt/images/my_vm.qcow2,bus=virtio,size=10 \
--os-type linux \
--os-variant ubuntu20.04 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--cdrom /path/to/ubuntu20.04.iso \
--boot cdrom,hd

[ссылка на источник]

Слайд 43

Виртуализация libvirt

4. Управление виртуальной машиной:
# Запустить виртуальную машину
sudo virsh start my_vm
# Остановить виртуальную

машину
sudo virsh shutdown my_vm
# Перезапустить виртуальную машину
sudo virsh reboot my_vm
# Показать список виртуальных машин
sudo virsh list
# Показать информацию о виртуальной машине
sudo virsh dominfo my_vm
# Получить консольную сессию виртуальной машины
sudo virsh console my_vm

[ссылка на источник]

Слайд 44

Виртуализация QEMU

QEMU — QEMU (Quick Emulator) - это бесплатный и открытый эмулятор, который

позволяет запускать программы или операционные системы на разных архитектурах и платформах. QEMU может эмулировать множество аппаратных платформ, включая ARM, PowerPC, MIPS, x86, x86-64 и др. и может работать на различных операционных системах, таких как Windows, Linux, macOS и др.
QEMU используется как для разработки ПО, так и для тестирования программ и операционных систем. Он может также использоваться для отладки кода, виртуализации, эмуляции сети и т.д.
Кроме того, QEMU поддерживает методы виртуализации, такие как KVM (Kernel-based Virtual Machine), что позволяет запускать виртуализированные приложения на максимальной скорости, не затрачивая много ресурсов.
Включает в себя эмуляцию процессоров Intel x86 и устройств ввода-вывода. Может эмулировать 80386, 80486, Pentium, Pentium Pro, AMD64 и другие x86-совместимые процессоры; ARM, MIPS, RISC-V, PowerPC, SPARC, SPARC64 и частично m68k.
Работает на Syllable, FreeBSD, OpenBSD, FreeDOS, Linux, Windows 9x, Windows 2000, Mac OS X, QNX, Android и др.

[ссылка на источник]

Слайд 45

Виртуализация QEMU – режимы работы

Полная эмуляция системы — полностью эмулирует устройство, включая все

его компоненты, процессор и различные периферийные устройства. Он может использоваться для запуска нескольких ОС без перезагрузки или отладки системного кода.
Эмуляция пользовательского режима — работает только для Linux хоста, позволяет запускать процессы Linux, скомпилированные для одной архитектуры в другой, например, ARM программы в x86. Полезно для разработки, кросскомпиляции и отладки.

[ссылка на источник]

Слайд 46

Виртуализация - Установка QEMU

Установка
Debian:
sudo apt install qemu-kvm qemu qemu-system
CentOS:
sudo

yum install qemu-kvm qemu qemu-system
ArchLinux:
sudo pacman -i qemu-kvm qemu qemu-system
FreeBSD:
cd /usr/ports/emulator/qemu make && make install && make install clean

Слайд 47

Виртуализация - QEMU

Группы команд эмулятора qemu :
● qemu-архитектура — эмуляция окружения пользователя

для указанной архитектуры;
● qemu-system-архитектура — эмуляция полной системы для архитектуры;
● qemu-img — утилита для работы с дисками;
● qemu-io — утилита для работы с вводом/выводом на диск;
● qemu-user — оболочка для qemu-архитектура, позволяет запускать программы других архитектур в этой системе;
● qemu-system — оболочка для qemu-system-архитектура, позволяет полностью эмулировать систему нужной архитектуры.

Слайд 48

Виртуализация - QEMU

Синтаксис команды:
qemu-system параметры
Демонстрация создания виртуальной машины: qemu-img create -f

qcow2 test 1G
qemu-system-x86_64 -hda ubuntu.qcow -boot d -cdrom ~/downloads/name_iso.iso -m 640

Слайд 49

Виртуализация - GNS 3

Graphical Network Simulator —
это бесплатный графический симулятор сети, который

позволяет смоделировать виртуальную сеть из маршрутизаторов и виртуальных машин, например Cisco, Cisco ASA, Juniper, а также серверов под управлением сетевых операционных систем.
Незаменимый инструмент для обучения и тестов. Работает практически на всех платформах. Отлично подходит для создания стендов на десктоп машинах.

Слайд 50

Виртуализация - GNS 3

[ссылка на источник]

Слайд 51

Контейнеризация

Слайд 52

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

Контейнеризация в информационных технологиях означает использование виртуальных контейнеров для запуска и управления приложениями.


Существует несколько видов контейнеризации, которые различаются по используемой технологией.

Слайд 53

Для чего нужна контейнеризация

для изолированного запуска приложений и рабочих сред вне зависимости от

системы и ПО, установленных на конкретной машине;
контроля ресурсов и снижения нагрузки на систему;
разрешения конфликтов, которые могут возникнуть из-за того, что разные приложения нуждаются в различных версиях ПО или библиотек;
быстрого перемещения настроенных приложений и сред с одной машины на другую;
создания удобной рабочей инфраструктуры;
ускорения процесса разработки и снижения риска ошибок;
масштабирования готовых решений;
легкого управления сложными приложениями, средами и системами. 

[ссылка на источник]

Слайд 54

Виды контейнеризации

1. Docker - самый популярный вид контейнеризации. Docker использует контейнеры, которые

изолируют приложения и их зависимости от других приложений на сервере. Контейнеры Docker могут быть запущены на любом сервере, где есть установленный Docker.
2. Kubernetes - контейнеризация, предназначенная для управления контейнерами Docker. Kubernetes позволяет автоматически масштабировать приложения, управлять ресурсами и запускать контейнеры на разных серверах.
3. LXC - контейнеризация, которая использует технологию виртуализации на уровне операционной системы. LXC позволяет запускать несколько виртуальных машин на одном физическом сервере и изолировать их от других машин.
4. OpenVZ - контейнеризация, основанная на технологии виртуализации на уровне операционной системы. OpenVZ позволяет создавать несколько виртуальных машин на одном физическом сервере и изолировать их друг от друга.
5. Containerd - это бывшая часть Docker, а ныне самостоятельное решение, реализующее исполняемую среду для запуска контейнеров.
6. FreeBSD jail - FreeBSD Jail — механизм виртуализации в системе FreeBSD, позволяющий создавать внутри одной операционной системы FreeBSD несколько независимо работающих FreeBSD на том же ядре операционной системы, но совершенно независимо настраиваемых с независимым набором установленных приложений
7. Solaris Containers — реализация технологии виртуализации на уровне операционной системы, представленная корпорацией Sun Microsystems в 2005 для Solaris 10. Зоны работают как полностью изолированные виртуальные серверы внутри одного экземпляра операционной системы.

Слайд 55

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

Ближайшая аналогия для контейнера — ящики с грузом, которые можно поставить

где угодно. На их содержимое не влияют условия снаружи. Только внутри контейнера может запуститься и работать приложение. Оно будет исполняться изолированно от основной системы, не взаимодействуя с ней. Контейнер универсален: его можно развернуть в любой ОС независимо от настроек.
Контейнеры создаются на основе образов, похожих на те, которые используются для установки ОС. Но есть отличие: внутри находится не полноценная операционная система, а минималистичная среда с нужными настройками. Образ запускается в приложении для управления контейнерами, и из него разворачивается контейнер.

[ссылка на источник]

Слайд 56

Особенности технологии контейнеризации

Изолированный запуск
Внутри контейнера — изолированная среда. В ней могут находиться

файлы, библиотеки, установленные приложения со всеми зависимостями и настройками. Даже если настройки и зависимости противоречат имеющимся в основной ОС, ничего страшного. Конфликты не возникнут, так как контейнер изолирует свое содержимое от внешней системы.
Независимость друг от друга
Один контейнер не зависит от другого. Если внутри контейнера A что-то сломается, это не повлияет на работу контейнера B. Они могут общаться друг с другом, передавать данные, но будут работать независимо друг от друга.
Использование ресурсов ОС
Контейнер работает на основе операционной системы. Чаще всего это Linux, потому что популярные решения для контейнеризации разработаны для нее. Контейнер берет ресурсы из операционной системы, для изоляции использует ее технологии. Поэтому контейнер, созданный для запуска в Linux, не будет работать в Windows — там используется другая архитектура.

[ссылка на источник]

Слайд 57

Особенности технологии контейнеризации

Легковесность
Контейнер — относительно легкая структура. Она занимает столько ресурсов, сколько

нужно приложению внутри.
«Одноразовость»
Один экземпляр контейнера — сущность, которая имеет короткий срок жизни. Когда контейнер закрывается, вся информация внутри него стирается. Это похоже на закрытие файла без сохранения. Поэтому при работе с контейнерами важные данные выводят наружу, во внешнюю операционную систему.
А если закрытый контейнер понадобится снова, можно создать другой его экземпляр из того же образа. Так обычно и делают.

[ссылка на источник]

Слайд 58

Что такое оркестраторы

Когда контейнеров десятки или сотни, возможностей ПО вроде Docker Compose не

хватает. В этих случаях используются оркестраторы, или системы оркестрации, — программное обеспечение, которое само управляет множественными контейнерами.
С оркестраторами контейнеры не надо настраивать и конфигурировать вручную. ПО контролирует их работоспособность, включает и отключает, выделяет ресурсы и занимается построением сети. Оркестраторы оптимизируют память, могут запустить одну контейнерную систему на нескольких серверах одновременно и автоматизируют управление ею. Такая программа становится посредником, через которого специалист взаимодействует с инфраструктурой.
«Золотой стандарт» среди оркестраторов — платформа Kubernetes.

[ссылка на источник]

Слайд 59

Преимущества технологии

Контейнеризация дает ряд преимуществ при работе с приложениями и построении инфраструктуры. Поэтому

сейчас ее используют практически во всех сегментах IT.
Запуск сред без конфликтов - без контейнеризации приложения пришлось бы запускать поверх основной ОС. Если в операционной системе одна версия библиотек и программного обеспечения, а приложению нужна другая, возник бы конфликт. В контейнер можно положить все нужные зависимости, включая библиотеки: конфликтов не возникнет.
Контроль ресурсов - продвинутые системы работы с контейнерами умеют распределять между ними мощности, задавать приоритеты, запускать и останавливать, устанавливать связи.

[ссылка на источник]

Слайд 60

Преимущества технологии

Поддержка безопасности - один из плюсов изоляции — повышение безопасности и снижение

риска утечки. Если приложение внутри контейнера выдаст критическую ошибку, окажется скомпрометировано или начнет вести себя вредоносно, это не нарушит работу других программ. Небезопасный код окажется изолирован от других участков системы.
Создание рабочей инфраструктуры - для разработки нужна определенная среда. Без контейнеров ее пришлось бы настраивать вручную для каждой задачи и пользователя.
Построение архитектуры - популярная архитектура приложений — микросервисная. Большое приложение рассматривают как набор маленьких независимых друг от друга сервисов.

[ссылка на источник]

Слайд 61

Версии Docker

Возможность установки Docker есть на все популярные операционные системы: Linux, Windows и

Mac.
Существуют два варианта поставки:
● Enterprise Edition – версия с техподдержкой и различными функциями, которые могут понадобиться крупному энтерпрайзу;
● Community Edition – бесплатная версия с функционалом, достаточным как для наших задач, так и для продакшна.

Слайд 62

[ссылка на источник]

Чем виртуализация серверов отличается от контейнеризации?

Слайд 63

Краткий принцип работы

● Пользователь через какой-либо интерфейс отправляет команды хост-машине, на котором стоит

демон Docker;
● Демон, получая команды, запускает или останавливает Docker контейнеры из Docker Image. Docker Image в свою очередь скачивается из репозитория (реестра) Docker образов (Docker Registry) или заливается в реестр локальных образов;
● Реестр может быть частным или поддерживаемым разработчиками (сайт-сервис Docker Hub) - https://hub.docker.com/
;
● Также Docker Image может быть создан из Dockerfile.

Слайд 64

В поставку Docker входят следующие компоненты:

Docker host — это операционная система, на которую устанавливают Docker и на которой

он работает.
Docker daemon — служба, которая управляет Docker-объектами: сетями, хранилищами, образами и контейнерами.
Docker client — консольный клиент, при помощи которого пользователи взаимодействуют с Docker daemon и отправляют ему команды, создают контейнеры и управляют ими.
Docker image — это неизменяемый образ, из которого разворачивается контейнер.
Docker container — развёрнутое и запущенное приложение.
Docker Registry — репозиторий, в котором хранятся образы.
Dockerfile — файл-инструкция для сборки образа.
Docker Compose — инструмент для управления несколькими контейнерами. Он позволяет создавать контейнеры и задавать их конфигурацию.
Docker Desktop — GUI-клиент, который распространяется по GPL. Бесплатная версия работает на Windows, macOS, а с недавних пор и на Linux. Это очень удобный клиент, который отображает все сущности Docker и позволяет запустить однонодовый Kubernetes для компьютера.
Docker Volumes - это способ, при котором Docker сам создает директории для хранения данных. Их можно сделать доступными для разных контейнеров, чтобы они могли обмениваться данными.

[ссылка на источник]

Слайд 65

Разберем особенности подробнее

Образ Docker (Docker Image) - это неизменяемый файл, содержащий исходный код,

библиотеки, зависимости, инструменты и другие файлы, необходимые для запуска приложения.
Из-за того, что образы предназначены только для чтения их иногда называют снимками (snapshot). Они представляют приложение и его виртуальную среду в определенный момент времени. Такая согласованность является одной из отличительных особенностей Docker. Он позволяет разработчикам тестировать и экспериментировать программное обеспечение в стабильных, однородных условиях.
Так как образы являются просто шаблонами, их нельзя создавать или запускать. Этот шаблон можно использовать в качестве основы для построения контейнера. Контейнер - это, в конечном счете, просто образ. При создании контейнера поверх образа добавляет слой, доступный для записи, что позволяет менять его по своему усмотрению.

[ссылка на источник]

Слайд 66

Разберем особенности

Контейнер Docker (Docker Container) - это виртуализированная среда выполнения, в которой пользователи

могут изолировать приложения от хостовой системы. Эти контейнеры представляют собой компактные портативные хосты, в которых можно быстро и легко запустить приложение.
Важной особенностью контейнера является стандартизация вычислительной среды, работающей внутри контейнера. Это не только гарантирует, что ваше приложение работает в идентичных условиях, но и упрощает обмен данными с другими партнерами по команде.
Контейнеры работают автономно, изолированно от основной системы и других контейнеров, и потому ошибка в одном из них не влияет на другие работающие контейнеры, а также поддерживающий их сервер.

[ссылка на источник]

Слайд 67

Разберем особенности

Dockerfile – это конфигурационный файл, который состоит из инструкций, которые выполняются последовательно.

Они содержат информацию об операционной системе, выбранной платформе, фреймворках, библиотеках, инструментах, которые нужно установить.
Если Docker image — это блюдо, то Dockerfile — рецепт его приготовления.
В данном файле описаны основные инструкции для сборки образа: какой базовый образ взять, откуда и куда положить файлы, задать проброс портов, какие команды выполнить в терминале и т.д.

Слайд 68

Разберем особенности

[ссылка на источник]

Слайд 69

Итог по Docker

В лекции разобраны основные моменты для понимания функционирования контейнеризации на базе

Docker.
Для дальнейшего понимания и приобретения практического опыта, изучение будет продолжено в разделе практических материалов.

Слайд 70

Kubernetes

Kubernetes (k8s) — фреймворк, открытое программное обеспечение для оркестровки контейнеризированных приложений — автоматизации

их развёртывания, масштабирования и координации в условиях кластера. Поддерживает основные технологии контейнеризации, включая Docker, rkt, также возможна поддержка технологий аппаратной виртуализации.
● Объединяет несколько серверов в кластер с единым управлением и единым хранилищем конфигураций.
● Для запуска контейнеров использует docker (или другие).
● Основные принципы — это декларативный подход к описанию и идемпотентность.
Все объекты в kubernetes могут быть представлены в виде файлов yaml или json.
Yaml — (Yet Another Markup Language) язык разметки, совместимый с json.

Слайд 71

Kubernetes

Слайд 72

Kubernetes

Начиная с 2018 года, его официальным куратором является Cloud Native Computing Foundation.
Первоначально Kubernetes

был создан для управления контейнеризированными приложениями в средах разработки и тестирования, но сейчас он успешно работает и в производственных средах. Он позволяет создавать и управлять кластером, который включает в себя огромное количество подчиненных узлов. Кластером управляет так называемый мастер-узел, который управляет всеми остальными узлами кластера.
Используя Kubernetes, можно:
- Создавать и управлять контейнерными приложениями
- Отказываться от использования физических серверов и заказывать услуги облачных провайдеров (AWS, Google Cloud, Azure, и т. д.)
- Избежать внесения изменений в код приложения при переносе его в другую среду
- Обеспечить масштабируемость и создание резервных копий приложений

Слайд 73

Kubernetes

Kubernetes действует на уровне логики, а не аппаратного обеспечения, по принципу «ведущий —

ведомый». Управление системой основано на двух подходах:
декларативном — разработчик задает цели, а не пути их достижения, которые система автоматически выбирает сама;
императивном — разработчик может распоряжаться ресурсами с помощью команд «Создать», «Изменить», «Удалить».

Слайд 74

Основные объекты кластера Kubernetes

Объекты — сущности, которые в архитектуре Kubernetes используются для представления

состояния кластера.

[ссылка на источник]

Слайд 75

Kubernetes - Nodes (ноды, узлы)

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

и запускаются контейнеры с приложениями. Совокупность нод образует кластер Kubernetes.
Nodes бывают двух типов:
Master (мастер-нода) — узел, управляющий всем кластером. Он следит за остальными нодами и распределяет между ними нагрузку с помощью менеджера контроллеров (controller manager) и планировщика (scheduler). Как правило, мастер-нода занимается только управлением и не берет на себя рабочие нагрузки. Для повышения отказоустойчивости существует несколько мастер-нод.
Worker (рабочие ноды) — узлы, на которых работают контейнеры. В зависимости от параметров ноды (объема памяти и центрального процессора) на одном узле может работать много контейнеров. Чем больше рабочих узлов, тем больше приложений можно запустить. Также количество влияет на отказоустойчивость кластера, потому что при выходе из строя одной ноды нагрузка переносится на другие.

[ссылка на источник]

Слайд 76

Kubernetes - Nodes (ноды, узлы)

[ссылка на источник]

Слайд 77

Pods (Поды)

Это абстрактный объект Kubernetes, представляющий собой «обертку» для одного или группы контейнеров.

Контейнеры в поде запускаются и работают вместе, имеют общие сетевые ресурсы и хранилище. Kubernetes не управляет контейнерами напрямую, он собирает их в поды и работает с ими.
Под и все его контейнеры функционируют на одном узле и находятся там до завершения работы. Оно может произойти в соответствии с жизненным циклом, из-за выхода из строя узла или обновления контейнера в составе пода. При пересоздании под может создаться на другой ноде, которая отличается от первоначальной.
Чаще всего в поде только один контейнер (приложение), потому что у каждого могут быть свои требования к масштабированию, производительности, SLA и пр.
Поды, объединяющие несколько контейнеров, встречаются реже. Например, когда надо объединить взаимосвязанные приложения, зависящие друг от друга. Запускать их отдельно бессмысленно.

[ссылка на источник]

Слайд 78

Kubernetes – PODS (поды)

[ссылка на источник]

Слайд 79

Controllers (контроллеры)

Контроллеры — это общее название средств управления, следящих за кластером и поддерживающих

желаемое его состояние. Существует несколько типов контроллеров:
Deployment (развертывание). Набор алгоритмов и директив, описывающих поды, число их экземпляров, порядок их замены при изменении характеристик. С его помощью разработчик декларирует изменения нодов и наборов реплик. Это самый популярный способ разместить приложение в Kubernetes.
ReplicaSet (набор реплик). Описывает и управляет работой нескольких подов на кластере. Чем больше таких реплик, тем выше устойчивость системы к отказам и лучше масштабируются приложения.
StatefulSet (набор состояния). Контроллер применяется для управления приложениями с отслеживанием состояния (stateful-приложениями) с использованием постоянного хранилища.
DaemonSet (набор «демонов»). Представляет собой совокупность «демонов» (фоновых программ, работающих без взаимодействия с пользователем) и отвечает за запуск одной реплики выбранного пода на каждом отдельном узле. То есть по мере добавления узлов в кластер добавляются и поды.
Job (задание). Контроллер, отвечающий за однократный запуск выбранного пода и завершающий его работу. CronJob — его разновидность, запускающая группу заданий по заданному расписанию.

[ссылка на источник]

Слайд 80

Services (сервисы)

Сервисы объединяют поды в логическую группу и определяют политику доступа к ним.

По функционалу они напоминают маршрутизатор и балансировщик нагрузки между подами.
Поды могут пересоздаваться, уничтожаться, переезжать на другие ноды и изменять IP-адреса. Если внешней системе или сервису будет нужно обратиться к поду, они должны быть в курсе его жизненного цикла и понимать, куда обращаться в конкретный момент времени. Это неудобно. Поэтому в Kubernetes есть сервисы, которые знают количество подов, хосты, на которых они работают, и пр. Сервис получает запрос от внешних систем или сервисов, определяет, какому именно поду его адресовать, и делает это.

[ссылка на источник]

Слайд 81

Services (сервисы)

[ссылка на источник]

Слайд 82

Kubernetes

Для работы с Kubernetes вы должны понимать основные принципы и терминологию. Ниже перечислены

некоторые из них:
- Под - это минимальная единица, служащая для запуска контейнера.
- Контроллер - это компонент, который автоматически создает, масштабирует и управляет подами на основе определенных правил и условий.
- Задача - это описание желаемого состояния кластера, определяемое в YAML-файле.
- Реплика-контроллер - это тип контроллера, который гарантирует, что определенное количество подов запущено и работает в кластере.
- Система-контроллер - это тип контроллера, который управляет системными ресурсами (например, хранилищем данных и сетью).

Слайд 83

Persistent Volumes (постоянные тома)

Это способ хранения данных между перезапусками контейнеров.
Контейнеры могут в любой

момент быть уничтожены или перезапущены. Их идея в том, что они легко «умирают» и заново появляются при необходимости. Поэтому все постоянные данные должны храниться вне контейнера. Но в целях безопасности контейнеры изолированы от основной системы. Кроме того, для отказоустойчивости могут создаваться несколько экземпляров контейнеров. Появляется новая проблема: нужно синхронизировать данные между репликами.
Для решения этих проблем в Kubernetes есть Persistent Volumes. Это постоянные тома, жизненный цикл которых не связан с подами и контейнерами. Самостоятельные ресурсы создаются и управляются отдельно.

Слайд 84

Namespaces (пространства имен)

Это возможность разделить физический кластер Kubernetes на виртуальные, каждый из которых

изолирован от других. Обычно пространства имен создаются для того, чтобы разделить команды, разные проекты или среды развертывания (dev, test, prod).
Ресурсы в них скрыты друг от друга, но не изолированы полностью. Сервис из одного пространства может общаться с сервисом из другого. При необходимости разграничить доступ пространства имен можно полностью изолировать.
В каждом Namespaces есть свои ресурсы: сервисы, поды, развертывания. В одном пространстве имен они должны иметь уникальные названия, но эти же названия допустимо использовать в других пространствах. В Namespaces входят не все ресурсы: например, Persistent Volumes и ноды доступны всему кластеру.

Слайд 85

Namespaces (пространства имен)

Слайд 86

Kubernetes

Kubernetes использует API-интерфейс, который может быть доступен из командной строки или через веб-интерфейс.

Для управления кластером можно использовать интерфейс командной строки kubectl или веб-интерфейс Kubernetes.
В целом, Kubernetes - это мощный инструмент для управления контейнеризированными приложениями. Он обеспечивает масштабируемость, автоматизацию и упрощает развертывание и управление приложениями в Kubernetes кластере. Но чтобы получить максимальную пользу от Kubernetes, необходимо понимать его основы и принципы работы.
Имя файла: Виртуализация,-контейнеризация.pptx
Количество просмотров: 5
Количество скачиваний: 0