CSE: Kubernetes za one u vCloud-u

CSE: Kubernetes za one u vCloud-u
Pozdrav svima!

Desilo se da je naš mali tim, da ne kažem da je 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.

Imali smo malo izbora što se tiče infrastrukturne baze. vCloud Director i vCloud Director. Izabrali smo noviju i odlučili da počnemo.

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, kao što su implementacija i dimenzioniranje. Duboko uronjenje u Google iznijelo je na vidjelo proizvod kao što je VMware Container Service Extension (CSE) – proizvod otvorenog koda koji vam omogućava automatizaciju kreiranja i veličine k8s klastera za one u vCloudu.

Disclaimer: CSE ima svoja ograničenja, ali za naše potrebe bio je savršen. Takođe, rešenje mora biti podržano od strane cloud provajdera, ali pošto je serverski deo takođe open-source, zamolite najbližeg menadžera da vam bude dostupan :)

Da biste počeli da ga koristite, potreban vam je administratorski nalog u vCloud organizaciji i prethodno kreirana rutirana mreža za klaster (tokom procesa postavljanja, potreban vam je pristup Internetu sa ove mreže, ne zaboravite da konfigurišete Firewall/NAT). Adresiranje nije bitno. U ovom primjeru, uzmimo 10.0.240.0/24

CSE: Kubernetes za one u vCloud-u

Pošto će se nakon kreiranja klasterom morati nekako upravljati, preporučljivo je imati VPN s rutiranjem na kreiranu mrežu. Koristimo standardni SSL VPN konfiguriran na Edge Gateway-u naše organizacije.

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

Klijent zahtijeva instaliran Python verzije 3.7.3 i novije i instaliran modul vcd-cli, pa hajde da instaliramo oba.

pip3 install vcd-cli

pip3 install container-service-extension

Nakon instalacije, provjeravamo CSE verziju i dobijamo sljedeće:

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

Neočekivano, ali popravljivo. Kako se ispostavilo, CSE mora biti priključen kao modul za vcd-cli.
Da biste to učinili, prvo se morate prijaviti 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 kreirati konfiguracionu datoteku ~/.vcd-cli/profiles.yaml
Na kraju morate dodati sljedeće:

extensions:
  - container_service_extension.client.cse

Zatim ponovo provjeravamo:

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

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

Prvo, napravimo ključeve za pristup budućem klasteru bez lozinke. Ova stvar je važna, jer će po defaultu prijava lozinkom na čvorove biti onemogućena, a ako ne postavite ključeve, možete dobiti puno posla kroz konzole virtualne mašine, š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 početi kreirati klaster:

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

Ako dobijemo grešku Greška: Sesija je istekla ili korisnik nije prijavljen. Molimo ponovo se prijavite. — ponovo se prijavite vcd-cli na vCloud kao što je gore opisano i pokušajte ponovo.

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)

U međuvremenu će biti potrebno oko 20 minuta da završimo zadatak, pogledajmo osnovne parametre pokretanja.

—mreža — mreža koju smo ranije kreirali.
—ssh-key — ključevi koje smo kreirali, a koji će biti upisani u čvorove klastera
—čvorovi n — Broj čvorova radnika u klasteru. Uvijek će postojati jedan master, ovo je CSE ograničenje
—enable-nfs — kreirajte dodatni čvor za NFS dijeljenje pod trajnim volumenima. To je pomalo opcija za pedale, vratićemo se na podešavanje šta radi malo kasnije.

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

Kada je zadatak kreiranja klastera završen, on je spreman za upotrebu.

Provjerimo ispravnost implementacije komandom vcd cse cluster info MyCluster

CSE: Kubernetes za one u vCloud-u

Zatim moramo koristiti konfiguraciju klastera kubectl

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

A pomoću njega možete provjeriti status klastera:

CSE: Kubernetes za one u vCloud-u

U ovom trenutku, klaster se može smatrati uslovno radnim, ako ne i priča sa upornim volumenima. Pošto smo u vCloud-u, nećemo moći koristiti vSphere Provider. Opcija --enable-nfs dizajniran da izgladi ovu smetnju, ali nije u potpunosti uspio. Potrebno ručno podešavanje.

Za početak, naš čvor treba da kreira poseban nezavisni disk u vCloud-u. Ovo garantuje da naši podaci neće nestati zajedno sa klasterom ako se izbrišu. Takođe, povežite 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 preko ssh-a (stvarno ste kreirali ključeve?) do našeg NFS čvora i konačno povezujemo 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

Kreirajte direktorij za podatke i montirajte novu particiju tamo:

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

Kreirajmo pet probnih 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 kreirati PV i PVC u našem klasteru otprilike ovako:
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 se završava priča o stvaranju jednog klastera i počinje priča o njegovom životnom ciklusu. Kao bonus, postoje još dvije korisne CSE komande koje vam omogućavaju 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 izdvojenom vremenu, ako imate pitanja, pitajte u komentarima.

izvor: www.habr.com

Dodajte komentar