
Tere kõigile!
Oleme jõudnud olukorda, kus meie väike meeskond, mitte just hiljuti ja kindlasti mitte järsku, on jõudnud tasemeni, kus viime mitmed (ja tulevikus kõik) tooted Kubernetesesse.
Sellel oli palju põhjuseid, kuid meie lugu ei ole sellest valimisest.
Meie infrastruktuuri aluseks oli vähe valikuid. vCloud Director ja vCloud Director. Valisime uuema versiooni ja otsustasime alustada.
Jällegi „The Hard Way“ lehitsedes jõudsin kiiresti järeldusele, et automatiseerimise tööriist vähemalt põhiprotsesside, nagu juurutamine ja mõõtmine, jaoks on vajalik juba eile. Sügavam sukeldumine Google'isse tõi esile toote VMware Container Service Extension (CSE) — avatud lähtekoodiga toote, mis võimaldab automatiseerida k8s klastrite loomist ja mõõtmist neil, kes kasutavad vCloudi.
Märkus: CSE-l on oma piirangud, kuid meie eesmärkide jaoks sobis see ideaalselt. Lahendust peab toetama pilveteenus, kuid kuna serveripool on samuti avatud lähtekoodiga, nõudke selle olemasolu lähimalt juhilt 🙂
Alustamiseks on vajalik administraatori konto vCloudi organisatsioonis ja eelnevalt loodud suunatud võrk klastrile (juurutamise protsessis on vajalik internetiühendus sellest võrgust, ärge unustage tulekahju/NAT seadistada). Aadressimine ei oma tähtsust. Käesolevas näites kasutame 10.0.240.0/24.
![]()
Kuna klastrit tuleb pärast loomist kuidagi hallata, on soovitatav olemasolu VPN, mis suudab suunata loodud võrku. Me kasutame standardset SSL-VPNi, mis on seadistatud meie organisatsiooni Edge Gatewayle.
Seejärel on vajalik CSE kliendi paigaldamine sinna, kust klastreid k8s hallatakse. Minu puhul on see tööarvuti ja paar hästi varjatud konteinerit, mis haldavad automatiseerimist.
Kliendil on vajalik, et Python versioon 3.7.3 või uuem oleks juba paigaldatud ja moodul , seega paigaldame mõlemad.
pip3 install vcd-cli
pip3 install container-service-extension
Pärast paigaldamist kontrollime CSE versiooni ja saame järgmist:
# vcd cse version
Error: No such command "cse".
Ootamatu, kuid parandatav. Selgub, et CSE tuleb seadistada vcd-cli mooduliks.
Selleks tuleb esmalt logida vcd-cli meie organisatsiooni:
# vcd login MyCloud.provider.com org-dev admin
Password:
admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01'
Pärast seda loob vcd-cli konfiguratsiooni faili ~/.vcd-cli/profiles.yaml
Selle lõppu tuleb lisada järgmine:
extensions:
- container_service_extension.client.cse
Seejärel kontrollime uuesti:
# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0
Kliendi installatsiooni etapp on lõpetatud. Proovime käivitada esimese klastrite.
CSE-l on mitu kasutamise parameetrite komplekti, kõiki saab vaadata.
Alustuseks loome võtmed tulevasse klastrisse paroolivaba juurdepääsu jaoks. See punkt on oluline, kuna vaikimisi on sisselogimine sõlmedesse parooliga keelatud ning võtmete määramata jätmine võib põhjustada palju tööd virtuaalmasinate konsoolist, mis ei ole just mugav.
# 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.
Proovime käivitada klastri loomist:
vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfsKui saame vea, Error: Seanss on aegunud või kasutaja ei ole sisse logitud. Palun logige uuesti sisse. — logime uuesti vcd-cli-ga vCloudi, nagu eespool kirjeldatud, ja proovime uuesti.
Seekord läheb kõik hästi ja klastri loomise ülesanne käivitati.
cluster operation: Loomine klastrivApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) mallist 'photon-v2_k8-1.12_weave-2.3.0' (muudatus 1)
Ülesande lõpetamine võtab aega umbes 20 minutit, samal ajal vaatame üle peamised käivitamisparameetrid.
—network — varem loodud võrk.
—ssh-key — loodud võtmed, mis salvestatakse klastrisõlmedesse.
—nodes n — Klastri töötajate sõlmede arv. Meister on alati üks, see on CSE piirang.
—enable-nfs — luua täiendav sõlm NFS jagamiseks püsivatesse mahtudesse. Veidi keeruline valik, nende seadistamise juurde tagasi tuleme.
Sel ajal saab vCloudis visuaalselt jälgida klastrite loomist.

Niipea kui klastri loomise ülesanne on lõpetatud, on see tööks valmis.
Kontrollime juurutamise õigsust käsuga. vcd cse cluster info MyCluster

Seejärel peame saama klastri konfiguratsiooni kasutamiseks. kubectl
# vcd cse cluster config MyCluster > ./.kube/config
Ja seda on võimalik klastriseisundi kontrollimiseks kasutada:

Sel hetkel võib klastri pidada tinglikult tööks, kui mitte arvestada püsivate mahtudega seotud ajalooga. Kuna oleme vCloudis, ei saa kasutada vSphere Providerit. Valik —enable-nfs on mõeldud selle ebameeldivuse leevendamiseks, kuid see ei õnnestunud täielikult. Nõutakse käsitsi seadeid.
Esmalt peab meie sõlm looma eraldi iseseisva ketta vCloudis. See garanteerib, et meie andmed ei kao koos klastriga, kui see kustutatakse. Samuti ühendame ketta NFS-iga.
# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares'
# vcd vapp attach mycluster nfsd-9604 nfs-shares-1
Pärast seda läheme SSH kaudu (te tõeliselt lõite võtmed, eks?) meie NFS sõlme ja ühendame ketta lõplikult:
root@nfsd-9604:~# parted /dev/sdb
(parted) mklabel gpt
Warning: 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
Loome me kaust andmete jaoks ja monteerime sinna värske partitsioon:
mkdir /export
echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab
mount -a
Loome viis testpartitsiooni ja jagame need klastri jaoks:
>cd /export
>mkdir vol1 vol2 vol3 vol4 vol5
>vi /etc/exports
#Lisame selle faili lõppu
/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! ;)
#Seejärel - ekspordime partitsioonid
>exportfs -r
Pärast kogu seda võlu on võimalik luua PV ja PVC meie klastris umbes nii:
PV:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-vol1
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
# Sama IP nagu NFS host, kuhu me varem ssh’iga sisse viisime.
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
Sellega lõpeb ühe klastrite loomise lugu ja algab tema elutsükkel. Boonusena - veel kaks kasulikku CSE käsku, mis võivad mõnikord ressursse hästi säästa või mitte:
#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8
#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes
Aitäh kõigile aega leidmise eest, kui on küsimusi - küsige kommentaarides.
Allikas: habr.com
