Hei kaikille!
Kävi niin, että meidän pieni tiimimme on kasvanut viime aikoina, eikä todellakaan yhtäkkiä, siirtämään osan (ja tulevaisuudessa kaikki) tuotteista Kubernetesiin.
Tähän oli monia syitä, mutta tarinamme ei koske holivaria.
Meillä oli vähän valinnanvaraa infrastruktuuripohjan suhteen. vCloud Director ja vCloud Director. Valitsimme uudemman ja päätimme aloittaa.
Jälleen kerran selaillessani "The Hard Way" -tulosta tulin hyvin nopeasti siihen tulokseen, että eilen tarvittiin työkalu ainakin perusprosessien, kuten käyttöönoton ja mitoituksen, automatisointiin. Syvä sukellus Googleen toi esiin sellaisen tuotteen kuin VMware Container Service Extension (CSE) – avoimen lähdekoodin tuotteen, jonka avulla voit automatisoida k8s-klusterien luomisen ja koon muuttamisen vCloudissa.
Vastuuvapauslauseke: täsmähakukoneella on rajoituksensa, mutta tarkoituksiinmme se oli täydellinen. Ratkaisun on myös tuettava pilvipalveluntarjoajaa, mutta koska palvelinosa on myös avoimen lähdekoodin, pyydä lähimmältä esimieheltäsi se saataville :)
Aloittaaksesi sen käytön, tarvitset järjestelmänvalvojan tilin vCloud-organisaatiossa ja aiemmin luodun reititetyn verkon klusteria varten (käyttöönoton aikana tarvitset Internet-yhteyden tästä verkosta, muista määrittää palomuuri/NAT). Osoitteella ei ole väliä. Otetaan tässä esimerkissä 10.0.240.0/24
Koska luomisen jälkeen klusteria on hallittava jotenkin, on suositeltavaa, että sinulla on VPN reitityksellä luotuun verkkoon. Käytämme tavallista SSL VPN:ää, joka on määritetty organisaatiomme Edge Gatewayssa.
Seuraavaksi sinun on asennettava täsmähakukone, jossa k8s-klustereita hallitaan. Minun tapauksessani tämä on toimiva kannettava tietokone ja pari hyvin piilotettua konttia, jotka ohjaavat automaatiota.
Asiakas vaatii Python-version 3.7.3 tai uudemman asennettuna ja moduulin asennettuna
pip3 install vcd-cli
pip3 install container-service-extension
Asennuksen jälkeen tarkistamme täsmähakukoneversion ja saamme seuraavat tiedot:
# vcd cse version
Error: No such command "cse".
Odottamaton, mutta korjattavissa. Kuten kävi ilmi, CSE on liitettävä moduulina vcd-cli: hen.
Tätä varten sinun on ensin kirjauduttava sisään vcd-cli organisaatioomme:
# vcd login MyCloud.provider.com org-dev admin
Password:
admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01'
Tämän jälkeen vcd-cli luo asetustiedoston ~/.vcd-cli/profiles.yaml
Lopuksi sinun on lisättävä seuraavat tiedot:
extensions:
- container_service_extension.client.cse
Sitten tarkistetaan uudelleen:
# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0
Asiakkaan asennusvaihe on valmis. Yritetään ottaa käyttöön ensimmäinen klusteri.
Täsmähakukoneessa on useita käyttöparametrijoukkoja, jotka kaikki voidaan tarkastella
Ensin luodaan avaimet salasanattomaan pääsyyn tulevaan klusteriin. Tämä kohta on tärkeä, koska oletusarvoisesti salasanan kirjautuminen solmuihin poistetaan käytöstä, ja jos et aseta avaimia, voit saada paljon työtä virtuaalikoneen konsolien kautta, mikä ei ole kätevää.
# 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.
Yritetään aloittaa klusterin luominen:
vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs
Jos saamme virheen Virhe: Istunto on vanhentunut tai käyttäjä ei ole kirjautunut sisään. Kirjaudu uudelleen. — kirjaudu uudelleen vcd-cli vCloudiin yllä kuvatulla tavalla ja yritä uudelleen.
Tällä kertaa kaikki on hyvin ja klusterin luominen on alkanut.
cluster operation: Creating cluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) from template 'photon-v2_k8-1.12_weave-2.3.0' (revision 1)
Tehtävän suorittamiseen menee noin 20 minuuttia; sillä välin katsotaan peruskäynnistysparametreja.
—verkko — aiemmin luomamme verkko.
—ssh-key — luomamme avaimet, jotka kirjoitetaan klusterin solmuihin
—solmut n — Työntekijäsolmujen määrä klusterissa. Aina on yksi isäntä, tämä on täsmähakukoneen rajoitus
—enable-nfs — luo lisäsolmu NFS-osuuksille pysyville levyille. Se on vähän poljinvaihtoehto; palaamme sen tekemiseen hieman myöhemmin.
Samaan aikaan vCloudissa voit seurata visuaalisesti klusterin luomista
Kun klusterin luontitehtävä on valmis, se on valmis käytettäväksi.
Tarkistetaan käyttöönoton oikeellisuus komennolla vcd cse -klusterin tiedot MyCluster
Seuraavaksi meidän on saatava klusterin kokoonpano käytettäväksi kubectl
# vcd cse cluster config MyCluster > ./.kube/config
Ja voit tarkistaa klusterin tilan käyttämällä sitä:
Tässä vaiheessa klusterin voidaan katsoa ehdollisesti toimivaksi, ellei tarinan kanssa, jonka volyymit ovat jatkuvat. Koska olemme vCloudissa, emme voi käyttää vSphere Provideria. Vaihtoehto --enable-nfs suunniteltu tasoittamaan tätä haittaa, mutta se ei toiminut täysin. Manuaalinen säätö vaaditaan.
Aluksi solmumme on luotava erillinen itsenäinen levy vCloudiin. Tämä takaa, että tietomme eivät katoa klusterin mukana, jos ne poistetaan. Liitä myös levy NFS:ään
# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares'
# vcd vapp attach mycluster nfsd-9604 nfs-shares-1
Sen jälkeen siirrymme ssh:n kautta (sinä todella loit avaimet?) NFS-solmuun ja yhdistämme lopuksi levyn:
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
Luo hakemisto tiedoille ja asenna sinne uusi osio:
mkdir /export
echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab
mount -a
Luodaan viisi testiosiota ja jaetaan ne klusterille:
>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
Kaiken tämän taian jälkeen voimme luoda klusteriimme PV:tä ja PVC:tä, jotakuinkin näin:
Reportteri:
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
Tähän päättyy tarina yhden klusterin syntymisestä ja alkaa tarina sen elinkaaresta. Bonuksena on kaksi muuta hyödyllistä täsmähakukonekomentoa, joiden avulla voit joskus säästää resursseja tai ei:
#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8
#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes
Kiitos kaikille ajastasi, jos sinulla on kysyttävää, kysy kommenteissa.
Lähde: will.com