Προγραμματισμός

RancherOS: Ένα απλούστερο Linux για τους λάτρεις του Docker

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

Το RancherOS είναι μια πλατφόρμα υποδομής κοντέινερ που τρέχει το Docker απευθείας πάνω από έναν πυρήνα με μειωμένο αποτύπωμα (20MB) Linux. Η λήψη ενός μινιμαλιστικού λειτουργικού συστήματος της Rancher είναι μοναδική στο ότι ακόμη και η διαδικασία init είναι ένα κοντέινερ υπηρεσίας Dockerized. Ομοίως, οι παραδοσιακές υπηρεσίες επιπέδου συστήματος, όπως το NTP και το DNS, έχουν αντικατασταθεί με ισοδύναμα κοντέινερ.

Τα ελάχιστα λειτουργικά συστήματα έχουν πολλά πλεονεκτήματα στην παραγωγή. Η αφαίρεση περιττών πακέτων και βιβλιοθηκών κάνει ταχύτερη εκκίνηση, ευκολότερη διαχείριση εκδόσεων και μικρότερη επιφάνεια επίθεσης, πράγμα που σημαίνει λιγότερες ενημερώσεις ασφαλείας. Η RancherOS προχωρά ένα βήμα πιο πέρα ​​από τις «ενημερώσεις» και διανέμει όλες τις υπηρεσίες συστήματος ως κοντέινερ Docker Μια ενημέρωση ασφαλείας σημαίνει απλώς τη λήψη μιας νέας εικόνας και την επανεκκίνηση του κοντέινερ, μια διαδικασία που διαρκεί λίγα δευτερόλεπτα χωρίς χρόνο διακοπής λειτουργίας για την υπηρεσία.

Ως λειτουργικό σύστημα που έχει σχεδιαστεί για κοντέινερ, το RancherOS θα είναι δύσκολο να αναγνωριστεί σε κάποιον που προέρχεται από ένα παραδοσιακό φόντο Unix. Διατηρείται μόνο ένα μικρό υποσύνολο του πυρήνα - όλα τα άλλα γίνονται σε δοχεία. Αλλά αν είστε εξοικειωμένοι με το Docker, θα νιώσετε σαν στο σπίτι σας στο RancherOS.

Σχεδιασμένο για Docker

Για να κατανοήσετε τη σχεδίαση RancherOS, πρέπει να θυμάστε ότι τα παραδοσιακά συστήματα Unix διαμορφώνονται σπάνια, με τις εφαρμογές να επικαλύπτονται πάνω από μια σταθερή βασική εικόνα. Σε μια υποδομή κοντέινερ, το λειτουργικό σύστημα είναι με μια έννοια μίας χρήσης και πιθανότατα θα αλλάζει συχνά. Παρόλο που θα μπορούσατε να χρησιμοποιήσετε ένα εργαλείο όπως το Ansible, το SaltStack, το Puppet ή το Chef για να διαμορφώσετε και να συντηρήσετε κεντρικούς υπολογιστές κοντέινερ, όταν εκτελείτε σε κλίμακα, είναι ευκολότερο να χρησιμοποιήσετε το ίδιο API για το λειτουργικό σύστημα που κάνετε για κοντέινερ και να ξεκινήσετε μια νέα παρουσία του Λειτουργικό σύστημα.

Έτσι, το RancherOS αφαιρεί τα πάντα εκτός από τα βασικά για την εκτέλεση του Docker και φιλοξενώντας πράκτορες για πλατφόρμες διαχείρισης κοντέινερ όπως το Rancher ή το Kubernetes. Στην πραγματικότητα, το RancherOS είναι τόσο ελάχιστο που υποστηρίζονται μόνο δύο χρήστες: root και rancher. Για να κατανοήσετε αυτόν τον σχεδιασμό, είναι καλύτερο να ξεκινήσετε με μια απεικόνιση της αρχιτεκτονικής του συστήματος:

Κτηματίας

Το RancherOS έχει εγκλωβιστεί στο σημείο ότι ακόμη και η διαδικασία init, PID 1, από την οποία γεννιούνται όλες οι άλλες διαδικασίες, είναι ένας δαίμονας Docker. Αν και φαινομενικά μια μικρή λεπτομέρεια, η αντικατάσταση του παραδοσιακού συστήματος init όπως το Sysvinit ή το Systemd με μια διαδικασία Dockerized init είναι ένα από τα βασικά χαρακτηριστικά του RancherOS, καθώς ξεπερνά μερικές από τις ασυμβατότητες στις αρχιτεκτονικές του Systemd και του Docker με καθαρό τρόπο. Παρόλο που σημειώνεται πρόοδος στην επίλυση αυτών των ασυμβίβαστων από τους προγραμματιστές του Systemd, ο σχεδιασμός του RancherOS εξασφαλίζει μηδενικά προβλήματα εδώ, τώρα και στο μέλλον, αν και στο κόστος της διαχείρισης των πραγμάτων κάπως διαφορετικά.

Το RancherOS τρέχει δύο δαίμονες Docker, το System Docker και το User Docker. Όλες οι υπηρεσίες επιπέδου συστήματος όπως η κονσόλα, η διαχείριση συσκευών, το NTP και το DHCP διαχειρίζονται από το σύστημα σύνδεσης εντολή, ενώ οι φόρτοι εργασίας του κοντέινερ διαχειρίζονται με το παραδοσιακό λιμενεργάτης εντολή. Αυτές οι εντολές είναι πανομοιότυπες, εκτός από τους τύπους κοντέινερ στα οποία μπορούν να λειτουργήσουν. Επομένως, εάν θέλετε να δείτε ποιες υπηρεσίες σε επίπεδο συστήματος εκτελούνται, θα εισαγάγατε σύστημα-docker ps.

Εάν το κάνετε, θα παρατηρήσετε ότι τα ονόματα στην άκρη δεξιά - Syslog, NTP, Udev κ.λπ. - είναι όλες οι υπηρεσίες συστήματος Linux. Η διακοπή, η εκκίνηση και η ενημέρωση μιας υπηρεσίας συστήματος αντιμετωπίζεται με τον ίδιο τρόπο όπως με οποιοδήποτε άλλο κοντέινερ, χρησιμοποιώντας το Docker API.

Σημειώστε επίσης ότι το κοντέινερ υπηρεσίας συστήματος που ονομάζεται docker, το οποίο ξεκινά από το System Docker, είναι ένας ξεχωριστός δαίμονας Docker για τη διαχείριση κοντέινερ χρήστη. Αυτός είναι ένας σημαντικός διαχωρισμός προνομίων. Επειδή όλα τα κοντέινερ χρηστών εκτελούνται εντός του κοντέινερ User Docker, η διαγραφή όλων των κοντέινερ χρηστών, για παράδειγμα, δεν θα κατεβάσει τα κοντέινερ συστήματος που εκτελούν υπηρεσίες RancherOS.

Μπορείτε να δείτε ποιος είναι ο φόρτος εργασίας του κοντέινερ χρήστη, όπως θα κάνατε συνήθως με το Docker, εισάγοντας λιμενεργάτης ps. Ακόμη και το κέλυφος είναι ένα κοντέινερ (αυτό που ονομάζεται κονσόλα), ώστε να μπορείτε να επιλέξετε ποιο θέλετε να εκτελέσετε. Τα επί του παρόντος διαθέσιμα κελύφη είναι BusyBox (η προεπιλογή), Alpine, CentOS, Debian, Fedora και Ubuntu.

Επειδή οι υπηρεσίες συστήματος είναι κοντέινερ, δεν υπάρχει διαχείριση πακέτων. Για να αναβαθμίσετε μια υπηρεσία, απλώς σταματήστε το παλιό κοντέινερ, τραβήξτε μια νέα έκδοση και επανεκκινήστε την υπηρεσία, όλα χρησιμοποιώντας το ίδιο Docker API.

Εγκατάσταση και διαμόρφωση του RancherOS

Το πρώτο πράγμα που πρέπει να κάνει ένας παραδοσιακός διαχειριστής του Unix είναι να σταματήσει να σκέφτεται το «πολυχρηστικό λειτουργικό σύστημα» και να αρχίσει να σκέφτεται «πλατφόρμα υποδομής». Το RancherOS έχει σχεδιαστεί για να παρέχεται σε διάφορα περιβάλλοντα - συμπεριλαμβανομένων των γυμνών μετάλλων, της εικονικής μηχανής και ορισμένων νεφών, συμπεριλαμβανομένων των AWS και της Google - με προβλέψιμο, αυτοματοποιημένο τρόπο.

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

Εάν ρίξετε μια ματιά στον κατάλογο διαμόρφωσης, / etc, θα δείτε ότι δεν υπάρχουν αρχεία / etc / rc ή πολλά άλλα και τι υπάρχει δεν έχει τροποποιηθεί με ένα πρόγραμμα επεξεργασίας κειμένου. Το RancherOS έχει το ισοδύναμο τριών επιπέδων εκτέλεσης με την παραδοσιακή έννοια που αντιστοιχεί στο System Docker, το User Docker και το Container. Η διαμόρφωση γίνεται από bootcmd, που τρέχει πριν από το System Docker, και runcmd, που εκτελείται στο System Docker, εκτελείται πριν από την εκκίνηση του User Docker.

Το RancherOS διαμορφώνεται με δύο τρόπους: χειροκίνητα χρησιμοποιώντας το ros config εντολή και κατά την εκκίνηση χρησιμοποιώντας ένα αρχείο διαμόρφωσης cloud-config. Το βρήκα λίγο δυσάρεστο στην αρχή, ειδικά αν δεν έχετε χρησιμοποιήσει ποτέ cloud-config (υπόδειξη: χρησιμοποιήστε ένα πρόγραμμα επεξεργασίας με γνώμονα το YAML, όπως το Emacs και το Tramp Mode, για την αρχική εγκατάσταση). Μόλις μπόρεσα να κάνω SSH στο μηχάνημα, ήταν σχετικά εύκολο στη χρήση ros config για να λάβω τη διαμόρφωση που ήθελα και να γράψω το αντίστοιχο αρχείο YAML cloud-config για να εφαρμοστεί στην επόμενη επανεκκίνηση. Επειδή η εκκίνηση είναι γρήγορη, ο κύκλος ανάπτυξης εδώ είναι επίσης γρήγορος.

Οτιδήποτε θέλετε να διαμορφώσετε μπορεί να γίνει είτε με το αρχείο YAML είτε ros config συμπεριλαμβανομένων των φόρτωσης μονάδων πυρήνα, διαμόρφωσης TLS και παραμέτρων συντονισμού πυρήνα. Θα ήταν ωραίο να έχουμε έναν τρόπο να διατηρήσουμε τις υπάρχουσες επενδύσεις σε εργαλεία διαχείρισης διαμόρφωσης όπως το SaltStack και το Puppet, τουλάχιστον εν μέρει, για να διευκολύνουμε τη μετάβαση σε πλατφόρμες κοντέινερ. Ο αντιδραστήρας SaltStack φαίνεται ότι θα ήταν καλό για αυτήν την περίπτωση χρήσης. Όπως είναι τώρα, οι περισσότεροι άνθρωποι μαθαίνουν έναν εντελώς νέο τρόπο διαχείρισης διαμορφώσεων μηχανών. Οι περισσότεροι διαχειριστές κοντέινερ θα χρησιμοποιήσουν τη διεπαφή χρήστη ιστού διαχείρισης κοντέινερ Rancher, επομένως αυτή η εργασία είναι πιθανότατα πιο εύκολη σε αυτό το επίπεδο.

Αποθήκευση και δικτύωση RancherOS

Ανέφερα προηγουμένως ότι εγκαθιστάτε το RancherOS καθορίζοντας μια συσκευή για αποθήκευση μόνιμης κατάστασης. Στις περισσότερες περιπτώσεις, αυτός είναι ο μόνος δίσκος που θα χρησιμοποιεί το RancherOS. Επειδή όλες οι υπηρεσίες εκτελούνται σε κοντέινερ Docker, θα χρησιμοποιούν τόμους Docker για συνεχή αποθήκευση, αντικατοπτρίζοντας κατά προσέγγιση την αρχιτεκτονική του συστήματος. Οι τόμοι συστήματος παρέχουν μόνιμη αποθήκευση για κοντέινερ συστήματος, τόμους χρηστών για υπηρεσίες κονσόλας και τόμους εντολών για δυαδικά αρχεία που χρησιμοποιούνται από υπηρεσίες συστήματος. Ο μεγάλος αριθμός τόμων και υπηρεσιών σημαίνει ότι το βουνό Η εντολή δεν θα βοηθήσει πολύ: υπάρχει μια πλήρης σελίδα ακατανόητης παραγωγής. Εύχομαι η τεκμηρίωση να το εξηγήσει λίγο καλύτερα, διότι η επιμονή είναι εξαιρετικά σημαντικό θέμα που πρέπει να κατανοηθεί.

Το Rancher υποστηρίζει ζωντανά στιγμιότυπα και δημιουργία αντιγράφων ασφαλείας των τόμων του Docker, επιτρέποντας στους χρήστες να δημιουργούν αντίγραφα ασφαλείας των κρατικών κοντέινερ και των κρατικών υπηρεσιών. Αυτό δεν περιλαμβάνεται στο RancherOS, αλλά αποτελεί μέρος της δυνατότητας Convoy του συστήματος διαχείρισης κοντέινερ Rancher. Χρησιμοποιώντας το Convoy μπορείτε να τραβήξετε στιγμιότυπα τόμων, σταδιακά να δημιουργήσετε αντίγραφα ασφαλείας στιγμιότυπων σε καταστήματα αντικειμένων όπως το Amazon S3 και να επαναφέρετε τόμους σε κεντρικούς υπολογιστές που εκτελούνται.

Το σύστημα αρχείων ZFS υποστηρίζεται, αλλά δεν είχα την ευκαιρία να το δοκιμάσω. Δεδομένης της κατάστασης της τεκμηρίωσης και του περιορισμού ότι το zpool μπορεί να τοποθετηθεί μόνο στο / mnt, θα συνιστούσα ενδελεχείς δοκιμές πριν το χρησιμοποιήσετε στην παραγωγή.

Μπορείτε να κάνετε όλες τις συνήθεις ρυθμίσεις δικτύου στο RancherOS, αλλά χρησιμοποιώντας αρχεία διαμόρφωσης YAML ή Ροζ εντολές. Οι ρυθμίσεις δικτύου ζουν στον χώρο ονομάτων του rancher.network.interfaces, όπου μπορείτε να ρυθμίσετε τις παραμέτρους όπως το DHCP, τις πύλες, το MTU, κ.λπ. Πολλαπλά NIC, σύνδεση, γέφυρες και VLANS μπορούν να διαμορφωθούν με τον ίδιο τρόπο. Το DNS βρίσκεται στο χώρο κλειδιών rancher.networks.dns. Μέχρι να εξοικειωθείτε με τις αντιστοιχίσεις χώρου ονομάτων, περιμένετε να κάνετε λίγο σκάψιμο.

Αναβαθμίσεις και υποβαθμίσεις του RancherOS

Οι επιτόπιες αναβαθμίσεις και υποβαθμίσεις δεν θα μπορούσαν να είναι ευκολότερες. Θα χρειαστεί να αναβαθμίσετε (ή να υποβαθμίσετε) δύο συστήματα: το λειτουργικό σύστημα και τον κινητήρα Docker. Η διαχείριση των δύο είναι εύκολη και χρειάζονται μόνο δευτερόλεπτα χρησιμοποιώντας, το μαντέψατε, το Ροζ εντολή. Το μόνο που χρειάζεται να κάνετε είναι να επιλέξετε την έκδοση του λειτουργικού συστήματος που θέλετε να εκτελέσετε και να επανεκκινήσετε. Εύχομαι όλες οι αναβαθμίσεις και οι υποβαθμίσεις του Unix να πάνε τόσο ομαλά. Για παράδειγμα, η υποβάθμιση από 1.0.1 σε 1.0.0 χρειάστηκε λιγότερο από ένα λεπτό:

Κτηματίας

Ομορφη. Εάν θέλετε να αλλάξετε κινητήρες Docker, μπορείτε να το κάνετε εξίσου εύκολα:

διακόπτης κινητήρα ros docker-1.11.2

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

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

$config[zx-auto] not found$config[zx-overlay] not found