Δικτύωση Kubernetes - Ένας ολοκληρωμένος οδηγός για τις έννοιες δικτύωσης στο Kubernetes



Αυτό το ιστολόγιο για το Kubernetes Networking θα εμβαθύνει βαθιά στις έννοιες που εμπλέκονται στο Kubernetes, όπως η επικοινωνία με λοβούς, υπηρεσίες και δίκτυα εισόδου.

Στο προηγούμενο blog στις , πρέπει να έχετε μια κατανόηση για το Kubernetes. Σε αυτό το ιστολόγιο για τη δικτύωση Kubernetes, θα επικεντρωθώ κυρίως στις έννοιες δικτύωσης που εμπλέκονται στο Kubernetes.

Σε αυτό το blog στο Kubernetes Networking, θα καταλάβετε τα ακόλουθα θέματα:





Τι είναι το Kubernetes;

Μπορείτε να ορίσετε το Kubernetes ως εργαλείο ενορχήστρωσης κοντέινερ ανοιχτού κώδικα που παρέχει μια φορητή πλατφόρμα για την αυτοματοποίηση της ανάπτυξης εφαρμογών σε κοντέινερ.

Τώρα, οποιοσδήποτε εργάζεται με το Kubernetes πρέπει να έχει μια σαφή κατανόηση του Kubernetes Cluster, καθώς αυτό θα σας βοηθήσει να κατανοήσετε το Kubernetes Networking.



Σύμπλεγμα Kubernetes

Η πλατφόρμα Kubernetes προσφέρει την επιθυμητή διαχείριση κατάστασης, η οποία επιτρέπει την εκτέλεση των υπηρεσιών συμπλέγματος, τη διαμόρφωση τροφοδοσίας στην υποδομή. Επιτρέψτε μου να εξηγήσω με ένα παράδειγμα.

Εξετάστε ένα αρχείο YAML που περιέχει όλες τις πληροφορίες διαμόρφωσης που πρέπει να τροφοδοτηθούν στις υπηρεσίες συμπλέγματος. Έτσι, αυτό το αρχείο τροφοδοτείται στο API των υπηρεσιών συμπλέγματος και, στη συνέχεια, εναπόκειται στις υπηρεσίες συμπλέγματος να καταλάβουν πώς να προγραμματίζουν τις ομάδες διαφημίσεων στο περιβάλλον. Ας υποθέσουμε ότι υπάρχουν δύο εικόνες κοντέινερ για το pod 1 με τρία αντίγραφα και μια εικόνα κοντέινερ για το pod 2 με δύο αντίγραφα, θα εξαρτηθεί από τις υπηρεσίες συμπλέγματος να εκχωρήσουν αυτά τα ζεύγη pod-replica στους εργαζόμενους.

πώς να μάθετε pl sql

Σύμπλεγμα Kubernetes - Δίκτυο δικτύωσης Kubernetes - Edureka



Ανατρέξτε στο παραπάνω διάγραμμα. Τώρα, όπως μπορείτε να δείτε ότι οι υπηρεσίες συμπλέγματος έχουν εκχωρήσει τον πρώτο εργαζόμενο με δύο ζεύγη αντιγράφων pod, ο δεύτερος εργαζόμενος με ένα ζεύγος pod-replica και ο τρίτος εργαζόμενος με δύο ζεύγη αντιγράφων pod. Τώρα, είναι η διαδικασία Kubelet που είναι υπεύθυνη για την επικοινωνία των υπηρεσιών συμπλέγματος με τους εργαζόμενους.

Έτσι, ολόκληρη αυτή η εγκατάσταση των υπηρεσιών συμπλέγματος και οι ίδιοι οι εργαζόμενοι αποτελούν αυτό Σύμπλεγμα Kubernetes !!

Πώς πιστεύετε ότι αυτά τα ξεχωριστά κατανεμημένα pod επικοινωνούν μεταξύ τους;

Η απάντηση βρίσκεται στο δίκτυο Kubernetes!

Εγγραφείτε στο κανάλι σας στο YouTube για να λαμβάνετε νέες ενημερώσεις ..!

Υπάρχουν κυρίως 4 προβλήματα που πρέπει να επιλυθούν με τις έννοιες δικτύωσης.

  • Επικοινωνία κοντέινερ σε κοντέινερ
  • Επικοινωνία από pod σε pod
  • Επικοινωνία Pod to Service
  • Εξωτερική επικοινωνία

Τώρα, επιτρέψτε μου να σας πω πώς επιλύονται τα παραπάνω προβλήματα με το δίκτυο Kubernetes.

Δικτύωση Kubernetes

Η επικοινωνία μεταξύ pods, υπηρεσιών και εξωτερικών υπηρεσιών σε αυτές σε ένα σύμπλεγμα φέρνει την έννοια της δικτύωσης Kubernetes.

Έτσι, για την καλύτερη κατανόησή σας, επιτρέψτε μου να χωρίσω τις έννοιες στα ακόλουθα.

  • Επικοινωνία Pods & Container
  • Υπηρεσίες
  • Σύνδεση εξωτερικού με υπηρεσίες μέσω δικτύου Ingress

Επικοινωνία Pods & Container

Πριν σας πω πώς επικοινωνούν οι ομάδες διαφημίσεων, επιτρέψτε μου να σας παρουσιάσω τι είναι οι ομάδες διαφημίσεων;

Pods

Οι Pods είναι βασικές μονάδες εφαρμογών Kubernetes, που αποτελούνται από ένα ή περισσότερα κοντέινερ που έχουν διατεθεί στον ίδιο κεντρικό υπολογιστή για κοινή χρήση μιας στοίβας δικτύου και άλλων πόρων. Αυτό σημαίνει ότι όλα τα κοντέινερ σε μια ομάδα μπορούν να φτάσουν σε άλλα σε έναν τοπικό κεντρικό υπολογιστή.

Τώρα, επιτρέψτε μου να σας ενημερώσω σχετικά με τον τρόπο επικοινωνίας αυτών των ομάδων;

Υπάρχουν 2 τύποι επικοινωνίας. ο επικοινωνία μεταξύ κόμβων και το επικοινωνία εντός κόμβου.

Λοιπόν, ας ξεκινήσουμε με την επικοινωνία μεταξύ των κόμβων, αλλά πριν από αυτό επιτρέψτε μου να σας παρουσιάσω τα στοιχεία του δικτύου pod.

Εντός κόμβου κάτω από το δίκτυο

Το δίκτυο pod εντός του κόμβου είναι βασικά η επικοινωνία μεταξύ δύο διαφορετικών κόμβων στο ίδιο pod. Επιτρέψτε μου να σας εξηγήσω με ένα παράδειγμα.

Ας υποθέσουμε ότι ένα πακέτο πηγαίνει από το pod1 στο pod2.

  • Το πακέτο αφήνει το δίκτυο του Pod 1 στο eth0 και μπαίνει στο ριζικό δίκτυο στο veth0
  • Στη συνέχεια, το πακέτο περνά στη γέφυρα Linux (cbr0) που ανακαλύπτει τον προορισμό χρησιμοποιώντας ένα αίτημα ARP
  • Έτσι, εάν το veth1 έχει το IP, η γέφυρα ξέρει πού να προωθήσει το πακέτο.

Τώρα, ομοίως επιτρέψτε μου να σας πω για την επικοινωνία μεταξύ των κόμβων.

Ενδιαφέρεστε να μάθετε Kubernetes;
Δια-κόμβος κάτω από το δίκτυο

Εξετάστε δύο κόμβους με διάφορους χώρους ονομάτων δικτύου, διασυνδέσεις δικτύου και μια γέφυρα Linux.

Τώρα, ας υποθέσουμε ότι ένα πακέτο ταξιδεύει από το pod1 σε ένα pod4 που βρίσκεται σε διαφορετικό κόμβο.

  • Το πακέτο βγαίνει από το δίκτυο pod 1 και εισέρχεται στο ριζικό δίκτυο στο veth0
  • Στη συνέχεια, το πακέτο περνά στη γέφυρα Linux (cbr0) της οποίας η ευθύνη είναι να υποβάλει ένα αίτημα ARP για να βρει τον προορισμό.
  • Αφού η γέφυρα αντιληφθεί ότι αυτό το pod δεν έχει τη διεύθυνση προορισμού, το πακέτο επιστρέφει στην κύρια διασύνδεση δικτύου eth0.
  • Το πακέτο αφήνει τώρα τον κόμβο 1 για να βρει τον προορισμό του στον άλλο κόμβο και εισέρχεται στον πίνακα διαδρομών που δρομολογεί το πακέτο στον κόμβο του οποίου το μπλοκ CIDR περιέχει το pod4.
  • Έτσι, τώρα το πακέτο φτάνει στον κόμβο 2 και στη συνέχεια η γέφυρα παίρνει το πακέτο που κάνει ένα αίτημα ARP για να ανακαλύψει ότι η IP ανήκει στο veth0.
  • Τέλος, το πακέτο διασχίζει το ζεύγος σωλήνων και φτάνει στο pod4.

Έτσι, έτσι οι ομάδες επικοινωνούν μεταξύ τους. Τώρα, ας προχωρήσουμε και να δούμε πώς βοηθούν οι υπηρεσίες στην επικοινωνία των ομάδων.

Λοιπόν, τι πιστεύετε ότι είναι οι υπηρεσίες;

Υπηρεσίες

Βασικά, οι υπηρεσίες είναι ένας τύπος πόρου που διαμορφώνει έναν διακομιστή μεσολάβησης για την προώθηση των αιτημάτων σε ένα σύνολο λοβών, το οποίο θα λαμβάνει κίνηση και καθορίζεται από τον επιλογέα. Μόλις δημιουργηθεί η υπηρεσία έχει μια καθορισμένη διεύθυνση IP η οποία θα δέχεται αιτήματα στη θύρα.

Τώρα, υπάρχουν διάφοροι τύποι υπηρεσιών που σας δίνουν τη δυνατότητα έκθεσης μιας υπηρεσίας εκτός της διεύθυνσης IP συμπλέγματος.

Τύποι υπηρεσιών

Υπάρχουν κυρίως 4 τύποι υπηρεσιών.

ΣύμπλεγμαIP: Αυτός είναι ο προεπιλεγμένος τύπος υπηρεσίας που εκθέτει την υπηρεσία σε μια εσωτερική IP συμπλέγματος, καθιστώντας την υπηρεσία προσβάσιμη μόνο εντός του συμπλέγματος.

NodePort: Αυτό εκθέτει την υπηρεσία σε κάθε κόμβο IP σε μια στατική θύρα. Από τότε, α Σύμπλεγμα υπηρεσία, στην οποία θα δρομολογηθεί η υπηρεσία NodePort, δημιουργείται αυτόματα. Μπορούμε να επικοινωνήσουμε με την υπηρεσία NodePort εκτός του συμπλέγματος.

LoadBalancer: Αυτός είναι ο τύπος υπηρεσίας που εκθέτει την υπηρεσία εξωτερικά χρησιμοποιώντας το πρόγραμμα εξισορρόπησης φορτίου ενός παρόχου cloud. Έτσι, οι υπηρεσίες NodePort και ClusterIP, στις οποίες θα δρομολογηθεί ο εξωτερικός εξισορροπητής φορτίου, δημιουργούνται αυτόματα.

Εξωτερικό όνομα : Αυτός ο τύπος υπηρεσίας αντιστοιχίζει την υπηρεσία στα περιεχόμενα του εξωτερικό όνομα πεδίο επιστρέφοντας ένα CNAME εγγραφή με την τιμή του.

Λοιπόν, παιδιά που αφορούσαν τις υπηρεσίες. Τώρα, ίσως αναρωτιέστε πώς συνδέονται εξωτερικές υπηρεσίες σε αυτά τα δίκτυα σωστά;

Λοιπόν, αυτό δεν είναι άλλο από Δίκτυο Ingress .

Δίκτυο Ingress

Λοιπόν, το δίκτυο Ingress είναι ο πιο ισχυρός τρόπος έκθεσης των υπηρεσιών, καθώς είναι μια συλλογή κανόνων που επιτρέπουν τις εισερχόμενες συνδέσεις, οι οποίες μπορούν να ρυθμιστούν ώστε να παρέχουν υπηρεσίες εξωτερικά μέσω προσβάσιμων διευθύνσεων URL. Λοιπόν, βασικά λειτουργεί ως σημείο εισόδου στο σύμπλεγμα Kubernetes που διαχειρίζεται την εξωτερική πρόσβαση στις υπηρεσίες σε ένα σύμπλεγμα.

Τώρα, επιτρέψτε μου να σας εξηγήσω τη λειτουργία του Ingress Network με ένα παράδειγμα.

Έχουμε 2 κόμβους, με τους χώρους ονομάτων δικτύου pod και root με γέφυρα Linux. Εκτός από αυτό, έχουμε επίσης μια νέα συσκευή εικονικού ethernet που ονομάζεται flannel0 (plugin δικτύου) στο ριζικό δίκτυο.

Τώρα, θέλουμε το πακέτο να ρέει από το pod1 στο pod 4.

  • Έτσι, το πακέτο αφήνει το δίκτυο του pod1 στο eth0 και μπαίνει στο ριζικό δίκτυο στο veth0.
  • Στη συνέχεια μεταβιβάζεται στο cbr0, το οποίο κάνει το αίτημα ARP να βρει τον προορισμό και στη συνέχεια ανακαλύπτει ότι κανείς σε αυτόν τον κόμβο δεν έχει τη διεύθυνση IP προορισμού.
  • Έτσι, η γέφυρα στέλνει το πακέτο στο flannel0 καθώς ο πίνακας διαδρομής του κόμβου έχει διαμορφωθεί με το flannel0.
  • Τώρα, ο δαίμονας flannel μιλά με τον διακομιστή API του Kubernetes για να μάθει όλα τα IP IP και τους αντίστοιχους κόμβους του για να δημιουργήσει αντιστοιχίσεις για IPs pods για IP κόμβων.
  • Η προσθήκη δικτύου τυλίγει αυτό το πακέτο σε ένα πακέτο UDP με επιπλέον κεφαλίδες να αλλάζουν την IP προέλευσης και προορισμού στους αντίστοιχους κόμβους τους και να στέλνει αυτό το πακέτο μέσω eth0.
  • Τώρα, δεδομένου ότι ο πίνακας διαδρομών γνωρίζει ήδη πώς να δρομολογεί την κίνηση μεταξύ κόμβων, στέλνει το πακέτο στον κόμβο προορισμού2.
  • Το πακέτο φτάνει στο eth0 του κόμβου 2 και επιστρέφει στο flannel0 για να αποσυμπιεστεί και το εκπέμπει ξανά στο χώρο ονομάτων του ριζικού δικτύου.
  • Και πάλι, το πακέτο προωθείται στη γέφυρα Linux για να κάνει ένα αίτημα ARP για να ανακαλύψει την IP που ανήκει στο veth1.
  • Το πακέτο διασχίζει τελικά το ριζικό δίκτυο και φτάνει στον προορισμό Pod4.

Έτσι, έτσι συνδέονται οι εξωτερικές υπηρεσίες με τη βοήθεια ενός δικτύου εισόδου. Τώρα, καθώς μιλούσα για τις προσθήκες δικτύου, επιτρέψτε μου να σας παρουσιάσω τη λίστα με τις διαθέσιμες δημοφιλείς προσθήκες δικτύου.

Τώρα, που σας έχω πει πολλά για το δίκτυο Kubernetes, επιτρέψτε μου να σας δείξω μια πραγματική μελέτη περίπτωσης.

Μελέτη περίπτωσης: Wealth Wizard Using Kubernetes Networking

Το Wealth Wizards είναι μια διαδικτυακή πλατφόρμα οικονομικού προγραμματισμού που συνδυάζει τον οικονομικό σχεδιασμό και την έξυπνη τεχνολογία λογισμικού για την παροχή συμβουλών από ειδικούς σε προσιτό κόστος.

Προκλήσεις

Τώρα, ήταν εξαιρετικά σημαντικό για την εταιρεία να ανακαλύψει γρήγορα και να εξαλείψει τις ευπάθειες κώδικα με πλήρη ορατότητα του περιβάλλοντος cloud, αλλά ήθελε να ελέγξει την κυκλοφορία μέσω περιορισμών πρόσβασης.

Έτσι, χρησιμοποίησαν την υποδομή Kubernetes για τη διαχείριση της παροχής και της διάθεσης των συμπλεγμάτων με τη βοήθεια εργαλείων για τη διαχείριση της ανάπτυξης και της διαμόρφωσης των μικροϋπηρεσιών σε όλες τις συστάδες του Kube.

Χρησιμοποίησαν επίσης μια δυνατότητα πολιτικής δικτύου του Kubernetes για να τους επιτρέψουν να ελέγχουν την κυκλοφορία μέσω περιορισμών πρόσβασης.

Τώρα, το πρόβλημα ήταν ότι αυτές οι πολιτικές είναι προσανατολισμένες στις εφαρμογές και μπορούν να εξελιχθούν μόνο με τις εφαρμογές, αλλά, δεν υπήρχε κανένα στοιχείο για την επιβολή αυτών των πολιτικών.

Έτσι, η μόνη λύση που θα μπορούσε να βρει η εταιρεία για αυτό ήταν να χρησιμοποιήσει ένα πρόσθετο δικτύου, και ως εκ τούτου άρχισαν να χρησιμοποιούν το Weave Net.

Λύση

Αυτή η προσθήκη δικτύου δημιουργεί ένα εικονικό δίκτυο που διαθέτει έναν ελεγκτή πολιτικής δικτύου για τη διαχείριση και την επιβολή των κανόνων στο Kubernetes. Όχι μόνο αυτό, αλλά συνδέει επίσης κοντέινερ Docker σε πολλούς κεντρικούς υπολογιστές και επιτρέπει την αυτόματη ανακάλυψή τους.

Ας υποθέσουμε, λοιπόν, ότι έχετε ένα φόρτο εργασίας στο σύμπλεγμα και θέλετε να σταματήσετε να μιλάτε για οποιοδήποτε άλλο φόρτο εργασίας στο σύμπλεγμα. Μπορείτε να το επιτύχετε δημιουργώντας μια πολιτική δικτύου που περιορίζει την πρόσβαση και επιτρέπει μόνο την είσοδό της μέσω του ελεγκτή εισόδου σε μια συγκεκριμένη θύρα.

Τώρα, με την ανάπτυξή του σε κάθε κόμβο Kubernetes, το plugin διαχειρίζεται τη δρομολόγηση μεταξύ pod και έχει πρόσβαση για χειρισμό των κανόνων IPtables. Με απλούς όρους, κάθε πολιτική μετατρέπεται σε μια συλλογή κανόνων IPtables, συντονίζεται και διαμορφώνεται σε κάθε υπολογιστή για να μεταφράζει τις ετικέτες Kubernetes.

Εντάξει, τώρα που έχετε διαβάσει τόση θεωρία σχετικά με το δίκτυο Kubernetes, επιτρέψτε μου να σας δείξω πώς γίνεται πρακτικά.

Hands-On

Έτσι, με την υπόθεση ότι όλοι έχετε εγκαταστήσει το Kubernetes στα συστήματά σας, έχω ένα σενάριο για να το δείξω.

Ας υποθέσουμε ότι θέλετε να αποθηκεύσετε το όνομα προϊόντος και το αναγνωριστικό προϊόντος, για αυτό θα χρειαστείτε μια εφαρμογή ιστού. Βασικά, χρειάζεστε ένα κοντέινερ για εφαρμογή ιστού και χρειάζεστε ένα ακόμη κοντέινερ ως MySQL για το backend και ότι το κοντέινερ MySQL θα πρέπει να συνδέεται με το κοντέινερ εφαρμογών ιστού.

Τι λες για να κάνω πρακτικά το παραπάνω αναφερόμενο παράδειγμα.

Ας αρχίσουμε!

Βήμα 1: Δημιουργήστε έναν φάκελο στον επιθυμητό κατάλογο και αλλάξτε τη διαδρομή καταλόγου εργασίας σε αυτόν τον φάκελο.

mkdir HandsOn cd HandsOn /

Βήμα 2: Τώρα δημιουργήστε αρχεία ανάπτυξης YAML, για την εφαρμογή Ιστού και τη βάση δεδομένων MySQL.

Βήμα 3: Μόλις δημιουργήσετε τα αρχεία ανάπτυξης, αναπτύξτε και τις δύο εφαρμογές.

kubectl apply -f webapp.yml kubectl apply -f mysql.yml

Βήμα 3.1: Ελέγξτε και τις δύο αναπτύξεις.

kubectl λάβετε ανάπτυξη

Βήμα 4: Τώρα, πρέπει να δημιουργήσετε υπηρεσίες και για τις δύο εφαρμογές.

kubectl apply -f webservice.yml kubectl apply -f sqlservice.yml

Βήμα 4.1: Μόλις δημιουργηθούν οι υπηρεσίες, αναπτύξτε τις υπηρεσίες.

Βήμα 4.2: Ελέγξτε εάν οι υπηρεσίες έχουν δημιουργηθεί ή όχι.

kubectl λάβετε υπηρεσία

Βήμα 5: Τώρα, ελέγξτε τη διαμόρφωση των ομάδων που εκτελούνται.

kubectl πάρτε λοβό

Βήμα 6: Πηγαίνετε στο κοντέινερ μέσα στο webapp pod.

kubectl exec -it container_id bash nano var / www / html / index.php

Βήμα 6.1 : Τώρα, αλλάξτε το $ όνομα διακομιστή από το localhost στο όνομα της υπηρεσίας SQL που είναι « webapp-sql1 'Σε αυτήν την περίπτωση, και κωδικός πρόσβασης $ από προς ' edureka '. Επίσης, συμπληρώστε όλες τις απαιτούμενες λεπτομέρειες της βάσης δεδομένων και αποθηκεύστε το αρχείο index.php χρησιμοποιώντας τη συντόμευση πληκτρολογίου Ctrl + x και μετά από αυτόν τον τύπο Υ για αποθήκευση και πατήστε εισαγω .

Βήμα 7: Τώρα, μεταβείτε στο κοντέινερ MySQL που υπάρχει στο pod.

kubectl exec it container_id bash

Βήμα 7.1: Αποκτήστε την πρόσβαση για να χρησιμοποιήσετε το κοντέινερ MySQL.

mysql -u root -p edureka

Όπου -u αντιπροσωπεύει τον χρήστη και -p είναι ο κωδικός πρόσβασης του μηχανήματός σας.

Βήμα 7.2: Δημιουργήστε μια βάση δεδομένων στη MySQL που θα χρησιμοποιηθεί για τη λήψη δεδομένων από το webapp.

ΔΗΜΙΟΥΡΓΙΑ ΔΕΔΟΜΕΝΩΝ Λεπτομέρειες προϊόντος

Βήμα 7.3: Χρησιμοποιήστε τη δημιουργημένη βάση δεδομένων.

ΧΡΗΣΗ Λεπτομέρειες προϊόντος

Βήμα 7.4: Δημιουργήστε έναν πίνακα σε αυτήν τη βάση δεδομένων στη MySQL που θα χρησιμοποιηθεί για τη λήψη δεδομένων από το webapp.

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ προϊόντων (product_name VARCHAR (10), product_id VARCHAR (11))

Βήμα 7.5: Τώρα, βγείτε επίσης από το κοντέινερ MySQL χρησιμοποιώντας την εντολή έξοδος .

Βήμα 8: Ελέγξτε τον αριθμό θύρας στον οποίο λειτουργεί η εφαρμογή ιστού σας.

kubectl λάβετε υπηρεσίες

Βήμα 8.1: Τώρα, ανοίξτε την εφαρμογή ιστού στον εκχωρημένο αριθμό θύρας.

Βήμα 9: Μόλις κάνετε κλικ στο Κατάθεση ερωτήματος , μεταβείτε στον κόμβο στον οποίο εκτελείται η υπηρεσία MySQL και, στη συνέχεια, μπείτε μέσα στο κοντέινερ.

Αυτό θα σας δείξει την έξοδο όλων των προϊόντων της λίστας, για τα οποία έχετε συμπληρώσει τις λεπτομέρειες.

Ενδιαφέρεστε να μάθετε Kubernetes;

Εάν βρήκατε αυτό το ιστολόγιο δικτύωσης Kubernetes σχετικό, ρίξτε μια ματιά στο από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο.