CSE: Kubernetes pre používateľov vCloud

CSE: Kubernetes pre používateľov vCloud
Ahoj všetci!

Stalo sa, že náš malý tím, nehovoriac, nedávno a určite nie náhle, sa rozrástol o presun niektorých (a v budúcnosti všetkých) produktov do Kubernetes.

Bolo na to veľa dôvodov, ale náš príbeh nie je o holivare.

Pokiaľ ide o základ infraštruktúry, nemali sme na výber. vCloud Director a vCloud Director. Vybrali sme si ten novší a rozhodli sme sa začať.

Ešte raz, keď som sa pozrel cez „The Hard Way“, veľmi rýchlo som dospel k záveru, že včera bol potrebný nástroj na automatizáciu aspoň základných procesov, ako je nasadenie a dimenzovanie. Hlboký ponor do Google priniesol na svetlo taký produkt ako VMware Container Service Extension (CSE) – produkt s otvoreným zdrojovým kódom, ktorý vám umožňuje automatizovať vytváranie a dimenzovanie klastrov k8s pre používateľov vCloud.

Vyhlásenie: VVN má svoje obmedzenia, ale pre naše účely to bolo dokonalé. Riešenie tiež musí podporovať poskytovateľ cloudu, ale keďže serverová časť je tiež open-source, požiadajte svojho najbližšieho manažéra, aby ju mal k dispozícii :)

Ak ju chcete začať používať, potrebujete administrátorský účet v organizácii vCloud a predtým vytvorenú smerovanú sieť pre klaster (počas procesu nasadenia potrebujete prístup na internet z tejto siete, nezabudnite nakonfigurovať Firewall/NAT). Na adresovaní nezáleží. V tomto príklade zoberme 10.0.240.0/24

CSE: Kubernetes pre používateľov vCloud

Keďže po vytvorení bude treba klaster nejako spravovať, odporúča sa mať VPN s routovaním do vytvorenej siete. Používame štandardnú SSL VPN nakonfigurovanú na Edge Gateway našej organizácie.

Ďalej musíte nainštalovať klienta CSE, kde budú spravované klastre k8s. V mojom prípade ide o pracovný notebook a pár dobre skrytých kontajnerov, ktoré poháňajú automatizáciu.

Klient vyžaduje nainštalovaný Python verzie 3.7.3 a vyšší a nainštalovaný modul vcd-cli, tak nainštalujeme obe.

pip3 install vcd-cli

pip3 install container-service-extension

Po inštalácii skontrolujeme verziu VVN a získame nasledovné:

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

Neočakávané, ale opraviteľné. Ako sa ukázalo, CSE je potrebné pripojiť ako modul k vcd-cli.
Ak to chcete urobiť, musíte sa najprv prihlásiť vcd-cli do našej organizácie:

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

Potom vcd-cli vytvorí konfiguračný súbor ~/.vcd-cli/profiles.yaml
Na konci je potrebné pridať nasledovné:

extensions:
  - container_service_extension.client.cse

Potom znova skontrolujeme:

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

Inštalačná fáza klienta je dokončená. Skúsme nasadiť prvý klaster.
VVN má niekoľko sád parametrov používania, pričom všetky je možné zobraziť tu.

Najprv si vytvorte kľúče pre prístup k budúcemu klastru bez hesla. Tento bod je dôležitý, pretože v predvolenom nastavení bude prihlásenie do uzlov heslom zakázané, a ak nenastavíte kľúče, môžete získať veľa práce prostredníctvom konzol virtuálnych strojov, čo nie je pohodlné.

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

Skúsme začať vytvárať klaster:

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

Ak dostaneme chybu Chyba: Platnosť relácie vypršala alebo používateľ nie je prihlásený. Prihláste sa znova. — znova sa prihláste vcd-cli do vCloud podľa popisu vyššie a skúste to znova.

Tentokrát je všetko v poriadku a začala sa úloha vytvorenia klastra.

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

Dokončenie úlohy bude trvať asi 20 minút, zatiaľ sa pozrime na základné parametre spustenia.

—network — sieť, ktorú sme vytvorili predtým.
—ssh-key — kľúče, ktoré sme vytvorili a ktoré sa zapíšu do uzlov klastra
—nodes n — Počet pracovných uzlov v klastri. Vždy bude jeden hlavný, toto je obmedzenie VVN
—enable-nfs — vytvorte ďalší uzol pre zdieľania NFS v rámci trvalých zväzkov. Je to trochu možnosť pedálu; k ladeniu sa vrátime o niečo neskôr.

Medzitým môžete vo vCloude vizuálne sledovať vytváranie klastra
CSE: Kubernetes pre používateľov vCloud

Po dokončení úlohy vytvorenia klastra je klaster pripravený na použitie.

Skontrolujeme správnosť nasadenia príkazom vcd cse informácie o klastri MyCluster

CSE: Kubernetes pre používateľov vCloud

Ďalej musíme získať konfiguráciu klastra na použitie kubectl

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

A pomocou neho môžete skontrolovať stav klastra:

CSE: Kubernetes pre používateľov vCloud

V tomto bode možno klaster považovať za podmienečne fungujúci, ak nie pre príbeh s pretrvávajúcimi objemami. Keďže sme vo vCloude, nebudeme môcť používať vSphere Provider. Možnosť --enable-nfs navrhnuté tak, aby vyhladili túto nepríjemnosť, ale nefungovalo to úplne. Vyžaduje sa manuálne nastavenie.

Na začiatok musí náš uzol vytvoriť samostatný nezávislý disk vo vCloud. To zaručuje, že naše údaje nezmiznú spolu s klastrom, ak sa odstráni. Tiež pripojte disk k NFS

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

Potom prejdeme cez ssh (naozaj ste vytvorili kľúče?) do nášho uzla NFS a nakoniec pripojíme 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

Vytvorte adresár pre údaje a pripojte tam nový oddiel:

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

Vytvorme päť testovacích oddielov a zdieľajme ich pre 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

Po všetkých týchto mágiách môžeme vytvoriť PV a PVC v našom klastri niečo takéto:
reportér:

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 sa končí príbeh vytvorenia jedného klastra a začína príbeh jeho životného cyklu. Ako bonus sú tu dva ďalšie užitočné príkazy VVN, ktoré vám niekedy umožňujú šetriť zdroje alebo nie:

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

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

Ďakujem vám všetkým za váš čas, ak máte nejaké otázky, pýtajte sa v komentároch.

Zdroj: hab.com

Pridať komentár