
Книга посвящена интеграции Kubernetes в готовые компьютерные сети. Рассмотрено, как оркестратор Kubernetes вписывается в сетевую модель OSI. Раскрыты вопросы интеграции сетей предприятия с облачными мощностями и контейнерными архитектурами. Рассмотрены ключевые факторы и новые зоны ответственности, возникающие при взаимодействии Kubernetes с каждым из уровней модели OSI. Приведены примеры быстрого масштабирования нагрузок, рассказано, как обеспечивать целостность данных и высокую отказоустойчивость, при активном применении современной виртуализации и при передаче больших объёмов данных по сети.
Для Linux-разработчиков, DevOps-инженеров и системных администраторов
Авторы помогут вам быстро познакомиться со всеми тонкостями, возникающими при развёртывании Kubernetes в больших контейнерных конфигурациях. Если хотите преуспеть в поддержке продакшен-кластера и эффективно устранять в нём неполадки, то нужно уверенно различать абстракции, предоставляемые на каждом из уровней OSI. Как – читайте в этой книге.
- Изучите сетевую модель Kubernetes
- Выберите для ваших кластеров наилучший интерфейс, соответствующий требованиям CNCF
- Исследуйте примитивы сетевого уровня и операционной системы Linux, лежащие в основе Kubernetes
- Научитесь быстро устранять сетевые проблемы и предотвращать простои
- Узнайте, как при помощи Kubernetes организуются и поддерживаются облачные сети
- Взвесьте достоинства и недостатки различных сетевых инструментов и научитесь наилучшим образом формировать стек для обслуживания сети
Предисловие…………………………………………………………………………………………….. 9
Просто еще один пакет?………………………………………………………………………………………………………………. 9
Для кого эта книга……………………………………………………………………………………………………………………….. 9
Что вы узнаете……………………………………………………………………………………………………………………………. 10
Обозначения, используемые в данной книге…………………………………………………………………………… 10
Использование примеров программ…………………………………………………………………………………………. 10
Благодарности…………………………………………………………………………………………………………………………… 11
Глава 1. Введение в сетевые технологии………………………………………………… 13
История сетевых технологий……………………………………………………………………………………………………. 13
Модель OSI…………………………………………………………………………………………………………………………………. 16
TCP/IP…………………………………………………………………………………………………………………………………………. 20
Уровень приложения………………………………………………………………………………………………………. 22
HTTP………………………………………………………………………………………………………………………… 22
Транспортный уровень………………………………………………………………………………………………….. 25
TCP…………………………………………………………………………………………………………………………… 25
TLS…………………………………………………………………………………………………………………………… 36
UDP………………………………………………………………………………………………………………………….. 38
Уровень межсетевого взаимодействия………………………………………………………………………….. 39
Протокол Интернета………………………………………………………………………………………………………. 39
Движение по сети……………………………………………………………………………………………………. 44
ICMP………………………………………………………………………………………………………………………… 47
Уровень канала данных…………………………………………………………………………………………………. 49
Снова наш веб-сервер…………………………………………………………………………………………………….. 54
Заключение………………………………………………………………………………………………………………………………… 56
Глава 2. Поддержка сети в ОС Linux……………………………………………………… 59
Базовые понятия………………………………………………………………………………………………………………………… 59
Сетевой интерфейс…………………………………………………………………………………………………………………….. 63
Интерфейс сетевого моста………………………………………………………………………………………………………… 64
Обработка пакетов в ядре Linux………………………………………………………………………………………………. 66
Netfilter (межсетевой фильтр)…………………………………………………………………………………………. 66
Conntrack…………………………………………………………………………………………………………………………. 70
Маршрутизация……………………………………………………………………………………………………………… 72
Высокоуровневая маршрутизация…………………………………………………………………………………………… 73
Утилита iptables………………………………………………………………………………………………………………. 74
Таблицы iptables…………………………………………………………………………………………………….. 75
Цепочки iptables……………………………………………………………………………………………………… 75
Подцепочки…………………………………………………………………………………………………………….. 79
Правила iptables…………………………………………………………………………………………………….. 80
Практическое применение iptables……………………………………………………………………….. 82
IPVS………………………………………………………………………………………………………………………………….. 85
eBPF…………………………………………………………………………………………………………………………………. 87
Средства сетевой диагностики…………………………………………………………………………………………………. 90
Безопасность…………………………………………………………………………………………………………………… 90
ping…………………………………………………………………………………………………………………………………… 91
traceroute…………………………………………………………………………………………………………………………. 92
dig…………………………………………………………………………………………………………………………………….. 93
telnet…………………………………………………………………………………………………………………………………. 95
nmap………………………………………………………………………………………………………………………………… 96
netstat……………………………………………………………………………………………………………………………….. 97
netcat………………………………………………………………………………………………………………………………… 98
Openssl……………………………………………………………………………………………………………………………… 99
cURL………………………………………………………………………………………………………………………………. 100
Заключение………………………………………………………………………………………………………………………………. 102
Глава 3. Основы работы с контейнерами…………………………………………….. 103
Введение в контейнеры……………………………………………………………………………………………………………. 103
Приложения…………………………………………………………………………………………………………………… 103
Гипервизор……………………………………………………………………………………………………………………. 104
Контейнеры…………………………………………………………………………………………………………………… 105
OCI…………………………………………………………………………………………………………………………. 108
LXC………………………………………………………………………………………………………………………… 109
runC……………………………………………………………………………………………………………………….. 109
containerd………………………………………………………………………………………………………………. 109
lmctfy…………………………………………………………………………………………………………………….. 110
rkt…………………………………………………………………………………………………………………………… 110
Docker……………………………………………………………………………………………………………………. 110
CRI-O…………………………………………………………………………………………………………………….. 111
Примитивы контейнеров…………………………………………………………………………………………………………. 113
Контрольные группы……………………………………………………………………………………………………. 113
Пространства имен………………………………………………………………………………………………………. 114
Задание пространств имен………………………………………………………………………………………….. 116
Основы сетей контейнеров……………………………………………………………………………………………………… 123
Сетевая модель Docker…………………………………………………………………………………………………. 132
Оверлейная сеть……………………………………………………………………………………………………………. 134
Сетевой интерфейс контейнера…………………………………………………………………………………… 135
Подключение контейнера к сети…………………………………………………………………………………………….. 137
Соединение контейнер-контейнер………………………………………………………………………………. 142
Взаимодействие между контейнерами на разных хостах………………………………………… 144
Заключение………………………………………………………………………………………………………………………………. 145
Глава 4. Cети в Kubernetes……………………………………………………………………. 147
Сетевая модель Kubernetes……………………………………………………………………………………………………… 147
Узел и конфигурация сети подов……………………………………………………………………………………………. 150
Изолированные сети…………………………………………………………………………………………………….. 151
Плоские сети…………………………………………………………………………………………………………………. 152
Островные сети…………………………………………………………………………………………………………….. 153
Конфигурация компонента kube-controller-manager…………………………………………………. 154
Kubelet………………………………………………………………………………………………………………………………………. 155
Готовность пода и ее проверка………………………………………………………………………………………………. 156
Спецификация интерфейса CNI……………………………………………………………………………………………… 162
Плагины CNI…………………………………………………………………………………………………………………………….. 163
Интерфейс IPAM…………………………………………………………………………………………………………… 164
Распространенные плагины CNI………………………………………………………………………………… 165
Компонент kube-proxy…………………………………………………………………………………………………………….. 170
Режим userspace……………………………………………………………………………………………………………. 171
Режим iptables……………………………………………………………………………………………………………….. 171
Режим IPVS……………………………………………………………………………………………………………………. 173
Режим kernelspace…………………………………………………………………………………………………………. 173
Сетевая политика…………………………………………………………………………………………………………………….. 173
Создание объекта NetworkPolicy с помощью Сilium…………………………………………………. 177
Группировка подов………………………………………………………………………………………………………. 182
Тип LabelSelector………………………………………………………………………………………………….. 183
Правила…………………………………………………………………………………………………………………………. 185
DNS 189
Двойной стек IPv4/ IPv6………………………………………………………………………………………………………….. 194
Заключение………………………………………………………………………………………………………………………………. 196
Глава 5. Сетевые абстракции в Kubernetes…………………………………………… 197
StatefulSet…………………………………………………………………………………………………………………………………. 198
Конечные точки……………………………………………………………………………………………………………………….. 200
Endpoint Slices…………………………………………………………………………………………………………………………… 204
Сервисы Kubernetes…………………………………………………………………………………………………………………. 208
NodePort…………………………………………………………………………………………………………………………. 209
ClusterIP…………………………………………………………………………………………………………………………. 212
Headless-сервис…………………………………………………………………………………………………………….. 219
Сервис ExternalName……………………………………………………………………………………………………. 221
Сервис LoadBalancer……………………………………………………………………………………………………. 222
Сервисы Kubernetes — устранение проблем……………………………………………………………… 228
Ингресс……………………………………………………………………………………………………………………………………… 229
Контроллеры и правила ингресса………………………………………………………………………………………….. 230
Задание правил ингресса…………………………………………………………………………………….. 236
Технология service mesh………………………………………………………………………………………………………….. 237
Заключение………………………………………………………………………………………………………………………………. 249
Глава 6. Kubernetes и облачные сети……………………………………………………. 251
Amazon Web Services……………………………………………………………………………………………………………….. 251
Сетевые сервисы AWS………………………………………………………………………………………………….. 251
Виртуальное частное облако……………………………………………………………………………… 252
Регионы и зоны доступности………………………………………………………………………………. 252
Подсеть………………………………………………………………………………………………………………….. 253
Таблицы маршрутизации……………………………………………………………………………………. 254
Эластичный сетевой интерфейс………………………………………………………………………….. 256
Эластичный IP-адрес…………………………………………………………………………………………… 256
Средства обеспечения безопасности…………………………………………………………………. 257
Устройства преобразования сетевых адресов………………………………………………….. 260
Шлюз Интернета………………………………………………………………………………………………….. 260
Эластичные балансировщики нагрузки…………………………………………………………….. 261
Эластичный сервис Kubernetes от Amazon………………………………………………………………… 264
Узлы EKS………………………………………………………………………………………………………………. 264
Режим EKS…………………………………………………………………………………………………………….. 265
Инструмент eksctl…………………………………………………………………………………………………. 268
CNI для виртуального облака в AWS…………………………………………………………………. 270
Ингресс-контроллер для AWS ALB…………………………………………………………………….. 272
Развертывание приложения в кластере AWS EKS…………………………………………………….. 274
Развертывание кластера EKS……………………………………………………………………………… 274
Развертывание тестового приложения……………………………………………………………….. 276
Тестирование сервиса LoadBalancer для веб-сервера……………………………………… 277
Развертывание и тестирование ингресс-контроллера для ALB………………………. 278
Уборка мусора……………………………………………………………………………………………………… 281
Вычислительное облако Google (GCP)…………………………………………………………………………………… 282
Сетевые сервисы GCP…………………………………………………………………………………………………… 282
Регионы и зоны……………………………………………………………………………………………………… 283
Виртуальное частное облако……………………………………………………………………………… 283
Подсеть………………………………………………………………………………………………………………….. 284
Маршруты и правила брандмауэров…………………………………………………………………. 285
Облачная балансировка нагрузки……………………………………………………………………… 285
Инстансы GCE………………………………………………………………………………………………………. 286
Google Kubernetes Engine (GKE)…………………………………………………………………………………… 286
GKE-узлы в облаке Google…………………………………………………………………………………… 287
Azure………………………………………………………………………………………………………………………………………….. 290
Сетевые сервисы Azure………………………………………………………………………………………………… 290
Базовая инфраструктура Azure…………………………………………………………………………… 291
Подсети…………………………………………………………………………………………………………………. 292
Таблицы маршрутизации……………………………………………………………………………………. 292
Публичные и частные IP-адреса………………………………………………………………………… 295
Группы сетевой безопасности…………………………………………………………………………….. 295
Взаимодействие вне пределов виртуальной сети……………………………………………… 297
Балансировщик нагрузки в Azure……………………………………………………………………….. 297
Azure Kubernetes Service……………………………………………………………………………………………….. 300
Плагин CNI для Аzure………………………………………………………………………………………….. 302
Ингресс-контроллер для шлюза приложения……………………………………………………. 303
Развертывание приложения с помощью Azure Kubernetes Service…………………………… 304
Развертывание кластера с помощью Azure Kubernetes Service………………………… 305
Соединение с кластером AKS и его конфигурирование……………………………………. 310
Развертывание веб-сервера…………………………………………………………………………………. 313
Заключительные замечания по AKS…………………………………………………………………… 315
Заключение………………………………………………………………………………………………………………………………. 315

Валлери Лэнси (Vallery Lancey) — инженер по распределённым системам, ранее отвечала за поддержку мультикластера Kubernetes в компании Lyft, работала ведущим DevOps-инженером в компании CheckFront (Британская Колумбия, Канада).

Джеймс Стронг (James Strong) — директор по облачной интеграции в компании Contino, имеет опыт руководящей работы и консультирования многих крупных предприятий и финансовых институтов, участвует в работе конференций AWS User Group и Cloud-Native Louisville. Ранее работал системным администратором в Дейтонском университете, штат Огайо и в компании «GE Appliances».
-
Kubernetes и сети. Многоуровневый подход
1180 ₽
1003 ₽