CSE: Kubernetes για όσους βρίσκονται στο vCloud

CSE: Kubernetes για όσους βρίσκονται στο vCloud
Γεια σε όλους!

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

Υπήρχαν πολλοί λόγοι για αυτό, αλλά η ιστορία μας δεν αφορά το holivar.

Είχαμε λίγες επιλογές όσον αφορά τη βάση υποδομής. vCloud Director και vCloud Director. Διαλέξαμε το νεότερο και αποφασίσαμε να ξεκινήσουμε.

Για άλλη μια φορά, κοιτάζοντας το "The Hard Way", κατέληξα πολύ γρήγορα στο συμπέρασμα ότι χθες χρειαζόταν ένα εργαλείο για την αυτοματοποίηση τουλάχιστον βασικών διαδικασιών, όπως η ανάπτυξη και το μέγεθος. Μια βαθιά κατάδυση στην Google έφερε στο φως ένα τέτοιο προϊόν όπως το VMware Container Service Extension (CSE) - ένα προϊόν ανοιχτού κώδικα που σας επιτρέπει να αυτοματοποιήσετε τη δημιουργία και το μέγεθος των συμπλεγμάτων k8s για όσους βρίσκονται στο vCloud.

Αποποίηση ευθύνης: Το ΧΑΚ έχει τους περιορισμούς του, αλλά για τους σκοπούς μας ήταν τέλειο. Επίσης, η λύση πρέπει να υποστηρίζεται από τον πάροχο cloud, αλλά επειδή το τμήμα διακομιστή είναι επίσης ανοιχτού κώδικα, ζητήστε από τον πλησιέστερο διαχειριστή να το έχει διαθέσιμο :)

Για να ξεκινήσετε να το χρησιμοποιείτε, χρειάζεστε έναν λογαριασμό διαχειριστή στον οργανισμό vCloud και ένα προηγουμένως δρομολογημένο δίκτυο για το σύμπλεγμα (κατά τη διαδικασία ανάπτυξης, χρειάζεστε πρόσβαση στο Διαδίκτυο από αυτό το δίκτυο, μην ξεχάσετε να διαμορφώσετε το Τείχος προστασίας/NAT). Το να απευθύνεσαι δεν έχει σημασία. Σε αυτό το παράδειγμα, ας πάρουμε το 10.0.240.0/24

CSE: Kubernetes για όσους βρίσκονται στο vCloud

Δεδομένου ότι μετά τη δημιουργία, το σύμπλεγμα θα πρέπει να γίνει με κάποιο τρόπο διαχείριση, συνιστάται να έχετε ένα VPN με δρομολόγηση στο δημιουργημένο δίκτυο. Χρησιμοποιούμε ένα τυπικό SSL VPN που έχει ρυθμιστεί στην πύλη Edge του οργανισμού μας.

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

Ο υπολογιστής-πελάτης απαιτεί την έκδοση Python 3.7.3 και νεότερη εγκατεστημένη και τη λειτουργική μονάδα vcd-cli, οπότε ας εγκαταστήσουμε και τα δύο.

pip3 install vcd-cli

pip3 install container-service-extension

Μετά την εγκατάσταση, ελέγχουμε την έκδοση CSE και λαμβάνουμε τα εξής:

# vcd cse version
Error: No such command "cse".

Απροσδόκητο, αλλά διορθώσιμο. Όπως αποδείχθηκε, το CSE πρέπει να συνδεθεί ως ενότητα στο vcd-cli.
Για να το κάνετε αυτό, πρέπει πρώτα να συνδεθείτε στο vcd-cli στον οργανισμό μας:

# vcd login MyCloud.provider.com org-dev admin
Password: 
admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01'

Μετά από αυτό, το vcd-cli θα δημιουργήσει ένα αρχείο ρυθμίσεων ~/.vcd-cli/profiles.yaml
Στο τέλος πρέπει να προσθέσετε τα εξής:

extensions:
  - container_service_extension.client.cse

Στη συνέχεια ελέγχουμε ξανά:

# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0

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

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

# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

Ας προσπαθήσουμε να ξεκινήσουμε τη δημιουργία ενός συμπλέγματος:

vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs

Αν λάβουμε σφάλμα Σφάλμα: Η περίοδος λειτουργίας έχει λήξει ή ο χρήστης δεν έχει συνδεθεί. Παρακαλούμε συνδεθείτε ξανά. — συνδεθείτε ξανά στο vcd-cli στο vCloud όπως περιγράφεται παραπάνω και δοκιμάστε ξανά.

Αυτή τη φορά όλα είναι καλά και το έργο της δημιουργίας ενός cluster έχει ξεκινήσει.

cluster operation: Creating cluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) from template 'photon-v2_k8-1.12_weave-2.3.0' (revision 1)

Θα χρειαστούν περίπου 20 λεπτά για να ολοκληρωθεί η εργασία. Στο μεταξύ, ας δούμε τις βασικές παραμέτρους εκκίνησης.

—δίκτυο — το δίκτυο που δημιουργήσαμε νωρίτερα.
—ssh-key — τα κλειδιά που δημιουργήσαμε, τα οποία θα γραφτούν στους κόμβους του συμπλέγματος
—nodes n — Αριθμός κόμβων Worker στο σύμπλεγμα. Θα υπάρχει πάντα ένας κύριος, αυτός είναι περιορισμός ΜΑΚ
—enable-nfs — δημιουργήστε έναν πρόσθετο κόμβο για κοινόχρηστα στοιχεία NFS κάτω από μόνιμους τόμους. Είναι μια επιλογή πεντάλ· θα επιστρέψουμε στη ρύθμιση του τι κάνει λίγο αργότερα.

Εν τω μεταξύ, στο vCloud μπορείτε να παρακολουθείτε οπτικά τη δημιουργία ενός συμπλέγματος
CSE: Kubernetes για όσους βρίσκονται στο vCloud

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

Ας ελέγξουμε την ορθότητα της ανάπτυξης με την εντολή vcd cse πληροφορίες συμπλέγματος MyCluster

CSE: Kubernetes για όσους βρίσκονται στο vCloud

Στη συνέχεια, πρέπει να χρησιμοποιήσουμε τη διαμόρφωση συμπλέγματος kubectl

# vcd cse cluster config MyCluster > ./.kube/config

Και μπορείτε να ελέγξετε την κατάσταση του συμπλέγματος χρησιμοποιώντας το:

CSE: Kubernetes για όσους βρίσκονται στο vCloud

Σε αυτό το σημείο, το σύμπλεγμα μπορεί να θεωρηθεί ότι λειτουργεί υπό όρους, αν όχι για την ιστορία με επίμονους όγκους. Εφόσον βρισκόμαστε στο vCloud, η χρήση του vSphere Provider δεν θα λειτουργήσει. Επιλογή --enable-nfs σχεδιάστηκε για να εξομαλύνει αυτήν την ενόχληση, αλλά δεν λειτούργησε εντελώς. Απαιτείται χειροκίνητη ρύθμιση.

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

# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares'
# vcd vapp attach mycluster nfsd-9604 nfs-shares-1

Μετά από αυτό, πηγαίνουμε μέσω ssh (πραγματικά δημιουργήσατε τα κλειδιά;) στον κόμβο NFS και τελικά συνδέουμε τον δίσκο:

root@nfsd-9604:~# parted /dev/sdb
(parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? yes
(parted) unit GB
(parted) mkpart primary 0 100
(parted) print
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 100GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End    Size   File system  Name     Flags
 1      0.00GB  100GB  100GB               primary

(parted) quit
root@nfsd-9604:~# mkfs -t ext4 /dev/sdb1
Creating filesystem with 24413696 4k blocks and 6111232 inodes
Filesystem UUID: 8622c0f5-4044-4ebf-95a5-0372256b34f0
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Δημιουργήστε έναν κατάλογο για δεδομένα και προσαρτήστε ένα νέο διαμέρισμα εκεί:

mkdir /export
echo '/dev/sdb1  /export   ext4  defaults   0 0' >> /etc/fstab
mount -a

Ας δημιουργήσουμε πέντε δοκιμαστικά διαμερίσματα και ας τα μοιραστούμε για το σύμπλεγμα:

>cd /export
>mkdir vol1 vol2 vol3 vol4 vol5
>vi /etc/exports
#Добавим это в конец файла
/export/vol1 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol2 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol3 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol4 *(rw,sync,no_root_squash,no_subtree_check)
/export/vol5 *(rw,sync,no_root_squash,no_subtree_check)
#:wq! ;)
#Далее - экспортируем разделы
>exportfs -r

Μετά από όλη αυτή τη μαγεία, μπορούμε να δημιουργήσουμε PV και PVC στο σύμπλεγμα μας κάπως έτσι:
ΦΒ:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-vol1
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    # Same IP as the NFS host we ssh'ed to earlier.
    server: 10.150.200.22
    path: "/export/vol1"
EOF

pvc:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 10Gi
EOF

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

#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8

#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes

Σας ευχαριστώ όλους για τον χρόνο σας, αν έχετε οποιεσδήποτε ερωτήσεις, ρωτήστε στα σχόλια.

Πηγή: www.habr.com

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