
Tere kõigile!
Nii on juhtunud, et meie väike meeskond, mitte just hiljuti ja kindlasti mitte ootamatult, on jõudnud faasi, kus kolime mõned (ja tulevikus isegi kõik) tooted Kubernetesesse.
Selleks oli palju põhjuseid, kuid meie lugu ei ole konfliktide ja vaidluste kohta.
Infrastruktuuri alusena oli meie valik väike. vCloud Director ja vCloud Director. Valisime uuema ja otsustasime alustada.
Jällegi sirvides „The Hard Way”, jõudsin väga kiiresti järeldusele, et tööriist, mis automatiseriks vähemalt põhiprotsessid, nagu juurutamine ja suuruse määramine, on vajalik juba eilsest. Sügav sukeldumine Google'i avas teed sellisele tootearendusele nagu VMware Container Service Extension (CSE) — avatud lähtekoodiga toode, mis võimaldab automatiseerida k8s klastrite loomist ja suuruse määramist neile, kes on vCloudis.
Märkus: CSE-l on oma piirangud, kuid meie eesmärkide jaoks sobis see ideaalselt. Samuti peaks lahendust toetama pilveteenuse pakkuja, kuid kuna serveripool on samuti avatud lähtekoodiga, küsige selle olemasolu kohalikult haldurilt 🙂
Kasutamiseks on vajalik administraatori konto olemasolu vCloudis ja eelnevalt loomine suunatud võrgustik klastrile (deploeerimise ajal on vajalik internetiühendus sellest võrgustikust, ärge unustage seadistada tulemüür/NAT). Aadressimisest ei ole see sõltuv. Antud näites kasutame 10.0.240.0/24.
![]()
Kuna pärast loomist vajab klaster haldamist, on soovitatav VPN, mis suunab loodud võrgustikule. Kasutame standardset SSL-VPN-i, mis on seadistatud meie organisatsiooni Edge Gateway'le.
Seejärel tuleb installida CSE klient sinna, kust klastreid k8s-i hakatakse haldama. Minu puhul on see töölaual ja paar hästi peidetud konteinerit, mis haldavad automatiseerimist.
Klient nõuab paigaldatud Python versiooni 3.7.3 või uuemat ja paigaldatud moodulit , seega installime need 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".
Üllatav, aga parandatav. Selgus, et CSE tuleb vcd-cli-le moodulina lisada.
Selleks tuleb esmalt sisse 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 konfigureerimisfaili. ~/.vcd-cli/profiles.yaml
Selle lõppu tuleb lisada järgnev:
laiendused:
- container_service_extension.client.cse
Seejärel kontrollime uuesti:
# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0
Klientide installimise etapp on lõpetatud. Proovime rakendada esimest klastri.
CSE-l on mitu kasutamisparameetrite komplekti, kõik need on nähtavad.
Alustuseks loome võtmed, et saada paroolivaba juurdepääs tulevatele klastritele. See on oluline, kuna vaikimisi on juurdepääs sõlmedele parooliga keelatud, ja kui võtmeid ei seadistata, võib palju tööd vaja minna virtuaalsete masinate kaudu, 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 klastri loomist:
vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfsKui saame vea Error: Session has expired or user not logged in. Please re-login. — siis logime vcd-cli jälle vCloudi sisse, nagu eespool kirjeldatud, ja proovime uuesti.
Seekord läks kõik hästi ja klastri loomise ülesanne käivitati.
klastri operatsioon: Loome klastri vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) mallist 'photon-v2_k8-1.12_weave-2.3.0' (redaktsioon 1)
Ülesande lõpetamiseks kulub umbes 20 minutit; sellega samal ajal vaatame läbi peamised käivitamisparameetrid.
—network — eelnevalt loodud võrk.
—ssh-key — meie loodud võtmed, mis salvestatakse klastrinoodidesse
—nodes n — Klastri Worker node'ide arv. Master on alati üks, see on CSE piirang.
—enable-nfs — luua täiendav node NFS jagamise jaoks persistent volumes jaoks. Veidi keerulisem valik, mille seadistamisele me naaseme hiljem.
Samal ajal saab vCloud'is visuaalselt jälgida klastrite loomist.

Niipea kui klastrite loomise ülesanne on lõpetatud, on see tööks valmis.
Kontrollime juurutuse õiget toimimist käsuga vcd cse cluster info MyCluster

Järgmiseks peame saama klastri konfiguratsiooni kasutamiseks. kubectl
# vcd cse cluster config MyCluster > ./.kube/config
Ja selle abil saab juba kontrollida klastri seisundit:

Sel hetkel võib klastri pidada tinglikult töökorras, kui mitte arvestada persistent volumes probleemiga. Kuna oleme vCloudis, ei saa kasutada vSphere Provider'i. Valik —enable-nfs on mõeldud selle ebamugavuse leevendamiseks, kuid see ei õnnestunud täielikult. Vajalik on käsitsi seadistamine.
Kuna meie node peab looma eraldi Independent 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
Seejärel ühendame ssh kaudu (te tõesti lõite võtmed, eks?) meie NFS sõlmega ja liidame kettad lõpuks:
root@nfsd-9604:~# parted /dev/sdb
(parted) mklabel gpt
Hoiatus: Juba olemasolev ketasild peal /dev/sdb kustutatakse ja kõik andmed
sellel kettal kaovad. Kas soovite jätkata?
Jah/Ei? jah
(parted) unit GB
(parted) mkpart primary 0 100
(parted) print
Mudeli: VMware Virtuaalne ketas (scsi)
Ketas /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
Loome failisüsteemi 24413696 4k blokiga ja 6111232 inode'iga
Failisüsteemi UUID: 8622c0f5-4044-4ebf-95a5-0372256b34f0
Superbloki varukoopiad on salvestatud plokkides:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Grupi tabelid eraldatud: tehtud
Inode tabelite kirjutamine: tehtud
Käimasolev ajakiri (32768 plokki): tehtud
Superplokkide ja failisüsteemi arvutustehnika teabe kirjutamine: tehtud
Loome andmete jaoks kausta ja mountime sinna uue partitsiooni:
mkdir /export
echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab
mount -a
Loome viis testpartitsiooni ja jagame need klastrile:
>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! ;)
# Järgmiseks - ekspordime partitsioonid
>exportfs -r
Kogu selle maagia järel saab meie klastris luua PV ja PVC 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 meie NFS hostil, kuhu me SSH'de läbi läksime.
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 loo loomine ja algab tema elutsükli lugu. Boonusena — veel kaks kasulikku CSE käsku, mis aitavad aeg-ajalt ressursse 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 aja eest, kui on küsimusi — küsige kommentaarides.
Allikas: habr.com
