Sobes.tech
Middle+

Πώς γίνεται η ανακατεύθυνση της κυκλοφορίας προς το ingress από μέσα στο cluster;

sobes.tech AI

Απάντηση από AI

Για την ανακατεύθυνση της κυκλοφορίας από το εσωτερικό του cluster προς το Ingress, χρησιμοποιείται το όνομα DNS της υπηρεσίας του Ingress Controller. Στην προεπιλεγμένη διαμόρφωση, ο Ingress Controller αναπτύσσεται ως υπηρεσία τύπου LoadBalancer ή NodePort.

  1. Ανακάλυψη υπηρεσίας: Η εφαρμογή μέσα στο cluster χρησιμοποιεί το όνομα 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 για να δρομολογήσει την κυκλοφορία σε ένα από τα pods του Ingress Controller.

  5. Επεξεργασία στον Ingress Controller: Τα pods του Ingress Controller λαμβάνουν την κυκλοφορία και, σύμφωνα με τους κανόνες των πόρων Ingress, την ανακατευθύνουν στην αντίστοιχη υπηρεσία μέσα στο cluster.

Παράδειγμα ερωτήματος από ένα pod:

# Ερώτημα στην υπηρεσία μέσω Ingress, χρησιμοποιώντας εσωτερικό DNS
curl http://my-app.example.com

Εδώ, το my-app.example.com λύνει ο διακομιστής DNS του cluster σε ClusterIP της υπηρεσίας Ingress Controller, αν έχουν διαμορφωθεί οι αντίστοιχες εγγραφές ή αν ο Ingress Controller έχει διαμορφωθεί για να χειρίζεται τέτοια αιτήματα απευθείας (λιγότερο συνηθισμένο για εσωτερική κυκλοφορία). Η εσωτερική κυκλοφορία συνήθως προσπελαύνει την υπηρεσία μέσω του DNS ονόματός της. Αν θέλετε να περάσετε ρητά μέσω Ingress από μέσα στο cluster, πρέπει να βεβαιωθείτε ότι ο Ingress Controller είναι προσβάσιμος μέσω ClusterIP ή τοπικής IP των pods και ότι η εγγραφή DNS ή ο μηχανισμός δρομολόγησης το κατευθύνει προς αυτό.

Το πιο συνηθισμένο μοτίβο για την επικοινωνία μεταξύ υπηρεσιών μέσα στο cluster είναι η άμεση πρόσβαση στην υπηρεσία μέσω του DNS ονόματός της (<όνομα-υπηρεσίας>.<namespace>.svc.cluster.local), παρακάμπτοντας το Ingress. Η ανακατεύθυνση της κυκλοφορίας προς το Ingress από μέσα στο cluster είναι συνήθως απαραίτητη για δοκιμές ή συγκεκριμένα σενάρια δρομολόγησης.