Kubernetes: лучшие практики

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Положитесь на опыт профессионалов, успешно применяющих и развивающих проект Kubernetes. Инженеры Microsoft предлагают лучшие приемы оркестрации контейнеров. Их практики сложились в процессе разработки распределенных систем, на ответственных и нагруженных проектах. Вам останется лишь слегка адаптировать код. Книга идеально подойдет тем, кто уже знаком с Kubernetes, но еще не умеет использовать его максимально эффективно. Вы узнаете все, что необходимо для создания классного Kubernetes приложения, в том числе: • Подготовка окружения и разработка приложений в Kubernetes. • Паттерны мониторинга и защиты ваших систем, управления обновлениями. • Сетевые политики Kubernetes и роли сервисных сетей в экосистеме. • Использование Kubernetes в задачах машинного обучения.

Author(s): Брендан Бернс, Эдди Вильяльба, Дейв Штребель, Лахлан Эвенсон
Edition: 1
Publisher: Питер
Year: 2021

Language: Russian
Commentary: Vector PDF
Pages: 288
City: СПб.
Tags: DevOps; Machine Learning; Monitoring; Logging; Clusters; Deployment; Metric Analysis; Best Practices; Network Security; Application Development; Networking; Kubernetes; Continuous Integration; Access Management; Testing; Scheduling; Prometheus; Configuration Management; Helm; Stateless Applications; Architecture Patterns; cAdvisor; Alerting; Versioning; Rollouts; Releases; Stateful Applications

Введение
Кому стоит прочесть эту книгу
Почему мы написали ее
Структура книги
Условные обозначения
Использование примеров кода
Благодарности
От издательства
Глава 1. Создание простого сервиса
Обзор приложения
Управление конфигурационными файлами
Создание реплицированного сервиса с помощью ресурса Deployment
Практические рекомендации по управлению образами
Создание реплицированного приложения
Настройка внешнего доступа для HTTP-трафика
Конфигурация приложения с помощью ConfigMap
Управление аутентификацией с помощью объектов Secret
Stateful-развертывание простой базы данных
Создание балансировщика нагрузки для TCP с использованием Service
Направление трафика к серверу статических файлов с помощью Ingress
Параметризация приложения с помощью Helm
Рекомендации по развертыванию сервисов
Резюме
Глава 2. Процесс разработки
Цели
Построение кластера для разработки
Подготовка разделяемого кластера для нескольких разработчиков
Добавление новых пользователей
Создание и защита пространства имен
Управление пространствами имен
Сервисы уровня кластера
Рабочие процессы разработчика
Начальная подготовка
Активная разработка
Тестирование и отладка
Рекомендации по подготовке среды для разработки
Резюме
Глава 3. Мониторинг и ведение журнала в Kubernetes
Метрики и журнальные записи
Разновидности мониторинга
Методы мониторинга
Обзор метрик, доступных в Kubernetes
cAdvisor
Сервер метрик
kube-state-metrics
Какие метрики нужно отслеживать
Средства мониторинга
Мониторинг в Kubernetes с использованием Prometheus
Обзор журналирования
Инструменты для ведения журнала
Журналирование с использованием стека EFK
Уведомления
Рекомендации по мониторингу, журналированию и созданию уведомлений
Мониторинг
Журналирование
Создание уведомлений
Резюме
Глава 4. Конфигурация, Secrets и RBAC
Конфигурация с использованием объектов ConfigMap и Secret
Объекты ConfigMap
Объекты Secret
Общепринятые рекомендации по работе с API ConfigMap и Secret
RBAC
Основные концепции RBAC
Рекомендации по работе с RBAC
Резюме
Глава 5. Непрерывная интеграция, тестирование и развертывание
Управление версиями
Непрерывная интеграция
Тестирование
Сборка контейнеров
Назначение тегов образам контейнеров
Непрерывное развертывание
Стратегии развертывания
Тестирование в промышленных условиях
Подготовка процесса и проведение хаотического эксперимента
Подготовка CI
Подготовка CD
Выполнение плавающего обновления
Простой хаотический эксперимент
Рекомендации относительно CI/CD
Резюме
Глава 6. Версии, релизы и выкатывание обновлений
Ведение версий
Релизы
Развертывание обновлений
Полноценный пример
Рекомендации по ведению версий, созданию релизов и развертыванию обновлений
Резюме
Глава 7. Глобальное распределение приложений и промежуточное тестирование
Распределение вашего образа
Параметризация развертываний
Глобальное распределение трафика
Надежное развертывание программного обеспечения в глобальном масштабе
Проверка перед развертыванием
Канареечный регион
Разные типы регионов
Подготовка к глобальному развертыванию
Когда что-то идет не так
Рекомендации по глобальному развертыванию
Резюме
Глава 8. Управление ресурсами
Планировщик Kubernetes
Предикаты
Приоритеты
Продвинутые методики планирования
Принадлежность и непринадлежность pod
nodeSelector
Ограничения и допуски
Управление ресурсами pod
Запросы ресурсов
Лимиты на ресурсы и качество обслуживания
Объекты PodDisruptionBudget
Управление ресурсами с помощью пространств имен
ResourceQuota
LimitRange
Масштабирование кластера
Масштабирование приложений
Масштабирование с использованием HPA
HPA с применением пользовательских метрик
Масштабирование с использованием VPA
Рекомендации по управлению ресурсами
Резюме
Глава 9. Сетевые возможности, безопасность сети и межсервисное взаимодействие
Принципы работы с сетью в Kubernetes
Сетевые дополнения
Kubenet
Рекомендации по использованию Kubenet
Дополнение CNI
Рекомендации по использованию CNI
Сервисы в Kubernetes
Тип сервисов ClusterIP
Тип сервисов NodePort
Тип сервисов ExternalName
Тип сервисов LoadBalancer
Объекты и контроллеры Ingress
Рекомендации по использованию сервисов и контроллеров Ingress
Сетевые политики безопасности
Рекомендации по применению сетевых политик
Механизмы межсервисного взаимодействия
Рекомендации по применению механизмов межсервисного взаимодействия
Резюме
Глава 10. Безопасность pod и контейнеров
API PodSecurityPolicy
Включение PodSecurityPolicy
Принцип работы PodSecurityPolicy
Трудности при работе с PodSecurityPolicy
Рекомендации по использованию политики PodSecurityPolicy
PodSecurityPolicy: что дальше
Изоляция рабочих заданий и RuntimeClass
Использование RuntimeClass
Реализации сред выполнения
Изоляция рабочих заданий и рекомендации по использованию RuntimeClass
Другие важные аспекты безопасности pod и контейнеров
Контроллеры доступа
Средства обнаружения вторжений и аномалий
Резюме
Глава 11. Политики и принципы управления кластером
Почему политики и принципы управления кластером имеют большое значение
В чем отличие от других политик
Облачно-ориентированная система политик
Введение в Gatekeeper
Примеры политик
Терминология проекта Gatekeeper
Определение шаблона ограничений
Определение ограничений
Репликация данных
Обратная связь
Аудит
Более тесное знакомство с Gatekeeper
Gatekeeper: что дальше?
Рекомендации относительно политик и принципов управления
Резюме
Глава 12. Управление несколькими кластерами
Зачем может понадобиться больше одного кластера
Проблемы многокластерной архитектуры
Развертывание в многокластерной архитектуре
Методики развертывания и администрирования
Администрирование кластера с помощью методики GitOps
Средства управления несколькими кластерами
Kubernetes Federation
Рекомендации по эксплуатации сразу нескольких кластеров
Резюме
Глава 13. Интеграция внешних сервисов с Kubernetes
Импорт сервисов в Kubernetes
Сервисы со стабильными IP-адресами без использования селекторов
Стабильные доменные имена сервисов на основе CNAME
Активный подход с применением контроллеров
Экспорт сервисов из Kubernetes
Экспорт сервисов с помощью внутреннего балансировщика нагрузки
Экспорт сервисов типа NodePort
Интеграция внешних серверов в Kubernetes
Разделение сервисов между кластерами Kubernetes
Сторонние инструменты
Рекомендации по соединению кластеров и внешних сервисов
Резюме
Глава 14. Машинное обучение и Kubernetes
Почему Kubernetes отлично подходит для машинного обучения
Рабочий процесс машинного обучения
Машинное обучение с точки зрения администраторов кластеров Kubernetes
Обучение модели в Kubernetes
Распределенное обучение в Kubernetes
Требования к ресурсам
Специализированное оборудование
Библиотеки, драйверы и модули ядра
Хранение
Организация сети
Узкоспециализированные протоколы
Машинное обучение с точки зрения специалистов по анализу данных
Рекомендации по машинному обучению в Kubernetes
Резюме
Глава 15. Построение высокоуровневых абстракций на базе Kubernetes
Разные подходы к разработке высокоуровневых абстракций
Расширение Kubernetes
Расширение кластеров Kubernetes
Расширение пользовательских аспектов Kubernetes
Архитектурные аспекты построения новых платформ
Поддержка экспорта в образ контейнера
Поддержка существующих механизмов для обнаружения сервисов и работы с ними
Рекомендации по созданию прикладных платформ
Резюме
Глава 16. Управление состоянием
Тома и их подключение
Рекомендации по обращению с томами
Хранение данных в Kubernetes
PersistentVolume
PersistentVolumeClaim
Классы хранилищ
Рекомендации по использованию хранилищ в Kubernetes
Приложения с сохранением состояния
Объекты StatefulSet
Проект Operator
Рекомендации по использованию StatefulSet и Operator
Резюме
Глава 17. Контроль доступа и авторизация
Контроль доступа
Что такое контроллеры доступа?
Почему они важны?
Типы контроллеров доступа
Конфигурация веб-хуков доступа
Рекомендации по использованию контроллеров доступа
Авторизация
Модули авторизации
Практические советы относительно авторизации
Резюме
Глава 18. В заключение
Об авторах
Об изображении на обложке