CSE: Kubernetes vCloudissa

CSE: Kubernetes vCloudissa
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

CSE: Kubernetes vCloudissa

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 vcd-cli, joten asennetaan molemmat.

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 täällä.

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
CSE: Kubernetes vCloudissa

Kun klusterin luontitehtävä on valmis, se on valmis käytettäväksi.

Tarkistetaan käyttöönoton oikeellisuus komennolla vcd cse -klusterin tiedot MyCluster

CSE: Kubernetes vCloudissa

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ä:

CSE: Kubernetes vCloudissa

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

Lisää kommentti