В этом посте я собираюсь изучить настройку сети EKS VPC. Я создал кластер EKS с помощью eksctl с настройками по умолчанию.



Макет VPC

Ниже представлена ​​схема VPC EKS.

Уровень управления EKS работает в управляемом Amazon EKS VPC. VPC уровня данных EKS - это управляемый клиентом VPC. В этом VPC работают рабочие узлы.

VPC создается с IP-адресом 192.168.0.0/16.

Три общедоступные и три частные подсети создаются в трех разных зонах доступности. Это позволяет EKS защитить рабочую нагрузку от любых сбоев в зоне доступности.

  • 192.168.0.0/19 - Публичная подсеть в 1c
  • 192.168.32.0/19 - публичная подсеть в 1b
  • 192.168.64.0/19 - общедоступная подсеть в 1a
  • 192.168.96.0/19 - Частная подсеть в 1c
  • 192.168.128.0/19 - частная подсеть в 1b
  • 192.168.160.0/19 - Частная подсеть в 1a

Интернет-шлюз подключен к VPC.

Шлюз NAT с эластичным IP-адресом (статический IP-адрес) также находится в общедоступной подсети.

Также создается набор общедоступных, частных и основных таблиц маршрутов.

Общедоступная таблица маршрутов используется общедоступными подсетями.

Таблицы частных маршрутов используются частными подсетями. В этих таблицах маршрутов есть соответствующая запись маршрутизации для шлюза NAT, чтобы рабочие узлы могли выполнять любое исходящее интернет-соединение.

Два экземпляра (узла) EC2 типа m5.large создаются в двух общедоступных подсетях с общедоступным IP-адресом.

Доступ к конечной точке сервера API Kubernetes (плоскость управления) по умолчанию установлен как общедоступный. Это полезно во время разработки, так как вы можете подключиться к серверу API из любого места с помощью таких инструментов, как kubectl. Доступ можно дополнительно ограничить с помощью общедоступного списка разрешенных источников.

Запросы Kubernetes API, которые исходят из VPC кластера (например, от узла к плоскости управления), покидают VPC, но не из сети Amazon.

Типы экземпляров, ENI и IP-адреса

Каждый экземпляр EC2 может иметь один или несколько сетевых интерфейсов, и каждый сетевой интерфейс может иметь один или несколько IP-адресов. Тип экземпляра влияет на количество сетевых интерфейсов и доступных IP-адресов.

См. IP-адреса на сетевой интерфейс для каждого типа экземпляра

Тип экземпляра m5.large поддерживает три сетевых интерфейса, и каждый интерфейс может иметь до 10 IP-адресов. . Таким образом обеспечивается 30 IP-адресов на узел. Это накладывает ограничение на количество модулей, работающих на узле!

В этой настройке есть два узла m5.large. i-xxx-9b53 настроен с двумя ENI (eni-xxx-49a2 и eni-xxx-a39e) и i- xxx-a502 настроен с одним ENI (eni-xxx-1e4e).

Каждый ENI настроен с одним первичным адресом и девятью вторичными IP-адресами, т.е. всего 10 IP-адресов / ENI. Таким образом, три ENI дают 3x10 = 30 IP-адресов на двух узлах.

Два дополнительных ENI (eni-xxx-9593, eni-xxx-fa60) создаются в двух разных зонах доступности (ap-south-1a и ap-south-1c), но не привязан ни к какому экземпляру. Эти ENI используются для связи с уровнем Amazon Managed Control.

Доступное количество IP-адресов

Давайте посмотрим на количество доступных IP-адресов для каждой подсети.

Каждая подсеть создается с помощью / 19, т.е. каждая подсеть должна предоставлять (32–19) = 2¹³ = 8192 IP-адресов. Мы знаем, что 5 IP-адресов зарезервированы AWS, поэтому каждая подсеть будет иметь только (8192–5 = 8187) используемых IP-адресов.

  • Подсеть Частная APSOUTH1 B, Подсеть Общедоступная APSOUTH1 B отражают то же самое, т.е. 8187
  • Подсеть Частная APSOUTH1 A и Подсеть Частная APSOUTH1 C используются для созданных ENI (eni-xxx- 9593, eni-xxx-fa60) для связи между плоскостью управления и рабочими узлами. Каждый ENI использует один IP-адрес из каждой подсети. Таким образом получается 8187–1 = 8186 IP-адресов.
  • Подсеть Общедоступная APSOUTH1 A содержит один узел с 10 IP-адресами (1 основной + 9 дополнительных), что дает 8187–10 = 8177 IP-адресов. .
  • Подсеть Public APSOUTH1 C содержит еще один узел m5.large с двумя ENI, и каждый ENI имеет 10 IP-адресов. Здесь также находится шлюз NAT, который потребляет 1 IP. В результате получается 8187–20–1 = 8166 IP-адресов!

ENI и группы безопасности

Группы безопасности присоединяются к ENI, а ENI затем присоединяются к экземпляру EC2. Каждый ENI связан с несколькими группами безопасности.

ekcstl-test-cluster-ControlPlaneSecurityGroup-xxx обеспечивает связь между плоскостью управления и рабочими группами узлов.

eks-xxx-cluster-1665xxx - это созданная EKS группа безопасности, применяемая к ENI, которая подключена к главным узлам EKS Control Plane, а также к любым управляемым рабочим нагрузкам.

eksctl-xxx-cluster-nodegroup-ng-xxx-remoteAccess обеспечивает связь с узлами из внешнего мира.

Резюме

Макета VPC и конфигурации по умолчанию может хватить для многих рабочих нагрузок. Однако это немного облегчает жизнь, когда мы понимаем, как они связаны друг с другом под капотом, чтобы можно было настраивать на основе определенных требований или ограничений. Вы также можете рассмотреть возможность отключения конечной точки общедоступного API в более безопасной среде. Возможны и другие топологии, но это уже другая статья!

Больше контента на plainenglish.io