Εικονικοποίηση OpenShift: κοντέινερ, KVM και εικονικές μηχανές

Εικονικοποίηση OpenShift (προηγούμενο έργο - Kubernetes: KubeVirt, βλ. εδώ и εδώ), nee Container-native Virtualization, εισήχθη ως λειτουργικότητα της πλατφόρμας OpenShift, η οποία έχει σχεδιαστεί για την ανάπτυξη και τη διαχείριση εικονικών μηχανών (VMs) ως βασικών οντοτήτων Kubernetes. Αυτό το είδος εργασίας είναι τεχνικά προκλητικό λόγω θεμελιωδών διαφορών στην τεχνολογία. Για να πετύχουμε αυτόν τον στόχο, χρησιμοποιήσαμε γνωστές τεχνολογίες βασισμένες στο Red Hat Enterprise Linux και το KVM, οι οποίες είναι μαζί μας εδώ και πολλά χρόνια και έχουν αποδείξει την αποτελεσματικότητά τους.

Εικονικοποίηση OpenShift: κοντέινερ, KVM και εικονικές μηχανές

Σε αυτό το άρθρο, θα εξετάσουμε τις τεχνικές πτυχές της εικονικοποίησης του OpenShift που καθιστούν δυνατή τη συνύπαρξη VM και κοντέινερ σε μια ενιαία πλατφόρμα που τα διαχειρίζεται ως μια ενιαία οντότητα.

Υπολογιστικές εργασίες

Τα κοντέινερ χρησιμοποιούν μηχανισμούς πυρήνα Linux όπως χώρους ονομάτων και cgroups για την απομόνωση διεργασιών και τη διαχείριση πόρων. Συνήθως οι διεργασίες νοούνται ως Python, εφαρμογές Java ή εκτελέσιμα αρχεία, αλλά στην πραγματικότητα μπορεί να είναι οποιεσδήποτε διεργασίες, όπως bash, Emacs ή vim.

Τι είναι μια εικονική μηχανή; Από την πλευρά του hypervisor, αυτό είναι επίσης μια διαδικασία. Όχι όμως η διαδικασία εφαρμογής, αλλά η διαδικασία KVM που είναι υπεύθυνη για την εκτέλεση ενός συγκεκριμένου VM.

Εικονικοποίηση OpenShift: κοντέινερ, KVM και εικονικές μηχανές

Η εικόνα του κοντέινερ περιέχει όλα τα εργαλεία, τις βιβλιοθήκες και τα αρχεία που χρειάζονται για την εικονική μηχανή KVM. Εάν επιθεωρήσουμε το pod ενός εικονικού υπολογιστή που τρέχει, θα δούμε εκεί βοηθούς και διαδικασίες qemu-kvm. Επιπλέον, έχουμε πρόσβαση σε εργαλεία KVM για τη διαχείριση εικονικών μηχανών όπως qemu-img, qemu-nbd και virsh.

Εικονικοποίηση OpenShift: κοντέινερ, KVM και εικονικές μηχανές

Δεδομένου ότι μια εικονική μηχανή είναι ένα pod, κληρονομεί αυτόματα όλη τη λειτουργικότητα ενός pod στο Kubernetes. Τα VM pod, ακριβώς όπως τα κανονικά pod, υπόκεινται σε σχήματα και κριτήρια χρονοπρογραμματισμού, όπως κηλίδες, ανοχές, συγγένεια και αντισυνάφεια. Απολαμβάνετε επίσης τα πλεονεκτήματα της υψηλής διαθεσιμότητας κ.λπ. Ωστόσο, υπάρχει μια σημαντική διαφορά: οι κανονικοί λοβοί δεν μεταναστεύουν από ξενιστή σε κεντρικό υπολογιστή με τη συνήθη έννοια. Εάν ένας κόμβος βγει εκτός σύνδεσης, το pod σε αυτόν τερματίζεται και εκχωρείται εκ νέου σε έναν άλλο κόμβο στο σύμπλεγμα. Και στην περίπτωση μιας εικονικής μηχανής, αναμένουμε να δούμε ζωντανή μετανάστευση.

Για να αντιμετωπιστεί αυτό το κενό, δημιουργήθηκε ένας προσαρμοσμένος ορισμός πόρων (CDR) για να περιγράψει τον μηχανισμό ζωντανής μετεγκατάστασης που είναι υπεύθυνος για την προετοιμασία, την παρακολούθηση και τη διαχείριση των ζωντανών μεταναστεύσεων των VM μεταξύ των κόμβων εργαζομένων.

apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstanceMigration
metadata:
  name: migration-job
spec:
  vmiName: fedora

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

Δικτύου

Οποιοδήποτε σύστημα Kubernetes παρέχει επικοινωνία μεταξύ κόμβων και pods χρησιμοποιώντας δίκτυα SDN λογισμικού. Το OpenShift δεν αποτελεί εξαίρεση και, ξεκινώντας από την έκδοση 3, χρησιμοποιεί το OpenShiftSDN από προεπιλογή για αυτό. Επιπλέον, το OpenShift 4 έχει μια άλλη νέα δυνατότητα που ονομάζεται Multus, η οποία σας επιτρέπει να κάνετε διαθέσιμα πολλά δίκτυα και να συνδέετε pods σε αυτά ταυτόχρονα.

Εικονικοποίηση OpenShift: κοντέινερ, KVM και εικονικές μηχανές

Χρησιμοποιώντας το Multus, ο διαχειριστής μπορεί να ορίσει επιπλέον δίκτυα CNI, τα οποία στη συνέχεια θα αναπτυχθούν και θα διαμορφωθούν στο σύμπλεγμα από έναν ειδικό χειριστή δικτύου συμπλέγματος. Στη συνέχεια, τα pods συνδέονται σε ένα ή περισσότερα από αυτά τα δίκτυα, συνήθως το τυπικό OpenShiftSDN και μια πρόσθετη διεπαφή. Οι συσκευές SR-IOV, οι τυπικές συσκευές Linux Bridge, οι συσκευές MACVLAN και IPVLAN μπορούν να χρησιμοποιηθούν, εάν το χρειάζεται το VM σας. Το παρακάτω σχήμα δείχνει πώς να ρυθμίσετε το Multus CNI για το δίκτυο γέφυρας στη διεπαφή eth1:

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  additionalNetworks:
  - name: multus1
rawCNIConfig: '{ "cniVersion": "0.3.1", "type": "bridge", "master": "eth1", "ipam":
   { "type": "static", "addresses": [ { "address": "191.168.1.1/24" } ] } }'
   type: Raw

Σε σχέση με την εικονικοποίηση OpenShift, αυτό σημαίνει ότι ένα VM μπορεί να συνδεθεί απευθείας σε ένα εξωτερικό δίκτυο, παρακάμπτοντας το SDN. Αυτό είναι σημαντικό για εικονικές μηχανές που έχουν μετεγκατασταθεί στο OpenShift από το Red Hat Virtualization ή το VMware vSphere, καθώς εάν έχετε πρόσβαση στο δεύτερο επίπεδο OSI, δεν θα υπάρξει αλλαγή στις ρυθμίσεις δικτύου. Αυτό σημαίνει επίσης ότι το VM μπορεί να έχει μια διεύθυνση δικτύου που παρακάμπτει το SDN. Έτσι, μπορούμε να χρησιμοποιήσουμε αποτελεσματικά εξειδικευμένους προσαρμογείς δικτύου ή να συνδεθούμε απευθείας στο σύστημα αποθήκευσης μέσω του δικτύου...

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

Αποθήκευση

Η σύνδεση και η διαχείριση δίσκων εικονικής μηχανής εντός της εικονικοποίησης OpenShift πραγματοποιείται χρησιμοποιώντας έννοιες της Kubernetes όπως StorageClasses, PersistentVolumeClaims (PVC) και PersistentVolume (PV), καθώς και πρότυπα πρωτόκολλα αποθήκευσης για το περιβάλλον Kubernetes. Αυτό δίνει στους διαχειριστές και τις ομάδες εφαρμογών Kubernetes έναν κοινό, οικείο τρόπο διαχείρισης τόσο των κοντέινερ όσο και των εικονικών μηχανών. Και για πολλούς διαχειριστές περιβαλλόντων εικονικοποίησης, αυτή η ιδέα μπορεί να ακούγεται οικεία επειδή χρησιμοποιεί την ίδια αρχή διαχωρισμού αρχείων διαμόρφωσης VM και δίσκων που χρησιμοποιείται στο OpenStack και σε πολλές άλλες πλατφόρμες cloud.

Ωστόσο, δεν μπορούμε απλά να δημιουργούμε έναν νέο δίσκο για το VM κάθε φορά, καθώς κατά τη μετεγκατάσταση από τον hypervisor στο OpenShift, πρέπει να αποθηκεύσουμε τα δεδομένα. Ναι, ακόμα και όταν αναπτύσσουμε ένα νέο VM, είναι πάντα πιο γρήγορο να το κάνουμε από ένα πρότυπο παρά να το δημιουργήσουμε από την αρχή. Επομένως, χρειαζόμαστε λειτουργικότητα για την εισαγωγή υπαρχόντων δίσκων.

Για να απλοποιήσει αυτήν την εργασία, η εικονικοποίηση OpenShift αναπτύσσει το έργο Containerized Data Importer (CDI), το οποίο μειώνει την εισαγωγή εικόνων δίσκων δίσκων από πολλές πηγές στη δημιουργία μιας καταχώρισης PVC.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: "fedora-disk0"
  labels:
    app: containerized-data-importer
  annotations:
    cdi.kubevirt.io/storage.import.endpoint: "http://10.0.0.1/images/Fedora-Cloud-Base-31-1.9.x86_64.qcow2"
spec:
  storageClassName: ocs-gold
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi

Αυτή η καταχώρηση είναι που ενεργοποιεί το CDI, ενεργοποιώντας την ακολουθία ενεργειών που φαίνεται στο παρακάτω σχήμα:

Εικονικοποίηση OpenShift: κοντέινερ, KVM και εικονικές μηχανές

Αφού ολοκληρωθεί το CDI, το PVC θα περιέχει τον δίσκο της εικονικής μηχανής έτοιμο για χρήση και θα μετατραπεί στην τυπική μορφή OpenShift...
Όταν εργάζεστε με εικονικοποίηση OpenShift, είναι επίσης χρήσιμο το OpenShift Container Storage (OCS), μια λύση Red Hat που βασίζεται στο σύστημα αρχείων Ceph που υλοποιεί λειτουργικότητα μόνιμης αποθήκευσης για κοντέινερ. Εκτός από τις τυπικές μεθόδους πρόσβασης PVC - RWO (μπλοκ) και RWX (αρχείο) - η OCS παρέχει RWX για συσκευές ακατέργαστων μπλοκ, το οποίο είναι πολύ χρήσιμο για την κοινή χρήση πρόσβασης μπλοκ για εφαρμογές με απαιτήσεις υψηλών επιδόσεων. Επιπλέον, το OCS υποστηρίζει το νέο πρότυπο Object Bucket Claim, το οποίο επιτρέπει στις εφαρμογές να χρησιμοποιούν απευθείας την αποθήκευση δεδομένων αντικειμένων.

Εικονικές μηχανές σε κοντέινερ

Εάν ενδιαφέρεστε να ελέγξετε πώς λειτουργεί, τότε να γνωρίζετε ότι η εικονικοποίηση OpenShift είναι ήδη διαθέσιμη στην έκδοση Tech Preview ως μέρος του OpenShift 3.11 και νεότερης έκδοσης. Οι κάτοχοι μιας υπάρχουσας συνδρομής OpenShift μπορούν να χρησιμοποιήσουν την εικονικοποίηση OpenShift εντελώς δωρεάν και χωρίς πρόσθετα βήματα. Κατά τη στιγμή αυτής της ανάρτησης, το OpenShift 4.4 και το OpenShift virtualization 2.3 είναι τρέχοντα. Εάν χρησιμοποιείτε προηγούμενες εκδόσεις, θα πρέπει να κάνετε αναβάθμιση για να λάβετε τις πιο πρόσφατες δυνατότητες. Μια πλήρως υποστηριζόμενη έκδοση της εικονικοποίησης OpenShift θα κυκλοφορήσει το δεύτερο εξάμηνο του 2020.

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

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο