Kubernetes в действии
Покупка
Новинка
Издательство:
ДМК Пресс
Автор:
Лукша Марко
Перевод:
Логунов А. В.
Год издания: 2019
Кол-во страниц: 674
Возрастное ограничение: 12+
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Дополнительное профессиональное образование
ISBN: 978-5-97060-657-5
Артикул: 882741.01.99
Книга детально рассказывает о Kubernetes — открытом программном обеспечении Google для автоматизации развёртывания, масштабирования и управления приложениями. Поддерживает основные технологии контейнеризации, также возможна поддержка технологий аппаратной виртуализации. Дано пошаговое разъяснение принципов работы и устройства модулей фреймворка. Вы узнаете все о создании объектов верхнего уровня, развертывании кластера на собственной рабочей машине и построении федеративного кластера в нескольких дата-центрах. Также детально проанализированы задачи обеспечения безопасности в Kubernetes.
Издание будет интересно всем, для кого актуальны проблемы организации кластеров и автоматизации развёртывания, масштабирования и управления приложениями.
Тематика:
ББК:
УДК:
ОКСО:
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Марко Лукша Kubernetes в действии
M A N N I N G SHELTER ISLAND Kubernetes in Action MARKO LUKŠA
Москва, 2019 Kubernetes в действии Марко Лукша Перевод с английского Логунов А. В.
УДК 004.457
ББК 32.973.2
Л84
Л84 Марко Лукша
Kubernetes в действии / пер. с англ. А. В. Логунов. – М.: ДМК Пресс, 2019. –
672 с.: ил.
ISBN 978-5-97060-657-5
Книга детально рассказывает о Kubernetes – открытом программном
обеспечении Google для автоматизации развёртывания, масштабирования
и управления приложениями. Поддерживает основные технологии контейнеризации, также возможна поддержка технологий аппаратной виртуализации. Дано пошаговое разъяснение принципов работы и устройства модулей
фреймворка. Вы узнаете все о создании объектов верхнего уровня, развертывании кластера на собственной рабочей машине и построении федеративного кластера в нескольких дата-центрах. Также детально проанализированы
задачи обеспечения безопасности в Kubernetes.
Издание будет интересно всем, для кого актуальны проблемы организации кластеров и автоматизации развёртывания, масштабирования и управления приложениями.
УДК 004.457
ББК 32.973.2
Original English language edition published by Manning Publications. Copyright © 2018
by Manning Publications. Russian language edition copyright © 2018 by DMK Press. All
rights reserved.
Все права защищены. Любая часть этой книги не может быть воспроизведена
в какой бы то ни было форме и какими бы то ни было средствами без письменного
разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку
вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи
с этим издательство не несет ответственности за возможные ошибки, связанные с
использованием книги.
ISBN 978-5-97060-657-5 (англ.) Copyright © 2018 by Manning Publications Co.
ISBN 978-5-97060-642-1 (рус.) © Оформление, перевод на русский язык,
издание, ДМК Пресс, 2019
Моим родителям, которые всегда ставили потребности своих детей выше собственных
Оглавление Вступительное слово от компании ITSumma...............................................19 Описанные/рассмотренные в книге ресурсы Kubernetes.........................20 Благодарности..................................................................................................22 Предисловие.....................................................................................................23 Признательности..............................................................................................24 Об этой книге....................................................................................................25 Кто должен читать эту книгу..........................................................................25 Как организована эта книга: дорожная карта...............................................25 О коде...............................................................................................................27 Книжный форум..............................................................................................28 Другие интернет-ресурсы...............................................................................28 Об авторе...........................................................................................................30 Об иллюстрации на обложке..........................................................................31 Глава 1. Знакомство с Kubernetes..................................................................32 1.1 Объяснение необходимости системы наподобие Kubernetes................34 1.1.1 Переход от монолитных приложений к микросервисам.......................... 34 1.1.2 Обеспечение консистентного окружения для приложений..................... 37 1.1.3 Переход к непрерывной доставке: DevOps и NoOps.................................. 38 1.2 Знакомство с контейнерными технологиями.........................................40 1.2.1 Что такое контейнеры................................................................................. 40 1.2.2 Знакомство с контейнерной платформой Docker..................................... 44 1.2.3 Знакомство с rkt – альтернативой Docker.................................................. 48 1.3 Первое знакомство с Kubernetes...............................................................49 1.3.1 Истоки........................................................................................................... 49 1.3.2 Взгляд на Kubernetes с вершины горы........................................................ 50 1.3.3 Архитектура кластера Kubernetes............................................................... 52 1.3.4 Запуск приложения в Kubernetes................................................................ 53 1.3.5 Преимущества использования Kubernetes................................................. 55 1.4 Резюме........................................................................................................58 Глава 2. Первые шаги с Docker и Kubernetes...............................................59 2.1 Создание, запуск и совместное использование образа контейнера......59 2.1.1 Установка Docker и запуск контейнера Hello World................................... 60 2.1.2 Создание простейшего приложения Node.js ............................................. 62 2.1.3 Создание файла Dockerfile для образа........................................................ 63
Оглавление 7 2.1.4 Создание образа контейнера...................................................................... 64 2.1.5 Запуск образа контейнера........................................................................... 66 2.1.6 Исследование работающего контейнера изнутри..................................... 67 2.1.7 Остановка и удаление контейнера............................................................. 69 2.1.8 Отправка образа в хранилище образов...................................................... 70 2.2 Настройка кластера Kubernetes................................................................71 2.2.1 Запуск локального одноузлового кластера Kubernetes с помощью Minikube.................................................................................... 72 2.2.2 Использование кластера Kubernetes, предоставляемого как сервис с Google Kubernetes Engine........................................................ 74 2.2.3 Настройка псевдонима и автозавершение в командной строке для kubectl.................................................................................................... 77 2.3 Запуск первого приложения на Kubernetes.............................................78 2.3.1 Развертывание приложения Node.js .......................................................... 78 2.3.2 Доступ к веб-приложению.......................................................................... 81 2.3.3 Логические части вашей системы.............................................................. 83 2.3.4 Горизонтальное масштабирование приложения...................................... 85 2.3.5 Исследование узлов, на которых запущено приложение......................... 88 2.3.6 Знакомство с панелью управления Kubernetes.......................................... 89 2.4 Резюме........................................................................................................91 Глава 3. Модули: запуск контейнеров в Kubernetes...................................92 3.1 Знакомство с модулями.............................................................................92 3.1.1 Зачем нужны модули................................................................................... 93 3.1.2 Общее представление о модулях................................................................ 94 3.1.3 Правильная организация контейнеров между модулями........................ 96 3.2 Создание модулей из дескрипторов YAML или JSON..............................98 3.2.1 Исследование дескриптора YAML существующего модуля...................... 99 3.2.2 Создание простого дескриптора YAML для модуля................................. 101 3.2.3 Использование команды kubectl create для создания модуля................ 103 3.2.4 Просмотр журналов приложений............................................................. 104 3.2.5 Отправка запросов в модуль..................................................................... 105 3.3 Организация модулей с помощью меток.............................................. 106 3.3.1 Знакомство с метками............................................................................... 106 3.3.2 Указание меток при создании модуля..................................................... 108 3.3.3 Изменение меток существующих модулей.............................................. 109 3.4 Перечисление подмножеств модулей посредством селекторов меток........................................................................................................110 3.4.1 Вывод списка модулей с помощью селектора меток.............................. 110 3.4.2 Использование нескольких условий в селекторе меток......................... 111 3.5 Использование меток и селекторов для ограничения планирования модулей....................................................................................................112 3.5.1 Использование меток для классификации рабочих узлов..................... 113 3.5.2 Приписывание модулей к определенным узлам..................................... 113
8 Оглавление 3.5.3 Планирование размещения на один конкретный узел........................... 114 3.6 Аннотирование модулей.........................................................................114 3.6.1 Поиск аннотаций объекта......................................................................... 115 3.6.2 Добавление и изменение аннотаций....................................................... 115 3.7 Использование пространств имен для группирования ресурсов........ 116 3.7.1 Необходимость пространств имен............................................................ 116 3.7.2 Обнаружение других пространств имен и их модулей............................ 117 3.7.3 Создание пространства имен.................................................................... 118 3.7.4 Управление объектами в других пространствах имен............................ 119 3.7.5 Изоляция, обеспечиваемая пространствами имен.................................. 119 3.8 Остановка и удаление модулей..............................................................120 3.8.1 Удаление модуля по имени....................................................................... 120 3.8.2 Удаление модулей с помощью селекторов меток.................................... 120 3.8.3 Удаление модулей путем удаления всего пространства имен............... 121 3.8.4 Удаление всех модулей в пространстве имен при сохранении пространства имен..................................................................................... 121 3.8.5 Удаление (почти) всех ресурсов в пространстве имен............................ 122 3.9 Резюме......................................................................................................123 Глава 4. Контроллер репликации и другие контроллеры: развертывание управляемых модулей......................................................124 4.1 Поддержание модулей в здоровом состоянии...................................... 125 4.1.1 Знакомство с проверками живости.......................................................... 126 4.1.2 Создание проверки живости на основе HTTP.......................................... 126 4.1.3 Просмотр проверки живости в действии................................................. 127 4.1.4 Настройка дополнительных свойств проверки живости........................ 129 4.1.5 Создание эффективных проверок живости............................................. 130 4.2 Знакомство с контроллерами репликации............................................ 132 4.2.1 Работа контроллера репликации.............................................................. 133 4.2.2 Создание контроллера репликации......................................................... 135 4.2.3 Просмотр контроллера репликации в действии..................................... 136 4.2.4 Перемещение модулей в область и из области действия контроллера репликации................................................................................................ 140 4.2.5 Изменение шаблона модуля ..................................................................... 143 4.2.6 Горизонтальное масштабирование модулей........................................... 144 4.2.7 Удаление контроллера репликации.......................................................... 146 4.3 Использование набора реплик вместо контроллера репликации....... 147 4.3.1 Сравнение набора реплик с контроллером репликации........................ 148 4.3.2 Определение набора реплик..................................................................... 148 4.3.3 Создание и исследование набора реплик................................................ 149 4.3.4 Использование более выразительных селекторов меток для набора реплик......................................................................................................... 150 4.3.5 Подведение итогов относительно наборов реплик................................. 151
Оглавление 9 4.4 Запуск ровно одного модуля на каждом узле с помощью набора демонов (DaemonSet)..............................................................................151 4.4.1 Использование набора демонов для запуска модуля на каждом узле.....152 4.4.2 Использование набора демонов для запуска модуля только на определенных узлах................................................................................... 153 4.5 Запуск модулей, выполняющих одну заканчиваемую задачу.............. 156 4.5.1 Знакомство с ресурсом Job........................................................................ 156 4.5.2 Определение ресурса Job........................................................................... 157 4.5.3 Просмотр того, как задание управляет модулем..................................... 158 4.5.4 Запуск нескольких экземпляров модуля в задании................................ 159 4.5.5 Ограничение времени, отпускаемого на завершение модуля задания... 161 4.6 Планирование выполнения заданий периодически или единоразово в будущем...................................................................161 4.6.1 Создание ресурса CronJob......................................................................... 161 4.6.2 Общие сведения о выполнении запланированных заданий.................. 163 4.7 Резюме......................................................................................................163 Глава 5. Службы: обеспечение клиентов возможностью обнаруживать модули и обмениваться с ними информацией.........................................165 5.1 Знакомство со службами.........................................................................166 5.1.1 Создание служб.......................................................................................... 167 5.1.2 Обнаружение служб................................................................................... 174 5.2 Подключение к службам, находящимся за пределами кластера.......... 178 5.2.1 Знакомство с конечными точками служб................................................ 178 5.2.2 Настройка конечных точек службы вручную........................................... 179 5.2.3 Создание псевдонима для внешней службы............................................ 180 5.3 Предоставление внешним клиентам доступа к службам..................... 181 5.3.1 Использование службы NodePort ............................................................. 182 5.3.2 Обеспечение доступа к службе через внешнюю подсистему балансировки нагрузки............................................................................. 186 5.3.3 Особенности внешних подключений....................................................... 188 5.4 Обеспечение доступа к службам извне через ресурс Ingress................ 190 5.4.1 Создание ресурса Ingress........................................................................... 192 5.4.2 Доступ к службе через Ingress................................................................... 193 5.4.3 Обеспечение доступа ко множеству служб через один и тот же Ingress....194 5.4.4 Настройка Ingress для обработки трафика TLS........................................ 195 5.5 Сигналы о готовности модуля к приему подключений........................ 198 5.5.1 Знакомство с проверкой готовности........................................................ 198 5.5.2 Добавление в модуль проверки готовности ............................................ 200 5.5.3 Что должны делать реальные проверки готовности............................... 202 5.6 Использование служб без обозначенной точки входа (Headless-сервисов) для обнаружения индивидуальных модулей....... 203 5.6.1 Создание службы без обозначенной точки входа................................... 204
10 Оглавление 5.6.2 Обнаружение модулей через DNS............................................................. 204 5.6.3 Обнаружение всех модулей – даже тех, которые не готовы.................... 206 5.7 Устранение неполадок в службах............................................................206 5.8 Резюме......................................................................................................207 Глава 6. Тома: подключение дискового хранилища к контейнерам.....209 6.1 Знакомство с томами...............................................................................210 6.1.1 Объяснение томов на примере................................................................. 210 6.1.2 Знакомство с типами томов...................................................................... 212 6.2 Использование томов для обмена данными между контейнерами.... 213 6.2.1 Использование тома emptyDir.................................................................. 213 6.2.2 Использование репозитория Git в качестве отправной точки для тома.217 6.3 Доступ к файлам в файловой системе рабочего узла............................ 220 6.3.1 Знакомство с томом hostPath ................................................................... 220 6.3.2 Исследование системных модулей с томами hostPath............................ 221 6.4 Использование постоянного хранилища............................................... 222 6.4.1 Использование постоянного диска GCE Persistent Disk в томе модуля.... 223 6.4.2 Использование томов других типов с базовым постоянным хранилищем............................................................................................... 226 6.5 Отделение модулей от базовой технологии хранения.......................... 228 6.5.1 Знакомство с томами PersistentVolume и заявками PersistentVolumeClaim............................................................................... 229 6.5.2 Создание ресурса PersistentVolume.......................................................... 230 6.5.3 Подача заявки на PersistentVolume путем создания ресурса PersistentVolumeClaim............................................................................... 231 6.5.4 Использование заявки PersistentVolumeClaim в модуле......................... 234 6.5.5 Преимущества использования томов PersistentVolume и заявок........... 235 6.5.6 Повторное использование постоянных томов........................................ 236 6.6 Динамическое резервирование томов PersistentVolume...................... 238 6.6.1 Определение доступных типов хранилища с помощью ресурсов StorageClass................................................................................................. 238 6.6.2 Запрос на класс хранилища в заявке PersistentVolumeClaim.................. 239 6.6.3 Динамическое резервирование без указания класса хранилища.......... 241 6.7 Резюме......................................................................................................244 Глава 7. Словари конфигурации (ConfigMap) и секреты (Secret): настройка приложений..................................................................................246 7.1 Конфигурирование контейнерных приложений................................... 246 7.2 Передача в контейнеры аргументов командной строки....................... 248 7.2.1 Определение команды и аргументов в Docker......................................... 248 7.2.2 Переопределение команды и аргументов в Kubernetes.......................... 250 7.3 Настройка переменных среды для контейнера..................................... 252 7.3.1 Указание переменных среды в определении контейнера...................... 253