Πώς γίνεται η ανακατεύθυνση της κυκλοφορίας προς το ingress από μέσα στο cluster;
sobes.tech AI
Απάντηση από AI
Για την ανακατεύθυνση της κυκλοφορίας από το εσωτερικό του cluster προς το Ingress, χρησιμοποιείται το όνομα DNS της υπηρεσίας του Ingress Controller. Στην προεπιλεγμένη διαμόρφωση, ο Ingress Controller αναπτύσσεται ως υπηρεσία τύπου LoadBalancer ή NodePort.
-
Ανακάλυψη υπηρεσίας: Η εφαρμογή μέσα στο cluster χρησιμοποιεί το όνομα DNS της υπηρεσίας, που εκθέτει (καθιστά ορατό) τον Ingress Controller. Για παράδειγμα,
nginx-ingress-controller.ingress-nginx.svc.cluster.local, αν χρησιμοποιείται nginx-ingress με το αντίστοιχο όνομα υπηρεσίας. -
IP υπηρεσίας/ClusterIP: Ο διακομιστής DNS του Kubernetes (π.χ., CoreDNS) λύνει αυτό το όνομα DNS σε ClusterIP της υπηρεσίας Ingress Controller.
-
kube-proxy: Το
kube-proxyστον κόμβο όπου τρέχει η εφαρμογή, παρεμβαίνει στον κυκλοφορία που προορίζεται για το ClusterIP της υπηρεσίας Ingress Controller. -
iptables/ipvs: Το
kube-proxyχρησιμοποιεί κανόνεςiptablesήipvsγια να δρομολογήσει την κυκλοφορία σε ένα από τα pods του Ingress Controller. -
Επεξεργασία στον 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 είναι συνήθως απαραίτητη για δοκιμές ή συγκεκριμένα σενάρια δρομολόγησης.