Осваиваем Kubernetes. Оркестрация контейнерных архитектур - Джиджи Сайфан - E-Book

Осваиваем Kubernetes. Оркестрация контейнерных архитектур E-Book

Джиджи Сайфан

0,0

Beschreibung

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

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 421

Veröffentlichungsjahr: 2022

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Джиджи Сайфан
Осваиваем Kubernetes. Оркестрация контейнерных архитектур

Переводчик С. Черников

Технический редактор Н. Рощина

Литературный редактор Н. Рощина

Художники Н. Гринчик, С. Заматевская , Г. Синякина (Маклакова)

Корректоры Е. Павлович, Е. Рафалюк-Бузовская

Верстка Г. Блинов

Джиджи Сайфан

Осваиваем Kubernetes. Оркестрация контейнерных архитектур. — СПб.: Питер, 2021.

ISBN 978-5-4461-0973-9

© ООО Издательство "Питер", 2021

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

Оглавление

Об авторе
О рецензентах
Предисловие
Для кого предназначена книга
Темы, рассмотренные в книге
Как извлечь из книги максимальную пользу
Полноцветные изображения
Условные обозначения
1. Архитектура Kubernetes
Что такое Kubernetes
Чем Kubernetes не является
Оркестрация контейнеров
Концепции, лежащие в основе Kubernetes
Углубленное рассмотрение архитектуры Kubernetes
API Kubernetes
Ведущие компоненты Kubernetes
Среды выполнения, совместимые с Kubernetes
Непрерывная интеграция и разработка
Резюме
2. Создание кластеров Kubernetes
Быстрое создание одноузлового кластера с помощью Minikube
Создание многоузлового кластера с помощью kubeadm
Создание кластеров в облаке (GCP, AWS и Azure)
Создание аппаратного кластера с нуля
Процесс создания кластера
Использование инфраструктуры частного виртуального облака
Резюме
3. Мониторинг, журналирование и решение проблем
Мониторинг Kubernetes с помощью Heapster
Установка Heapster
Хранилище InfluxDB
Анализ производительности с помощью панели управления
Обнаружение неисправностей на узлах
Примеры потенциальных проблем
Проектирование устойчивых систем
Аппаратные сбои
Использование Prometheus
Резюме
4. Высокая доступность и надежность
Концепции, связанные с высокой доступностью
Рекомендуемые методики достижения высокой доступности
Обновление кластера на лету
Производительность, расходы и компромиссы архитектуры крупных кластеров
Резюме
5. Конфигурация безопасности, ограничений и учетных записей в Kubernetes
Проблемы безопасности, стоящие перед Kubernetes
Как закаляется Hardening
Многопользовательские кластеры
Резюме
6. Использование критически важных ресурсов Kubernetes
Проектирование системы Hue
Использование Kubernetes для построения системы Hue
Разделение внутренних и внешних сервисов
Ограничение доступа с помощью пространства имен
Запуск заданий
Интеграция с внешними компонентами
Применение контейнеров инициализации для упорядоченного запуска подов
Развитие системы Hue с помощью Kubernetes
Резюме
7. Работа с хранилищем данных в Kubernetes
Подробное знакомство с постоянными томами
Типы томов в облачных хранилищах GCE, AWS и Azure
Тома GlusterFS и Ceph в Kubernetes
Управление томами внутрикластерных контейнеров с помощью Flocker
Интеграция промышленного хранилища в Kubernetes
Отображение томов
Использование сторонних хранилищ с помощью FlexVolume
Container Storage Interface
Резюме
8. Запуск приложений с сохранением состояния
Состояние приложений в Kubernetes
Механизм обнаружения: общие переменные окружения или DNS-записи
Выполнение кластера Cassandra в Kubernetes
Резюме
9. Плавающие обновления, масштабирование и квоты
Горизонтальное автомасштабирование подов
Плавающие обновления с автомасштабированием
Ограничение ресурсов с помощью лимитов и квот
Выбор и регулирование мощности кластера
Экстремальные нагрузки в Kubernetes
Резюме
10. Продвинутая организация сети в Kubernetes
Сетевая модель Kubernetes
Сетевые решения для Kubernetes
Эффективное использование сетевых политик
Способы балансирования нагрузки
Træfic
Написание собственного дополнения для CNI
Резюме
11. Запуск Kubernetes в нескольких облаках и многокластерном режиме
Многокластерный режим
Управление многокластерным режимом Kubernetes
Выполнение федеративных рабочих нагрузок
Резюме
12. Настройка Kubernetes: API и дополнения
Работа с API Kubernetes
Расширение API Kubernetes
Написание дополнений Kubernetes
Использование веб-хуков для контроля доступа
Резюме
13. Работа с диспетчером пакетов Kubernetes
Знакомство с Helm
Использование Helm
Создание своих собственных схем
Резюме
14. Будущее Kubernetes
Дорога в будущее
Конкуренция
Время Kubernetes
Обучение и подготовка
Модулирование и дополнения «вне дерева»
Технология service mesh и serverless-фреймворки
Резюме

Об авторе

Джиджи Сайфан (Gigi Sayfan) работает главным архитектором программного обеспечения в компании Helix. Вот уже 22 года разрабатывает приложения в сферах обмена мгновенными сообщениями и морфинга1. Джиджи ежедневно пишет код промышленного уровня на таких языках программирования, как Go, Python, C/C++, C#, Java, Delphi, JavaScript и даже Cobol и PowerBuilder, для операционных систем Windows, Linux, macOS, Lynx (встраиваемые решения) и др. Его знания и опыт распространяются на базы данных, сети, распределенные системы, нестандартные пользовательские интерфейсы и циклы разработки программного обеспечения общего характера.

1Технология в компьютерной анимации, визуальный эффект, создающий впечатление плавной трансформации одного объекта в другой. Используется в игровом и телевизионном кино, в телевизионной рекламе. — Здесь и далее примеч. пер.

О рецензентах

Дес Друри (Des Drury) — страстный технолог с более чем 25-летним опытом работы в ИТ-индустрии. Дес сумел распознать преимущества платформы Kubernetes на самых ранних этапах ее развития и начал пропагандировать ее всем, кто проявлял малейший интерес. Он соорганизатор Мельбурнской группы пользователей Kubernetes. В 2015 году Дес выпустил собственный дистрибутив Kubernetes под названием Open Data center.

Дес — директор компании Cito Pro, которая специализируется на Kubernetes и программном обеспечении с открытым кодом. В этой должности он помог множеству организаций с внедрением Kubernetes и сопутствующих технологий.

Якуб Павлик (Jakub Pavlik) — сооснователь, бывший технический директор, а ныне главный архитектор компании Tcp Cloud (с 2016 года входит в Mirantis). Вместе со своей командой Якуб несколько лет работал над облачной платформой IaaS, которая обеспечивала развертывание и администрирование проектов OpenStack-Salt и OpenContrail для крупных поставщиков услуг.

В качестве технического директора компании Volterra Inc. он совместно с другими командами опытных профессионалов занимается разработкой и внедрением пограничной вычислительной платформы нового поколения.

Предисловие

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

Начнем с изучения фундаментальных свойств архитектуры Kubernetes и подробно рассмотрим ее структуру. Вы узнаете, как с помощью системы запускать сложные микросервисы с сохранением состояния, в том числе с применением продвинутых возможностей: горизонтального автомасштабирования подов (pod), выкатывания обновлений, квот на ресурсы и постоянных серверных хранилищ. На реальных примерах исследуете разные варианты сетевой конфигурации и научитесь подготавливать, реализовывать и отлаживать различные сетевые дополнения Kubernetes. В конце книги узнаете, как разрабатывать и использовать нестандартные ресурсы в режиме автоматизации и обслуживания. Это издание затрагивает некоторые дополнительные концепции, появившиеся в версии Kubernetes 1.10, например Promethus, управление доступом на основе ролей и агрегацию API.

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

Для кого предназначена книга

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

Темы, рассмотренные в книге

Глава 1 «Архитектура Kubernetes» познакомит вас с устройством системы Ku­bernetes и поможет понять причины выбора тех или иных архитектурных решений.

Глава 2 «Создание кластеров Kubernetes» представит различные способы создания кластеров Kubernetes. С помощью предложенных инструментов вы разработаете и изучите несколько кластеров.

Глава 3 «Мониторинг, журналирование и решение проблем» поможет подготовить систему мониторинга и измерения в кластерах Kubernetes и понять, как она работает. Это позволит вам обнаруживать и устранять типичные проблемы, с которыми администраторы сталкиваются в ежедневной работе.

Глава 4 «Высокая доступность и надежность» научит проектировать высокодоступные кластеры Kubernetes и выполнять их обновление на лету. Вы научитесь подготавливать свои системы для промышленной среды, для работы в крупных масштабах.

Глава 5 «Конфигурация безопасности,ограничений и учетных записей в Kuber­netes» познакомит и научит вас работать с настройками безопасности и ограничений, интеграцией с AAA-серверами, пространствами имен и конфигурацией служебных учетных записей.

Глава 6 «Использование критически важных ресурсов Kubernetes» покажет, как в промышленных условиях можно применять почти любые самые актуальные ресурсы Kubernetes. Вы узнаете, как определять и доставлять их, а также управлять их версиями.

Глава 7 «Работа с хранилищем данных в Kubernetes» познакомит вас с драйверами для постоянных томов с данными и покажет, как с ними работать. Вы узнаете, как работает Flocker, и научитесь интегрировать в Kubernetes существующие хранилища данных уровня предприятия (iSCSI/NFS/FC).

Глава 8«Запуск приложений с сохранением состояния» научит преобразовывать монолитные системы, обладающие состоянием, в микросервисы, которые работают внутри Kubernetes и способны выдерживать промышленные нагрузки. Вам будет представлено несколько способов добиться этого с ресурсом PetSet или без него в версиях Kubernetes, предшествовавших 1.3. Вы сможете заполнить пробелы, имеющиеся в действующей документации.

Глава 9 «Плавающие обновления, масштабирование и квоты» покажет, как выкатывать обновления и как ведет себя горизонтальное автомасштабирование подов. Вы научитесь выполнять и подстраивать под себя проверки масштабиру­емости в промышленных условиях. И сможете использовать квоты на процессорные ресурсы и память.

Глава 10 «Продвинутая организация сети в Kubernetes» позволит вам определить, какие сетевые дополнения подходят в тех или иных ситуациях, научиться развертывать их вместе с Kubernetes и расширять их возможности. Вы также овладеете балансировкой нагрузки с помощью iptables.

Глава 11 «Запуск Kubernetes в нескольких облаках и многокластерном режиме» познакомит вас с разными вариантами развертывания кластеров Kubernetes в промышленной среде. Будут представлены инструкции относительно того, как выделять, запускать и автоматизировать кластеры в Amazon и Google Cloud Engine, в том числе географически распределенные многокластерные системы с использованием Workload API.

Глава 12 «Настройка Kubernetes: API и дополнения» поможет вам реализовать и интегрировать сторонние ресурсы в имеющиеся среды и понять принцип усовершенствования API Kubernetes. В конце вы также научитесь применять внешние нестандартные механизмы распределения нагрузки при локальном развертывании с использованием популярных серверов haproxy или nginx.

Глава 13 «Поддержка диспетчера пакетов Kubernetes» покажет, как работать с приложениями Kubernetes, поставляемыми в виде пакетов. В начале этой главы вы познакомитесь с диспетчером Helm Classic, а затем перейдете к изучению Helm for Kubernetes. В конце будут приведены примеры создания и обновления пакетов в репозитории Helm, которые можно в дальнейшем развертывать и обслуживать в промышленных условиях.

Глава 14 «Будущее Kubernetes» научит вас создавать и сохранять в репозитории Helm собственные пакеты. Вы узнаете, как с помощью конвейеров доставки Kubernetes-пакеты попадают из репозиториев в кластеры.

Как извлечь из книги максимальную пользу

Для выполнения примеров, которые приводятся в издании, нужно установить на компьютер последние версии Docker и Kubernetes (желательно 1.10). Система Windows 10 Professional позволяет включить режим гипервизора. Если используется другая ОС, придется установить VirtualBox, содержащий Linux.

Полноцветные изображения

PDF-файл с цветными оригинальными снимками экранов и схемами, приведенными в книге, вы можете скачать по адресу https://www.packtpub.com/sites/default/files/downloads/MasteringKubernetesSecondEdition_ColorImages.pdf.

Условные обозначения

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

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

Блок кода выглядит следующим образом:

type Scheduler struct {

    config *Config

}

Любой ввод или вывод в командной строке записывается так:

> kubectl create -f candy.yaml

candy "chocolate" created

Рубленый шрифт. Обозначает URL-адреса, текст в графическом интерфейсе и псевдонимы в Twitter.

Курсив. Обозначает новый термин или важное слово.

 

Предупреждения и важные замечания выглядят таким образом.

 

Советы и подсказки выглядят так.

2. Создание кластеров Kubernetes

Из предыдущей главы вы узнали, что представляет собой платформа Kubernetes, как она спроектирована, какие концепции и среды выполнения поддерживает и как вписывается в процесс CI/CD.