Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 639057)
Контекстум
Руконтекст антиплагиат

Kubernetes в действии (6000,00 руб.)

0   0
Первый авторЛукса
ИздательствоМ.: ДМК Пресс
Страниц674
ID794552
АннотацияКнига детально рассказывает о Kubernetes — открытом программном обеспечении Google для автоматизации развёртывания, масштабирования и управления приложениями. Поддерживает основные технологии контейнеризации, также возможна поддержка технологий аппаратной виртуализации. Дано пошаговое разъяснение принципов работы и устройства модулей фреймворка. Вы узнаете все о создании объектов верхнего уровня, развертывании кластера на собственной рабочей машине и построении федеративного кластера в нескольких дата-центрах. Также детально проанализированы задачи обеспечения безопасности в Kubernetes. Издание будет интересно всем, для кого актуальны проблемы организации кластеров и автоматизации развёртывания, масштабирования и управления приложениями.
ISBN978-5-97060-657-5
УДК4.457
ББК32.973.2
Лукса, М. Kubernetes в действии / М. Лукса .— Москва : ДМК Пресс, 2019 .— 674 с. — ISBN 978-5-97060-657-5 .— URL: https://rucont.ru/efd/794552 (дата обращения: 18.06.2024)

Предпросмотр (выдержки из произведения)

Kubernetes_в_действии.pdf
Стр.5
Стр.7
Стр.8
Стр.9
Стр.10
Стр.11
Стр.12
Стр.13
Стр.14
Стр.15
Стр.16
Стр.17
Стр.18
Стр.19
Kubernetes_в_действии.pdf
УДК 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 (англ.) ISBN 978-5-97060-642-1 (рус.) Copyright © 2018 by Manning Publications Co. © Оформление, перевод на русский язык, издание, ДМК Пресс, 2019
Стр.5
Оглавление Вступительное слово от компании 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
Оглавление  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.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 2.2.3 Настройка псевдонима и автозавершение в командной строке для kubectl .................................................................................................... 77 2.3 Запуск первого приложения на Kubernetes ............................................. 78
Стр.8
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
Оглавление  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
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
Стр.11
Оглавление  11 7.3.2 Ссылка на другие переменные среды в значении переменной ............. 254 7.3.3 Отрицательная сторона жесткого кодирования переменных среды .... 254 7.4 Отсоединение конфигурации с помощью словаря конфигурации ConfigMap ................................................................................................. 255 7.4.1 Знакомство со словарями конфигурции .................................................. 255 7.4.2 Создание словаря конфигурации ............................................................. 256 7.4.3 Передача записи словаря конфигурации в контейнер в качестве переменной среды .................................................................................... 258 7.4.4 Одновременная передача всех записей словаря конфигурации как переменных среды ............................................................................. 260 7.4.5 Передача записи словаря конфигурации в качестве аргумента командной строки ..................................................................................... 261 7.4.6 Использование тома configMap для обеспечения доступа к записям словаря конфигурации в виде файлов ..................................................... 262 7.4.7 Обновление конфигурации приложения без перезапуска приложения ............................................................................................... 269 7.5 Использование секретов для передачи чувствительных данных в контейнеры ........................................................................................... 272 7.5.1 Знакомство с секретами ............................................................................ 272 7.5.2 Знакомство с секретом default-token ....................................................... 273 7.5.3 Создание секрета ....................................................................................... 275 7.5.4 Сравнение словарей конфигурации и секретов ...................................... 275 7.5.5 Использование секрета в модуле ............................................................. 277 7.5.6 Секреты для выгрузки образов ................................................................. 282 7.6 Резюме ...................................................................................................... 283 Глава 8. Доступ к метаданным модуля и другим ресурсам из приложений ...............................................................................................285 8.1 Передача метаданных через нисходящий API ...................................... 285 8.1.1 Доступные для использования метаданные ........................................... 286 8.1.2 Предоставление доступа к метаданным через переменные среды ...... 287 8.1.3 Передача метаданных через файлы в том downwardAPI ....................... 290 8.2 Обмен с сервером API Kubernetes .......................................................... 294 8.2.1 Исследование REST API Kubernetes .......................................................... 295 8.2.2 Обмен с сервером API изнутри модуля ................................................... 300 8.2.3 Упрощение взаимодействия сервера API с контейнерами-посредниками ............................................................... 306 8.2.4 Использование клиентских библиотек для обмена с сервером API ...... 308 8.3 Резюме ..................................................................................................... 312 Глава 9. Развертывания: декларативное обновление приложений .....313 9.1 Обновление приложений, работающих в модулях ............................... 314 9.1.1 Удаление старых модулей и замена их новыми ..................................... 315 9.1.2 Запуск новых модулей, а затем удаление старых ................................... 315
Стр.12
12  Оглавление 9.2 Выполнение автоматического плавного обновления с помощью контроллера репликации ....................................................................... 317 9.2.1 Запуск первоначальной версии приложения .......................................... 317 9.2.2 Выполнение плавного обновления с помощью kubectl ......................... 319 9.2.3 Почему плавное обновление kubectl rolling-update устарело ................ 324 9.3 Использование развертываний для декларативного обновления приложений ............................................................................................. 325 9.3.1 Создание развертывания .......................................................................... 326 9.3.2 Обновление с помощью развертывания ................................................. 329 9.3.3 Откат развертывания ................................................................................ 333 9.3.4 Управление скоростью выкладки ............................................................ 336 9.3.5 Приостановка процесса выкладки ........................................................... 339 9.3.6 Блокировка раскруток плохих версий ..................................................... 340 9.4 Резюме ..................................................................................................... 346 Глава 10. Ресурсы StatefulSet: развертывание реплицируемых приложений с внутренним состоянием .....................................................347 10.1 Репликация модулей с внутренним состоянием ................................ 347 10.1.1 Запуск множества реплик с отдельным хранилищем для каждой ...... 348 10.1.2 Обеспечение стабильной долговременной идентификации для каждого модуля................................................................................... 350 10.2 Набор модулей с внутренним состоянием .......................................... 351 10.2.1 Сопоставление наборов модулей с внутренним состоянием и наборов реплик ...................................................................................... 351 10.2.2 Обеспечение стабильной сетевой идентичности ................................. 353 10.2.3 Обеспечение стабильного выделенного хранилища для каждого экземпляра с внутренним состоянием .................................................... 355 10.2.4 Гарантии набора StatefulSet ................................................................... 358 10.3 Использование набора StatefulSet ....................................................... 358 10.3.1 Создание приложения и образа контейнера ......................................... 359 10.3.2 Развертывание приложения посредством набора StatefulSet ............. 360 10.3.3 Исследование своих модулей ................................................................. 365 10.4 Обнаружение соседей в наборе StatefulSet ......................................... 369 10.4.1 Реализация обнаружения соседей посредством DNS ........................... 371 10.4.2 Обновление набора StatefulSet ............................................................... 373 10.4.3 Опробование кластеризованного хранилища данных ......................... 374 10.5 Как наборы StatefulSet справляются с аварийными сбоями узлов ... 375 10.5.1 Симулирование отключения узла от сети ............................................. 375 10.5.2 Удаление модуля вручную ...................................................................... 377 10.6 Резюме ................................................................................................... 379 Глава 11. Внутреннее устройство Kubernetes ...........................................380 11.1 Архитектура ........................................................................................... 380
Стр.13
Оглавление  13 11.1.1 Распределенная природа компонентов Kubernetes .............................. 381 11.1.2 Как Kubernetes использует хранилище etcd .......................................... 384 11.1.3 Что делает сервер API .............................................................................. 388 11.1.4 Как сервер API уведомляет клиентов об изменениях ресурсов ........... 390 11.1.5 Планировщик .......................................................................................... 391 11.1.6 Знакомство с контроллерами, работающими в менеджере контроллеров ............................................................................................. 394 11.1.7 Что делает агент Kubelet ......................................................................... 399 11.1.8 Роль служебного сетевого прокси системы Kubernetes ........................ 401 11.1.9 Знакомство с надстройками Kubernetes ................................................ 402 11.1.10 Все воедино ............................................................................................ 404 11.2 Взаимодействие контроллеров ............................................................ 404 11.2.1 Какие компоненты задействованы ........................................................ 404 11.2.2 Цепь событий ........................................................................................... 404 11.2.3 Наблюдение за событиями кластера...................................................... 406 11.3 Что такое запущенный модуль ............................................................. 408 11.4 Интермодульное сетевое взаимодействие .......................................... 409 11.4.1 Как должна выглядеть сеть ..................................................................... 409 11.4.2 Более детальное рассмотрение работы сетевого взаимодействия ...... 411 11.4.3 Знакомство с контейнерным сетевым интерфейсом ........................... 413 11.5 Как реализованы службы ...................................................................... 414 11.5.1 Введение в kube-proxy ............................................................................. 414 11.5.2 Как kube-proxy использует правила iptables ......................................... 414 11.6 Запуск высокодоступных кластеров .................................................... 416 11.6.1 Обеспечение высокой доступности приложений ................................. 416 11.6.2 Обеспечение высокой доступности компонентов плоскости управления Kubernetes ............................................................................. 417 11.7 Резюме ................................................................................................... 421 Глава 12. Защита сервера API Kubernetes .................................................422 12.1 Аутентификация .................................................................................... 422 12.1.1 Пользователи и группы ........................................................................... 423 12.1.2 Знакомство с учетными записями службы ........................................... 424 12.1.3 Создание учетных записей ServiceAccount ............................................ 425 12.1.4 Назначение модулю учетной записи службы........................................ 428 12.2 Защита кластера с помощью управления ролевым доступом ........... 430 12.2.1 Знакомство с плагином авторизации RBAC .......................................... 430 12.2.2 Знакомство с ресурсами RBAC................................................................ 432 12.2.3 Использование ролей и привязок ролей ............................................... 435 12.2.4 Применение кластерных ролей (ClusterRole) и привязок кластерных ролей (ClusterRoleBinding) ................................................... 439 12.2.5 Кластерные роли и привязки кластерных ролей, существующие по умолчанию ............................................................................................ 450
Стр.14
14  Оглавление 12.2.6 Предоставление разумных авторизационных разрешений ................ 453 12.3 Резюме ................................................................................................... 454 Глава 13. Защита узлов кластера и сети ....................................................455 13.1 Использование в модуле пространств имен хоста ............................. 455 13.1.1 Использование в модуле сетевого пространства имен узла ................ 456 13.1.2 Привязка к порту хоста без использования сетевого пространства имен хоста.................................................................................................. 457 13.1.3 Использование пространств имен PID и IPC узла................................. 459 13.2 Конфигурирование контекста безопасности контейнера .................. 460 13.2.1 Выполнение контейнера от имени конкретного пользователя ........... 462 13.2.2 Недопущение работы контейнера в качестве root................................ 462 13.2.3 Выполнение модулей в привилегированном режиме .......................... 463 13.2.4 Добавление отдельных функциональных возможностей ядра в контейнер ................................................................................................ 465 13.2.5 Удаление функциональных возможностей из контейнера .................. 467 13.2.6 Запрет записи процессами в файловую систему контейнера .............. 468 13.2.7 Совместное использование томов, когда контейнеры запущены под разными пользователями .................................................................. 469 13.3 Ограничение использования функциональности, связанной с безопасностью в модулях .................................................................... 472 13.3.1 Знакомство с ресурсами PodSecurityPolicy ............................................ 472 13.3.2 Политики runAsUser, fsGroup и supplementalGroups ............................ 475 13.3.3 Конфигурирование разрешенных, стандартных и запрещенных возможностей ............................................................................................ 477 13.3.4 Ограничение типов томов, которые модули могут использовать ....... 479 13.3.5 Назначение разных политик PodSecurityPolicy разным пользователям и группам ......................................................................... 479 13.4 Изоляция сети модулей ........................................................................ 483 13.4.1 Активация изоляции сети в пространстве имен ................................... 484 13.4.2 Разрешение подключения к серверному модулю только некоторых модулей в пространстве имен .................................................................. 484 13.4.3 Изоляция сети между пространствами имен Kubernetes ..................... 485 13.4.4 Изоляция с использованием обозначения CIDR .................................. 486 13.4.5 Лимитирование исходящего трафика набора модулей ........................ 487 13.5 Резюме ................................................................................................... 488 Глава 14. Управление вычислительными ресурсами модулей ..............489 14.1 Запрос на ресурсы для контейнеров модуля ....................................... 489 14.1.1 Создание модулей с ресурсными запросами ....................................... 490 14.1.2 Как ресурсные запросы влияют на назначение модуля узлу ............... 491 14.1.3 Как запросы на ЦП влияют на совместное использование процессорного времени ............................................................................ 496 14.1.4 Определяем и запрашиваем настраиваемые ресурсы ......................... 497
Стр.15
Оглавление  15 14.2 Лимитирование ресурсов, доступных контейнеру ............................. 498 14.2.1 Установка жесткого лимита на объем ресурсов, которые может использовать контейнер ........................................................................... 498 14.2.2 Превышение лимитов ............................................................................. 500 14.2.3 Как приложения в контейнерах видят лимиты .................................... 501 14.3 Классы QoS модулей ............................................................................. 503 14.3.1 Определение класса QoS для модуля ..................................................... 503 14.3.2 Какой процесс уничтожается при нехватке памяти ............................. 506 14.4 Установка стандартных запросов и лимитов для модулей в расчете на пространство имен ............................................................ 508 14.4.1 Знакомство с ресурсом LimitRange ........................................................ 508 14.4.2 Создание объекта LimitRange ................................................................. 509 14.4.3 Обеспечение лимитов ............................................................................. 511 14.4.4 Применение стандартных ресурсных запросов и лимитов ................. 511 14.5 Лимитирование общего объема ресурсов, доступного в пространстве имен ............................................................................... 512 14.5.1 Объект ResourceQuota ............................................................................. 513 14.5.2 Указание квоты для постоянного хранилища ....................................... 515 14.5.3 Лимитирование количества создаваемых объектов............................. 515 14.5.4 Указание квот для конкретных состояний модулей и/или классов QoS ..................................................................................... 517 14.6 Мониторинг потребления ресурсов модуля ........................................ 518 14.6.1 Сбор и извлечение фактических данных о потреблении ресурсов ..... 518 14.6.2 Хранение и анализ исторической статистики потребления ресурсов ..................................................................................................... 521 14.7 Резюме ................................................................................................... 524 Глава 15. Автоматическое масштабирование модулей и узлов кластера ............................................................................................526 15.1 Горизонтальное автомасштабирование модуля ................................. 527 15.1.1 Процесс автомасштабирования ............................................................. 527 15.1.2 Масштабирование на основе задействованности ЦП .......................... 531 15.1.3 Масштабирование на основе потребления памяти .............................. 538 15.1.4 Масштабирование на основе других, а также настраиваемых метрик ........................................................................................................ 539 15.1.5 Определение метрик, подходящих для автомасштабирования .......... 542 15.1.6 Уменьшение масштаба до нуля реплик ................................................. 542 15.2 Вертикальное автомасштабирование модуля ..................................... 543 15.2.1 Автоматическое конфигурирование ресурсных запросов .................. 543 15.2.2 Модификация ресурсных запросов во время работы модуля .............. 543 15.3 Горизонтальное масштабирование узлов кластера ............................ 544 15.3.1 Знакомство с кластерным автопреобразователем масштаба .............. 544 15.3.2 Активация кластерного автопреобразователя масштаба .................... 546
Стр.16
16  Оглавление 15.3.3 Ограничение прерывания службы во время уменьшения масштаба кластера .................................................................................... 547 15.4 Резюме ................................................................................................... 548 Глава 16. Продвинутое назначение модулей узлам ................................550 16.1 Использование ограничений и допусков для отделения модулей от определенных узлов ........................................................................... 550 16.1.1 Знакомство с ограничениями и допусками .......................................... 551 16.1.2 Добавление в узел индивидуально настроенных ограничений .......... 553 16.1.3 Добавление в модули допусков .............................................................. 554 16.1.4 Для чего можно использовать ограничения и допуски ........................ 555 16.2 Использование сходства узлов для привлечения модулей к определенным узлам ........................................................................... 556 16.2.1 Указание жестких правил сходства узлов .............................................. 557 16.2.2 Приоретизация узлов при назначении модуля .................................... 559 16.3 Совместное размещение модулей с использованием сходства и антисходства модулей ......................................................................... 563 16.3.1 Использование межмодульного сходства для развертывания модулей на одном узле ............................................................................. 563 16.3.2 Развертывание модулей в одной стойке, зоне доступности или географическом регионе ................................................................... 566 16.3.3 Выражение предпочтений сходства модулей вместо жестких требований ................................................................................................ 567 16.3.4 Назначение модулей на удалении друг от друга с помощью антисходства модулей ............................................................................... 569 16.4 Резюме ................................................................................................... 571 Глава 17. Рекомендации по разработке приложений ..............................572 17.1 Соединение всего вместе ...................................................................... 572 17.2 Жизненный цикл модуля ...................................................................... 574 17.2.1 Приложения должны ожидать, что они могут быть удалены и перемещены ........................................................................................... 574 17.2.2 Переназначение мертвых или частично мертвых модулей ................. 577 17.2.3 Запуск модулей в определенном порядке ............................................. 579 17.2.4 Добавление обработчиков жизненного цикла ...................................... 581 17.2.5 Выключение модуля ................................................................................ 586 17.3 Обеспечение правильной обработки всех клиентских запросов ...... 589 17.3.1 Предотвращение прерывания клиентских подключений при запуске модуля ................................................................................... 590 17.3.2 Предотвращение прерванных подключений при выключении модуля ........................................................................................................ 590 17.4 Упрощение запуска приложений и управления ими в Kubernetes .... 595 17.4.1 Создание управляемых образов контейнеров ...................................... 595
Стр.17
Оглавление  17 17.4.2 Правильное тегирование образов и рациональное использование политики imagePullPolicy ......................................................................... 596 17.4.3 Использование многомерных меток вместо одномерных ................... 596 17.4.4 Описание каждого ресурса с помощью аннотаций .............................. 597 17.4.5 Предоставление информации о причинах прекращения процесса .... 597 17.4.6 Работа с журналами приложений ........................................................... 599 17.5 Рекомендации по разработке и тестированию ................................... 601 17.5.1 Запуск приложений за пределами Kubernetes во время разработки ... 601 17.5.2 Использование Minikube в разработке ................................................... 603 17.5.3 Версионирование и автоматическое развертывание ресурсных манифестов ................................................................................................ 604 17.5.4 Знакомство с Ksonnet как альтернативой написанию манифестов YAML/JSON ............................................................................ 605 17.5.5 Использование непрерывной интеграции и непрерывной доставки (CI/CD) ........................................................................................ 606 17.6 Резюме .................................................................................................... 606 Глава 18. Расширение системы Kubernetes ...............................................608 18.1 Определение своих собственных объектов API .................................. 608 18.1.1 Знакомство с определениями CustomResourceDefinition ..................... 609 18.1.2 Автоматизация пользовательских ресурсов с помощью пользовательских контроллеров .............................................................. 613 18.1.3 Валидация пользовательских объектов ................................................. 618 18.1.4 Предоставление пользовательского сервера API для пользовательских объектов ............................................................... 619 18.2 Расширение Kubernetes с помощью каталога служб Kubernetes (Kubernetes Service Catalog) .................................................................... 621 18.2.1 Знакомство с каталогом служб ............................................................... 621 18.2.2 Знакомство с сервером API каталога служб и менеджером контроллеров ............................................................................................. 623 18.2.3 Знакомство с брокерами служб и API OpenServiceBroker ..................... 623 18.2.4 Резервирование и использование службы ............................................ 625 18.2.5 Отвязывание и дерезервирование ......................................................... 628 18.2.6 Что дает каталог служб ............................................................................ 629 18.3 Платформы, построенные поверх Kubernetes .................................... 629 18.3.1 Контейнерная платформа Red Hat OpenShift ....................................... 629 18.3.2 Deis Workflow и Helm ............................................................................... 633 18.4 Резюме ................................................................................................... 636 Приложение A. Использование kubectl с несколькими кластерами .....637 A.1 Переключение между Minikube и Google Kubernetes Engine ............... 637 A.2 Использование инструмента kubectl со множеством кластеров или пространств имен ............................................................................ 638 A.2.1 Настройка расположения файла kubeconfig ........................................... 638
Стр.18
18  Оглавление A.2.2 Содержимое файла kubeconfig ................................................................. 638 A.2.3 Вывод списка, добавление и изменение записей в файле kubeconfig ....640 A.2.4 Использование инструмента kubectl с разными кластерами, пользователями и контекстами ............................................................... 641 A.2.5 Переключение между контекстами ......................................................... 642 A.2.6 Перечисление контекстов и кластеров ................................................... 642 A.2.7 Удаление контекстов и кластеров ........................................................... 642 Приложение B. Настройка многоузлового кластера с помощью kubeadm .....................................................................................643 B.1 Настройка ОС и необходимых пакетов ................................................. 643 B.1.1 Cоздание виртуальной машины .............................................................. 643 B.1.2 Настройка сетевого адаптера для виртуальной машины ...................... 644 B.1.3 Инсталляция операционной системы ..................................................... 645 B.1.4 Установка Docker и Kubernetes ................................................................. 648 B.1.5 Клонирование виртуальной машины...................................................... 650 B.2 Конфигурирование ведущего узла с помощью kubeadm ..................... 652 B.2.1 Как kubeadm запускает компоненты ....................................................... 653 B.3 Настройка рабочих узлов с помощью kubeadm .................................... 654 B.3.1 Настройка контейнерной сети ................................................................. 655 B.4 Использование кластера с локальной машины .................................... 656 Приложение C. Использование других контейнерных сред выполнения ....................................................................................................657 C.1 Замена Docker на rkt ............................................................................... 657 С.1.1 Настройка Kubernetes для использования rkt ......................................... 657 С.1.2 Опробирование платформы rkt с Minikube ............................................ 658 С.2 Использование других контейнерных сред выполнения посредством CRI ...................................................................................... 660 С.2.1 Знакомство с контейнерной средой выполнения CRI-O ....................... 661 C.2.2 Запуск приложений на виртуальных машинах вместо контейнеров ... 661 Приложение D. Кластерная федерация .....................................................662 D.1 Знакомство с кластерной федерацией Kubernetes ............................... 662 D.2 Архитектура ............................................................................................ 663 D.3 Федеративные объекты API ................................................................... 663 D.3.1 Знакомство с федеративными версиями ресурсов Kubernetes ............. 663 D.3.2 Что делают федеративные ресурсы ......................................................... 664 Предметный указатель .................................................................................667
Стр.19

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст