какая польза от кластера IP в кубернетес - PullRequest
0 голосов
/ 03 октября 2019

Может ли кто-нибудь помочь мне понять IP-адрес, который я вижу для IP-адреса кластера, когда я перечисляю службы.

  1. Что такое IP-адрес кластера (не тип службы, а реальный IP-адрес)?
  2. как это используется?
  3. откуда оно берется?
  4. можно ли определить диапазон для IP-адреса кластера (как мы делаем для сети pod)?

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Хороший вопрос, чтобы начать изучать что-то новое (также для меня):

Ваши проблемы связаны с kube-proxy по умолчанию в кластере K8s, он работает в iptables mode.

Каждый узелв кластере Kubernetes работает Kube-прокси. Kube-proxy отвечает за реализацию формы виртуального IP-адреса для служб.

В этом режиме kube-proxy следит за плоскостью управления Kubernetes для добавления и удаления объектов Service и Endpoint. Для каждого Сервиса он устанавливает правила iptables, которые захватывают трафик на IP-адрес и порт кластера Сервиса и перенаправляют этот трафик на один из внутренних наборов Сервиса. Для каждого объекта Endpoint он устанавливает правила iptables, которые выбирают бэкэнд Pod.

  1. Узловые компоненты kube-proxy :

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

Как описано здесь :

Из-за этих правил iptables,всякий раз, когда пакет предназначен для IP-адреса службы, он DNATed (DNAT = трансляция сетевого адреса назначения), что означает, что IP-адрес назначения изменяется с IP-адреса службы на один из IP-адресов конечных точек, выбранных случайным образом с помощью iptables. Это обеспечивает равномерное распределение нагрузки между внутренними модулями.

Когда происходит это DNAT, эта информация сохраняется в conntrack - таблице отслеживания соединений Linux (хранит преобразования из 5 кортежей, которые iptables выполнил: protocol, srcIP,srcPort, dstIP, dstPort). Это связано с тем, что когда ответ возвращается, он может отменить DNAT, что означает изменение исходного IP-адреса с Pod IP на IP-адрес службы. Таким образом, клиент не знает, как поток пакетов обрабатывается за кулисами.

Существуют также различные режимы, вы можете найти дополнительную информацию здесь

Во время инициализации кластера вы можете использовать --service-cidr строковый параметр Default: "10.96.0.0/12"

  • ClusterIP: IP-адрес, назначенный услуге

Kubernetes назначает стабильный, надежный IP-адрес каждой вновь создаваемой услуге (ClusterIP) из пула кластера доступных IP-адресов службы. Kubernetes также назначает имя хоста для ClusterIP, добавляя запись DNS. ClusterIP и имя хоста являются уникальными в пределах кластера и не изменяются в течение жизненного цикла Сервиса. Kubernetes освобождает ClusterIP и имя хоста только в том случае, если Сервис удален из конфигурации кластера. Вы можете связаться с исправным Pod, на котором запущено ваше приложение, используя ClusterIP или имя хоста Сервиса.

  • Pod IP: IP-адрес, назначенный данному Pod.

    Kubernetes назначает IP-адрес (Pod IP) виртуальному сетевому интерфейсу в пространстве имен сети Pod из диапазона адресов, зарезервированных для Pod на узле. Этот диапазон адресов является подмножеством диапазона IP-адресов, назначенного кластеру для модулей, который можно настроить при создании кластера.

Ресурсы:

Надеюсь, это помогло

0 голосов
/ 03 октября 2019

IP-адрес кластера - это адрес, по которому ваша служба может быть доступна изнутри кластера. Вы не сможете пропинговать из внешней сети IP-адрес кластера, если не выполните какое-либо SSH-туннелирование. Этот IP-адрес автоматически назначается k8s, и может быть возможно определить диапазон (я не уверен и не понимаю, зачем вам это нужно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...