В K8S все ли прокси-серверы kube (работающие на каждом узле) имеют одинаковую реализацию?

Я новичок в K8S и пытаюсь понять точную роль kube-proxy, работающего на каждом узле в кластере. В документации упоминается, что «kube-proxy отражает службы, определенные в Kubernetes API на каждом узле, и может выполнять простую пересылку потоков TCP, UDP и SCTP или циклическую пересылку TCP, UDP и SCTP через набор бэкэндов». Чтобы это было правдой, каждый kube-proxy должен иметь полную информацию обо всех сервисах, запущенных в кластере, поскольку kube-proxy несет ответственность за предоставление доступа к любой службе, которая запрашивается приложением, запущенным в pod. (на соответствующем узле). Значит ли это, что все прокси-серверы kube внутри кластера K8S (работающие на каждом узле) являются зеркальными отображениями? Если да, то почему kube-proxy присутствует на каждом узле, а не централизованный для всего кластера?

ссылка на документацию K8S по прокси: https://kubernetes.io/docs/concepts/cluster-administration/proxies/


person adi    schedule 28.12.2019    source источник
comment
Kubeproxy может работать в разных режимах. В режиме iptables он должен записывать список правил маршрутизации на узлы с помощью правил iptables. Это действие невозможно, если на этом узле не запущен прокси-сервер Kube.   -  person Arghya Sadhu    schedule 29.12.2019


Ответы (1)


Значит ли это, что все прокси-серверы kube внутри кластера K8S (работающие на каждом узле) являются зеркальными отображениями?

Да, они экземпляры одного и того же изображения.

Если да, то почему kube-proxy присутствует на каждом узле, а не централизованный для всего кластера?

kube-proxy использует уровень фильтрации пакетов операционной системы, если он есть и доступен, например IPtable, IPVS. В противном случае kube-proxy сам перенаправляет трафик. kube-proxy

Kube-Proxy - это контроллер k8s, который следит за желаемым состоянием (службы и конечные точки) кластера и вносит изменения на узлах, поскольку он управляет IPtabels (в режиме iptable).

Чтобы это было правдой, каждый kube-proxy должен иметь полную информацию обо всех службах, работающих в кластере ...

есть следующие флаги, чтобы установить поведение kube-proxy

--iptables-min-sync-period duration
The minimum interval of how often the iptables rules can be refreshed as endpoints and services change (e.g. '5s', '1m', '2h22m').
--iptables-sync-period duration     Default: 30s
The maximum interval of how often iptables rules are refreshed (e.g. '5s', '1m', '2h22m'). Must be greater than 0.

ИМО, решение о соединениях (пересылка, прием) между модулями на узлах должно приниматься компонентами узла, а не компонентами центральной плоскости. Кроме того, плоскость управления K8s (api-server и т. Д.) Сохраняет желаемое состояние и текущее состояние кластера, поэтому все контроллеры могут согласовывать свои действия в соответствии с их заданным поведением.

person Suresh Vishnoi    schedule 28.12.2019