Sobes.tech
Middle+

Как се осъществява пренасочването на трафика към ingress от вътре в клъстера?

sobes.tech AI

Отговор от AI

За пренасочване на трафика от вътре в клъстера към Ingress се използва DNS името на услугата Ingress Controller. В стандартната конфигурация, Ingress Controller се разгръща като услуга тип LoadBalancer или NodePort.

  1. Откриване на услуга: Приложението вътре в клъстера използва DNS името на услугата, която излага (прави видима) Ingress Controller. Например nginx-ingress-controller.ingress-nginx.svc.cluster.local, ако се използва nginx-ingress с подходящо име на услуга.

  2. IP на услугата/ClusterIP: DNS сървърът на Kubernetes клъстера (например CoreDNS) разрешава това DNS име към ClusterIP на услугата Ingress Controller.

  3. kube-proxy: kube-proxy на възела, където работи приложението, прихваща трафика, насочен към ClusterIP услугата на Ingress Controller.

  4. iptables/ipvs: kube-proxy използва правила iptables или ipvs, за да маршрутизира трафика към един от подовете на Ingress Controller.

  5. Обработка в Ingress Controller: Подовете на Ingress Controller получават трафика и според правилата на Ingress ресурсите го пренасочват към съответната услуга вътре в клъстера.

Пример за заявка от под:

# Заявка към услуга чрез Ingress, използвайки вътрешен DNS
curl http://my-app.example.com

Тук my-app.example.com се разрешава от DNS сървъра на клъстера към ClusterIP на услугата Ingress Controller, ако съответните записи са конфигурирани или ако Ingress Controller е настроен да обработва такива заявки директно (по-малко типичен случай за вътрешен трафик). По-голямата част от вътрешния трафик достига до услугата по нейното DNS име. Ако трябва явно да премине през Ingress от вътре в клъстера, трябва да се уверите, че Ingress Controller е достъпен чрез ClusterIP или локален IP на подовете и че DNS записът или механизмът за маршрутизиране го насочва към него.

По-широко разпространеният модел за комуникация между услуги в клъстера е директният достъп до услугата по нейното DNS име (<service-name>.<namespace>.svc.cluster.local), без да се използва Ingress. Пренасочването на трафика към Ingress от вътре в клъстера обикновено е необходимо за тестове или специфични сценарии за маршрутизиране.