Введение в технологии контейнеров и Kubernetes
Покупка
Новинка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Год издания: 2019
Кол-во страниц: 196
Возрастное ограничение: 12+
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное профессиональное образование
ISBN: 978-5-97060-775-6
Артикул: 882737.01.99
В книге рассмотрены механизмы, обеспечивающие работу контейнеров в GNU/ Linux, основы работы с контейнерами при помощи Docker и Podman, а также система оркестрирования контейнеров Kubernetes. Помимо этого, книга знакомит c особенностями одного из самых популярных дистрибутивов Kubernetes — OpenShift (OKD).
Данная книга рассчитана на ИТ-специалистов, знакомых с GNU/Linux и желающих познакомиться с технологиями контейнеров и системой оркестрации Kubernetes.
Тематика:
ББК:
УДК:
ОКСО:
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
ВВЕДЕНИЕ В ТЕХНОЛОГИИ КОНТЕЙНЕРОВ И KUBERNETES Москва, 2019 Андрей Маркелов
УДК 004.51Kubernetes
ББК 32.972.1
M25
M25 Маркелов А. А.
Введение в технологии контейнеров и Kubernetes. – М.: ДМК
Пресс, 2019. – 194 с.: ил.
ISBN 978-5-97060-775-6
В книге рассмотрены механизмы, обеспечивающие работу контейнеров в GNU/ Linux, основы работы с контейнерами при помощи Docker
и Podman, а также система оркестрирования контейнеров Kubernetes.
Помимо этого, книга знакомит c особенностями одного из самых популярных дистрибутивов Kubernetes – OpenShift (OKD).
Данная книга рассчитана на ИТ-специалистов, знакомых с GNU/Linux
и желающих познакомиться с технологиями контейнеров и системой
оркестрации Kubernetes.
Все права защищены. Любая часть этой книги не может быть воспроизведена
в какой бы то ни было форме и какими бы то ни было средствами без письменного
разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку
вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи
с этим издательство не несет ответственности за возможные ошибки, связанные
с использованием книги.
© Маркелов А. А., 2019
ISBN 978-5-97060-775-6 © Оформление, издание, ДМК Пресс, 2019
СОДЕРЖАНИЕ Предисловие.................................................................................. 6 Благодарности.................................................................................... 6 Об авторе............................................................................................. 6 Рецензенты......................................................................................... 7 Предполагаемая аудитория............................................................... 7 О чем эта книга................................................................................... 8 Глава 1. Введение в контейнеры GNU/Linux.................. 10 Отличия контейнеров от виртуализации....................................... 10 История Docker................................................................................. 12 Архитектура Docker.......................................................................... 13 Установка Docker в GNU/Linux на примере CentOS 7..................... 17 Вопросы для самопроверки............................................................. 21 Список ссылок.................................................................................. 21 Глава 2. Основы работы с контейнерами Docker.......... 22 Поиск образов контейнеров и теги ................................................ 22 Запуск контейнеров......................................................................... 26 Изоляция контейнеров.................................................................... 31 Управление состоянием контейнеров............................................ 35 Обмен данными с контейнером по сети ....................................... 41 Просмотр информации о контейнере............................................ 43 Подключение к контейнеру постоянного хранилища................... 48 Публикация образов в реестре на примере Docker Hub................ 51 Импорт и экспорт образов контейнеров........................................ 56 Запуск контейнеров при помощи docker и systemd....................... 59 Вопросы для самопроверки............................................................. 61 Список ссылок.................................................................................. 61 Глава 3. Создание контейнеров при помощи Dockerfile............................................................. 62 Базовый синтаксис Dockerfile.......................................................... 62 Изучаем инструкции Dockerfile на примерах................................. 65
Содержание Модифицируем Dockerfile................................................................ 68 Вопросы для самопроверки............................................................. 70 Список ссылок.................................................................................. 70 Глава 4. Работа с контейнерами Docker без движка Docker..................................................................... 71 Введение в podman, buildah и skopeo.............................................. 71 Запуск контейнеров при помощи podman..................................... 72 Запуск pod-модулей при помощи podman..................................... 73 Запуск контейнеров при помощи podman и systemd....................................................... 76 Использование утилиты buildah для создания образов контейнеров................................................ 77 Работа с образами при помощи skopeo.......................................... 81 Вопросы для самопроверки............................................................. 83 Список ссылок.................................................................................. 83 Глава 5. Введение в Kubernetes и установка кластера................................................................ 84 Знакомство с Kubernetes.................................................................. 84 Установка локального кластера....................................................... 89 Подготовка операционной системы........................................... 89 Установка управляющего узла.................................................... 92 Установка рабочих узлов............................................................. 96 Установка веб-консоли Kubernetes............................................. 98 Установка кластера в публичном облаке Microsoft Azure............ 100 Вопросы для самопроверки........................................................... 104 Список ссылок................................................................................ 104 Глава 6. Основы работы с Kubernetes.............................. 105 Основные объекты Kubernetes ..................................................... 105 Создаем первый pod-модуль......................................................... 107 Внедрения (Deployments)............................................................... 111 Разбор шаблона внедрения....................................................... 113 Масштабирование и откат внедрений...................................... 118 Доступ к pod-модулю извне кластера........................................... 120 Постоянные тома и запросы постоянных томов......................... 124 Словари конфигурации и секреты................................................ 131
Содержание Вопросы для самопроверки........................................................... 137 Список ссылок................................................................................ 137 Глава 7. Расширенные возможности Kubernetes........ 138 Контроллеры DaemonSet и StatefulSet.......................................... 138 Выполнение заданий при помощи Job и CronJob........................ 144 Менеджер пакетов Helm................................................................ 148 Вопросы для самопроверки........................................................... 154 Список ссылок................................................................................ 154 Глава 8. Знакомство с OpenShift и OKD.......................... 155 Сравнение OpenShift и Kubernetes................................................ 155 Установка OpenShift при помощи cluster up................................ 156 Первое приложение в OpenShift ................................................... 159 Сборка приложений....................................................................... 168 Работа с шаблонами OpenShift...................................................... 177 Вопросы для самопроверки........................................................... 183 Список ссылок................................................................................ 183 Заключение................................................................................ 184 Ответы к вопросам для самопроверки.......................... 185 Приложения............................................................................... 186 Приложение 1. Листинг внедрения nginx..................................... 186 Приложение 2. Листинг шаблона OpenShift mysql-ephemeral.... 189
ПРЕДИСЛОВИЕ Благодарности В первую очередь я хочу поблагодарить мою жену Лену за терпение и поддержку, проявленные во время написания этой книги, как и всех предыдущих. Также традиционная большая благодарность рецензентам книги. Об авторе Андрей Маркелов имеет пятнадцатилетний опыт преподавания как авторских курсов, так и авторизированных курсов по ИТ-технологиям таких компаний, как Red Hat и Microsoft. Последние годы автор работает в качестве старшего системного архитектора компании Ericsson, специализируясь на облачных технологиях, инфраструктуре виртуализации сетевых функций (NFV-I) и технологиях управления контейнерами. До этого работал в качестве старшего системного архитектора в компании Red Hat, а также в крупных системных интеграторах России, получив более чем десятилетний опыт продаж, проектирования и внедрения сетевых и инфраструктурных решений. Около шестидесяти публикаций в российских ИТ-журналах («Системный администратор», «Linux Format», «PC Week» и др.). Автор книг «OpenStack. Практическое введение в облачную операционную систему» (ДМК Пресс, 2015, 2016, 2017, 2018 гг.), выдержавшей четыре издания, и вышедшей в 2016 году книги издательства Apress «Certified OpenStack Administrator Study Guide». Андрей является сертифицированным архитектором Red Hat (RHCA) с 2009 года и имеет сертификаты Red Hat в таких технологиях, как OpenStack, OpenShift, RHV, CloudForms, Ansible, GlusterFS, настройка производительности, безопасности Linux-систем и др. Кроме того, автор имеет сертификаты Microsoft Certified System Engineer, Sun Certified System Administrator, Novell Certified Linux
Предполагаемая аудитория Professional, Linux Professional Institute Certification (LPIC-1), Mirantis Certified OpenStack Administrator, OpenStack Foundation Certified OpenStack Administrator, Cisco Certified Network Associate. Блог автора располагается по адресу: http://markelov.blogspot. com/. Его twitter-аккаунт @amarkelov. Рецензенты Артемий Кропачев (Artemii Kropachev) – технический директор (CTO) и главный ИТ-архитектор (Principal Architect) компании «Li9 Technology Solutions», расположенной в г. Финикс, США. Артемий имеет более 15 лет опыта в ИТ, который покрывает проектирование комплексных ИТ-систем, разработку программного обеспечения, SDN/NFV, облачные решения и системы автоматизации. Артемий занимается проектированием и внедрением проектов на базе технологий Red Hat. Основной фокус направлен на контейнеризацию приложений на базе Red Hat OpenShift Container Platform. Артемий является автором книг «Ansible for IT Experts», «Learn OpenShift», «Learn DevOps», «Learn Linux». Кроме того, Артемий на 2019 г. является обладателем самого высокого сертификационного статуса по инфраструктурным продуктам Red Hat в мире – Red Hat Certified Architect Level XX in Infrastructure. Василий Ангапов (Vasiliy Angapov) – старший архитектор компании Bell Integrator, г. Москва. Василий имеет более 10 лет опыта в ИТ, долгое время занимался внедрением облачных решений компании Red Hat. В настоящее время успешно занимается проектированием и внедрением различных микросервисных приложений на базе Kubernetes в облачных платформах Google Cloud и Amazon Web Services. Предполагаемая аудитория Данная книга рассчитана на ИТ-специалистов, работающих с GNU/ Linux и желающих познакомиться с технологиями контейнеров и системой оркестрации Kubernetes. От читателя требуются базовые навыки работы с операционной системой GNU/Linux. Умение работать в командной строке и знание основных команд GNU/Linux обязательны.
Предисловие О чем эта книга Книга состоит из восьми глав и знакомит читателя с механизмами, обеспечивающими работу контейнеров в GNU/Linux, основами работы с контейнерами при помощи Docker и Podman, а также системой оркестрирования контейнеров Kubernetes. Помимо этого, книга знакомит c особенностями одного из самых популярных дистрибутивов Kubernetes – OpenShift (OKD). Глава 1. Введение в контейнеры GNU/Linux Первая глава вводит читателя в предметную область и историю технологий контейнеров в GNU/Linux. Также обсуждается архитектура «движка» Docker. В этой главе читатель создает лабораторный стенд и устанавливает Docker в GNU/Linux на примере дистрибутива CentOS 7. Глава 2. Основы работы с контейнерами Docker Во второй главе читатель познакомится с базовыми операциями и основными командами утилиты docker. Рассмотрены такие темы, как поиск образов контейнеров и теги, запуск контейнеров, управление состоянием контейнеров и их изоляция, работа с хранилищем, сетью и реестром. Глава 3. Создание контейнеров при помощи Dockerfile В этой главе обсуждается файл инструкций для сборки контейнеров Dockerfile и сам процесс создания новых образов. Глава 4. Работа с контейнерами Docker без движка Docker В данной главе рассматриваются инструменты, изначально разработанные для альтернативной среды исполнения контейнеров CRI-O: podman, buildah и skopeo. Все три утилиты не требуют наличия запущенного демона и независимы от Docker. Глава 5. Введение в Kubernetes и установка кластера В пятой главе читатель познакомится с архитектурой системы оркестрации контейнеров Kubernetes и создаст кластер, состоящий из трех узлов, для последующих экспериментов в процессе обучения. Глава 6. Основы работы с Kubernetes В данной главе описаны основные объекты Kubernetes. Читатель на практике познакомится с созданием pod-модулей, внедрений и их масштабированием. Рассмотрена работа с томами
О чем эта книга и запросами на постоянные тома, а также секреты, карты конфигурации и сервисы Kubernetes. Глава 7. Расширенные возможности Kubernetes Седьмая глава знакомит с контроллерами StatefulSet, DaemonSet, Job и CronJob. Также рассмотрена работа с Ingress и Ingress Controller. Глава 8. Знакомство с OpenShift и OKD В данной главе читатель знакомится с одним из популярных дистрибутивов Kubernetes, разрабатываемых компанией Red Hat, – OpenShift/OKD. Дается сравнение OpenShift и Kubernetes, показана установка тестовой среды при помощи команды oc cluster up, и продемонстрирована работа с основными объектами OpenShift.
Глава 1. ВВЕДЕНИЕ В КОНТЕЙНЕРЫ GNU/LINUX В первой главе мы поговорим об истории технологий контейнеров в GNU/Linux и архитектуре «движка» Docker. Отличия контейнеров от виртуализации В отличие от «вертикального» абстрагирования в случае виртуализации, контейнеры, в частности контейнеры Docker, с рассмотрения которых мы начнем, обеспечивают «горизонтальное» разбиение операционной системы на отдельные изолированные окружения. За счет того, что в каждом контейнере, в отличие от виртуализации, обходятся без использования отдельного экземпляра операционной системы, значительно ниже накладные расходы. Минусом является тот факт, что вы не сможете на одном узле в контейнерах запускать разные операционные системы, например Windows и GNU/Linux. Также необходимо отметить, что зачастую контейнеры используются поверх виртуальных машин, которые могут располагаться как в частном, так и в публичном облаке. Итак, контейнеры обеспечивают часть преимуществ виртуальных машин, при этом используя меньше аппаратных ресурсов. Преимущества использования контейнеров, по сравнению с виртуальными машинами, следующие: горизонтальная изоляция приложений; меньшие накладные расходы на инфраструктуру; изоляция не на уровне операционной системы, а на уровне окружения приложения (необходимые библиотеки); скорость развертывания приложений и скорость перезапуска приложений; параллельная работа нескольких окружений одного приложения;