Опубликовано

Новинка: “Kubernetes и сети. Многоуровневый подход”

Kubernetes и сети. Многоуровневый подход

Книга посвящена  интеграции Kubernetes в готовые компьютерные сети. Рассмотрено, как оркестратор Kubernetes вписывается в сетевую модель OSI.  Раскрыты вопросы интеграции сетей предприятия с облачными мощностями и контейнерными архитектурами. Рассмотрены ключевые факторы и новые зоны ответственности, возникающие при взаимодействии Kubernetes с каждым из уровней модели OSI. Приведены примеры быстрого масштабирования нагрузок, рассказано, как обеспечивать целостность данных и высокую отказоустойчивость, при активном применении современной виртуализации и при передаче больших объёмов данных по сети.

 Для Linux-разработчиков, DevOps-инженеров и системных администраторов

 

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

  • Изучите сетевую модель Kubernetes
  • Выберите для ваших кластеров наилучший интерфейс, соответствующий требованиям CNCF
  • Исследуйте примитивы сетевого уровня и операционной системы Linux, лежащие в основе Kubernetes
  • Научитесь быстро устранять сетевые проблемы и предотвращать простои
  • Узнайте, как при помощи 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

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

 

 

James Strong

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