CSE: Kubernetes za one u vCloudu

CSE: Kubernetes za one u vCloudu
Pozdrav!

Dogodilo se da je naš mali tim, da ne kažem nedavno, a svakako ne iznenada, narastao da neke (a u budućnosti i sve) proizvode preseli u Kubernetes.

Bilo je mnogo razloga za to, ali naša priča nije o holivaru.

Nismo imali mnogo izbora što se tiče infrastrukturne baze. vCloud Director i vCloud Director. Izabrali smo noviju i odlučili krenuti.

Još jednom, pregledavajući “The Hard Way”, vrlo brzo sam došao do zaključka da je jučer bio potreban alat za automatizaciju barem osnovnih procesa, poput postavljanja i dimenzioniranja. Duboko istraživanje Googlea iznijelo je na vidjelo takav proizvod kao što je VMware Container Service Extension (CSE) - proizvod otvorenog koda koji vam omogućuje automatiziranje stvaranja i dimenzioniranja k8s klastera za one u vCloudu.

Odricanje od odgovornosti: CSE ima svoja ograničenja, ali za naše potrebe bio je savršen. Također, rješenje mora biti podržano od strane cloud providera, ali kako je serverski dio također otvorenog koda, zatražite od najbližeg upravitelja da vam ga stavi na raspolaganje :)

Da biste ga počeli koristiti, potreban vam je administratorski račun u vCloud organizaciji i prethodno stvorena rutirana mreža za klaster (tijekom procesa implementacije potreban vam je pristup internetu s ove mreže, ne zaboravite konfigurirati Vatrozid/NAT). Oslovljavanje nije bitno. U ovom primjeru uzmimo 10.0.240.0/24

CSE: Kubernetes za one u vCloudu

Budući da će nakon stvaranja klasterom morati nekako upravljati, preporučuje se imati VPN s usmjeravanjem na stvorenu mrežu. Koristimo standardni SSL VPN konfiguriran na Edge Gatewayu naše organizacije.

Zatim morate instalirati CSE klijent gdje će se upravljati k8s klasterima. U mom slučaju, ovo je laptop koji radi i nekoliko dobro skrivenih spremnika koji pokreću automatizaciju.

Klijent zahtijeva instaliranu Python verziju 3.7.3 i noviju i instaliran modul vcd-cli, pa instalirajmo oba.

pip3 install vcd-cli

pip3 install container-service-extension

Nakon instalacije provjeravamo CSE verziju i dobivamo sljedeće:

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

Neočekivano, ali popravljivo. Kako se pokazalo, CSE treba biti priključen kao modul na vcd-cli.
Da biste to učinili, prvo se morate prijaviti na vcd-cli u našu organizaciju:

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

Nakon toga, vcd-cli će stvoriti konfiguracijsku datoteku ~/.vcd-cli/profiles.yaml
Na kraju je potrebno dodati sljedeće:

extensions:
  - container_service_extension.client.cse

Zatim ponovno provjeravamo:

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

Faza instalacije klijenta je završena. Pokušajmo implementirati prvi klaster.
CSE ima nekoliko skupova parametara upotrebe, svi se mogu vidjeti ovdje.

Prvo, kreirajmo ključeve za pristup budućem klasteru bez lozinke. Ova je točka važna jer će prema zadanim postavkama prijava lozinkom na čvorove biti onemogućena, a ako ne postavite ključeve, možete dobiti puno posla putem konzola virtualnog stroja, što nije zgodno.

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

Pokušajmo započeti stvaranje klastera:

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

Ako dobijemo pogrešku Pogreška: Sesija je istekla ili korisnik nije prijavljen. Molimo ponovno se prijavite. — ponovo se prijavite na vcd-cli u vCloud kako je gore opisano i pokušajte ponovno.

Ovaj put je sve u redu i zadatak stvaranja klastera je započeo.

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

Zadatak će trajati oko 20 minuta; u međuvremenu, pogledajmo osnovne parametre pokretanja.

—mreža — mreža koju smo ranije stvorili.
—ssh-ključ — ključevi koje smo kreirali, a koji će biti zapisani u čvorove klastera
—čvorovi n — Broj radnih čvorova u klasteru. Uvijek će postojati jedan gospodar, ovo je CSE ograničenje
—enable-nfs — stvori dodatni čvor za NFS dijeljenja pod trajnim volumenima. To je opcija s pedalom; vratit ćemo se na podešavanje onoga što radi malo kasnije.

U međuvremenu, u vCloudu možete vizualno pratiti stvaranje klastera
CSE: Kubernetes za one u vCloudu

Nakon što je zadatak stvaranja klastera završen, on je spreman za korištenje.

Provjerimo ispravnost implementacije naredbom vcd cse informacije o klasteru MyCluster

CSE: Kubernetes za one u vCloudu

Zatim moramo dobiti konfiguraciju klastera za korištenje kubectl

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

Pomoću njega možete provjeriti status klastera:

CSE: Kubernetes za one u vCloudu

U ovom trenutku klaster se može smatrati uvjetno radnim, ako ne i priča s postojanim volumenima. Budući da smo u vCloudu, nećemo moći koristiti vSphere Provider. Opcija --enable-nfs dizajniran da izgladi ovu smetnju, ali nije u potpunosti uspio. Potrebno je ručno podešavanje.

Za početak, naš čvor mora stvoriti zaseban nezavisni disk u vCloudu. To jamči da naši podaci neće nestati zajedno s klasterom ako se izbriše. Također, spojite disk na NFS

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

Nakon toga idemo putem ssh-a (stvarno ste kreirali ključeve?) do našeg NFS čvora i konačno spajamo disk:

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

Napravite direktorij za podatke i tamo montirajte novu particiju:

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

Kreirajmo pet testnih particija i podijelimo ih za klaster:

>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

Nakon sve ove magije, možemo stvoriti PV i PVC u našem klasteru nešto poput ovoga:
Reporter:

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

Tu završava priča o nastanku jednog klastera i počinje priča o njegovom životnom ciklusu. Kao bonus, postoje još dvije korisne CSE naredbe koje vam omogućuju da ponekad uštedite resurse ili ne:

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

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

Hvala svima na vašem vremenu, ako imate bilo kakvih pitanja, pitajte u komentarima.

Izvor: www.habr.com

Dodajte komentar