CSE: Kubernetes voor degenen in vCloud

CSE: Kubernetes voor degenen in vCloud
Hallo iedereen!

Het gebeurde zo dat ons kleine team, om niet te zeggen recentelijk, en zeker niet plotseling, is gegroeid om een ​​aantal (en in de toekomst alle) producten naar Kubernetes te verhuizen.

Daar waren veel redenen voor, maar ons verhaal gaat niet over holivar.

We hadden weinig keuze wat betreft de infrastructuurbasis. vCloud Directeur en vCloud Directeur. We kozen voor de nieuwere en besloten te beginnen.

Toen ik opnieuw “The Hard Way” doorbladerde, kwam ik al snel tot de conclusie dat er gisteren een tool nodig was voor het automatiseren van op zijn minst basisprocessen, zoals implementatie en omvang. Een diepe duik in Google bracht een product als VMware Container Service Extension (CSE) aan het licht - een open source-product waarmee u het maken en vergroten van de grootte van k8s-clusters voor degenen in vCloud kunt automatiseren.

Disclaimer: CSE heeft zijn beperkingen, maar voor onze doeleinden was het perfect. Ook moet de oplossing ondersteund worden door de cloudprovider, maar aangezien het servergedeelte ook open-source is, vraag dan aan je dichtstbijzijnde manager om dit beschikbaar te hebben :)

Om het te kunnen gebruiken, hebt u een beheerdersaccount in de vCloud-organisatie en een eerder aangemaakt gerouteerd netwerk voor het cluster nodig (tijdens het implementatieproces heeft u internettoegang van dit netwerk nodig, vergeet niet Firewall/NAT te configureren). Adressering maakt niet uit. Laten we in dit voorbeeld 10.0.240.0/24 nemen

CSE: Kubernetes voor degenen in vCloud

Omdat het cluster na het maken op de een of andere manier moet worden beheerd, wordt het aanbevolen om een ​​VPN te hebben met routering naar het gecreëerde netwerk. We gebruiken een standaard SSL VPN die is geconfigureerd op de Edge Gateway van onze organisatie.

Vervolgens moet u de CSE-client installeren waar de k8s-clusters worden beheerd. In mijn geval is dit een werkende laptop en een paar goed verborgen containers die de automatisering aandrijven.

Voor de client is vereist dat Python versie 3.7.3 en hoger is geïnstalleerd en dat de module is geïnstalleerd vcd-cli, dus laten we beide installeren.

pip3 install vcd-cli

pip3 install container-service-extension

Na de installatie controleren we de CSE-versie en krijgen we het volgende:

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

Onverwacht, maar oplosbaar. Het bleek dat CSE als module aan vcd-cli moet worden gekoppeld.
Hiervoor dient u eerst vcd-cli in te loggen bij onze organisatie:

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

Hierna zal vcd-cli een configuratiebestand aanmaken ~/.vcd-cli/profiles.yaml
Aan het einde moet je het volgende toevoegen:

extensions:
  - container_service_extension.client.cse

Dan controleren we nogmaals:

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

De clientinstallatiefase is voltooid. Laten we proberen het eerste cluster te implementeren.
CSE heeft verschillende sets gebruiksparameters, die allemaal kunnen worden bekeken here.

Laten we eerst sleutels maken voor wachtwoordloze toegang tot het toekomstige cluster. Dit punt is belangrijk, omdat wachtwoordaanmelding bij knooppunten standaard wordt uitgeschakeld en als u de sleutels niet instelt, kunt u veel werk krijgen via de consoles van de virtuele machines, wat niet handig is.

# 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.

Laten we proberen een cluster te maken:

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

Als we een foutmelding krijgen Fout: sessie is verlopen of gebruiker is niet ingelogd. Gelieve opnieuw in te loggen. — log opnieuw in vcd-cli bij vCloud zoals hierboven beschreven en probeer het opnieuw.

Deze keer is alles in orde en is de taak van het creëren van een cluster begonnen.

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

Het duurt ongeveer 20 minuten om de taak te voltooien; laten we in de tussentijd eens kijken naar de basisstartparameters.

—netwerk — het netwerk dat we eerder hebben gemaakt.
—ssh-key — de sleutels die we hebben gemaakt en die naar de clusterknooppunten worden geschreven
—nodes n — Aantal Worker-knooppunten in het cluster. Er zal altijd één master zijn, dit is een CSE-beperking
—enable-nfs — maak een extra knooppunt voor NFS-shares onder persistente volumes. Het is een beetje een pedaaloptie; we komen later terug op het afstemmen van wat het doet.

Ondertussen kunt u in vCloud de creatie van een cluster visueel volgen
CSE: Kubernetes voor degenen in vCloud

Zodra de taak van het maken van een cluster is voltooid, is deze klaar voor gebruik.

Laten we de juistheid van de implementatie controleren met de opdracht vcd cse clusterinfo MijnCluster

CSE: Kubernetes voor degenen in vCloud

Vervolgens moeten we de clusterconfiguratie gebruiken kubectl

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

En u kunt de status van het cluster ermee controleren:

CSE: Kubernetes voor degenen in vCloud

Op dit punt kan het cluster als voorwaardelijk werkend worden beschouwd, als het verhaal met persistente volumes er niet is. Omdat we in vCloud zitten, kunnen we vSphere Provider niet gebruiken. Keuze --enable-nfs bedoeld om deze overlast weg te nemen, maar dat lukte niet helemaal. Handmatige aanpassing vereist.

Om te beginnen moet ons knooppunt een afzonderlijke onafhankelijke schijf in vCloud maken. Dit garandeert dat onze gegevens niet samen met het cluster verdwijnen als deze wordt verwijderd. Sluit de schijf ook aan op NFS

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

Daarna gaan we via ssh (heb je echt de sleutels gemaakt?) naar ons NFS-knooppunt en verbinden we uiteindelijk de schijf:

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

Maak een map voor gegevens en koppel daar een nieuwe partitie:

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

Laten we vijf testpartities maken en deze delen voor het cluster:

>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

Na al deze magie kunnen we in onze cluster PV en PVC op de volgende manier creëren:
Verslaggever:

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

Dit is waar het verhaal van de creatie van één cluster eindigt en het verhaal van zijn levenscyclus begint. Als bonus zijn er nog twee nuttige CSE-opdrachten waarmee u soms bronnen kunt opslaan of niet:

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

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

Bedankt allemaal voor jullie tijd. Als je vragen hebt, stel ze dan in de reacties.

Bron: www.habr.com

Voeg een reactie