2016-03-18 2 views
8

Кубэ-прокси имеет опцию под названием --proxy-режим, и в соответствии с сообщением справки, эта опция может быть или пользовательским пространством Iptables (см. Ниже)Что делает режим userspace в режиме прокси-сервера прокси-сервера?

# kube-proxy -h 
Usage of kube-proxy: 
... 
     --proxy-mode="": Which proxy mode to use: 'userspace' (older, stable) or 'iptables' (experimental). If blank, look at the Node object on the Kubernetes API and respect the 'net.experimental.kubernetes.io/proxy-mode' annotation if provided. Otherwise use the best-available proxy (currently userspace, but may change in future versions). If the iptables proxy is selected, regardless of how, but the system's kernel or iptables versions are insufficient, this always falls back to the userspace proxy. 
... 

Я не могу понять вне, что делает пользовательское пространство режим здесь.

Любой может сказать мне, что принцип работы, когда kube-прокси работает под userpace режим?

ответ

28

Пользовательское пространство и iptables относятся к тому, что на самом деле обрабатывает переадресацию соединения. В обоих случаях устанавливаются локальные правила iptables для перехвата исходящих TCP-соединений, имеющих IP-адрес назначения, связанный с сервисом.

В режиме пользовательской области правило iptables пересылается в локальный порт, где прослушивает соединения двоичный код (kube-proxy). Двоичный (работает в пользовательском пространстве) завершает соединение, устанавливает новое соединение с бэкэнд для службы, а затем перенаправляет запросы на сервер и ответы обратно в локальный процесс. Преимущество режима пользовательского пространства заключается в том, что, поскольку соединения создаются из приложения, если соединение отказывается, приложение может повторить попытку на другом бэкэнд.

В режиме iptables правила iptables устанавливаются для прямого пересылки пакетов, предназначенных для службы, для бэкэнд для службы. Это более эффективно, чем перенос пакетов с ядра на kube-proxy, а затем обратно в ядро, что приводит к большей пропускной способности и лучшей задержке хвоста. Основной недостаток заключается в том, что отлаживать его сложнее, потому что вместо локального двоичного файла, который записывает журнал в /var/log/kube-proxy, вы должны проверять журналы из правил обработки iptables ядра.

В обоих случаях на вашем компьютере будет выполняться двоичный код kube-proxy. В режиме пользовательского пространства он вставляет себя как прокси; в режиме iptables он будет настраивать iptables, а не сами прокси-соединения. Один и тот же двоичный файл работает в обоих режимах, и поведение переключается через флаг или путем установки аннотации в apiserver для узла.

+0

Благодарим вас за четкое объяснение! – ax003d

+3

ax003d вы должны принять ответ, если он удовлетворительный. – smparkes

+0

@smparkes Принято. Спасибо, что напомнили! – ax003d

Смежные вопросы