TPP: „Kubernetes“ tiems, kurie naudojasi „vCloud“.

TPP: „Kubernetes“ tiems, kurie naudojasi „vCloud“.
Sveiki visi!

Taip jau susiklostė, kad mūsų nedidelė komanda, sakyčiau, kad pastaruoju metu ir tikrai ne staiga, išaugo, kad dalį (o ateityje ir visus) gaminius perkeltų į Kubernetes.

Tam buvo daug priežasčių, bet mūsų istorija nėra apie holivarą.

Turėjome mažai pasirinkimo dėl infrastruktūros bazės. „vCloud Director“ ir „vCloud Director“. Pasirinkome naujesnį ir nusprendėme pradėti.

Dar kartą peržvelgęs „Sunkųjį kelią“, labai greitai priėjau prie išvados, kad vakar buvo reikalingas įrankis, skirtas automatizuoti bent pagrindinius procesus, tokius kaip diegimas ir dydžio nustatymas. Gilus pasinerimas į „Google“ atskleidė tokį produktą kaip „VMware Container Service Extension“ (CSE) – atvirojo kodo produktą, leidžiantį automatizuoti „vCloud“ naudotojų k8s grupių kūrimą ir dydžio nustatymą.

Atsakomybės apribojimas: TPP turi savo apribojimų, bet mūsų tikslams jis buvo tobulas. Be to, sprendimą turi palaikyti debesų tiekėjas, tačiau kadangi serverio dalis taip pat yra atvirojo kodo, paprašykite artimiausio vadovo, kad jis būtų prieinamas :)

Norėdami pradėti jį naudoti, jums reikia administratoriaus paskyros vCloud organizacijoje ir anksčiau sukurto nukreipto tinklo klasteriui (diegimo proceso metu jums reikia interneto prieigos iš šio tinklo, nepamirškite sukonfigūruoti ugniasienės/NAT). Kreipimasis nesvarbu. Šiame pavyzdyje paimkime 10.0.240.0/24

TPP: „Kubernetes“ tiems, kurie naudojasi „vCloud“.

Kadangi po sukūrimo klasterį reikės kažkaip valdyti, rekomenduojama turėti VPN su maršrutizavimu į sukurtą tinklą. Naudojame standartinį SSL VPN, sukonfigūruotą mūsų organizacijos „Edge Gateway“.

Tada turite įdiegti TPV klientą, kuriame bus tvarkomi k8s klasteriai. Mano atveju tai yra veikiantis nešiojamas kompiuteris ir keletas gerai paslėptų konteinerių, kurie valdo automatizavimą.

Klientui reikia įdiegti Python 3.7.3 ar naujesnę versiją ir įdiegti modulį vcd-cli, taigi įdiegkime abu.

pip3 install vcd-cli

pip3 install container-service-extension

Įdiegę patikriname TPP versiją ir gauname:

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

Netikėta, bet pataisoma. Kaip paaiškėjo, TPP reikia prijungti kaip modulį prie vcd-cli.
Norėdami tai padaryti, pirmiausia turite prisijungti prie mūsų organizacijos „vcd-cli“:

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

Po to vcd-cli sukurs konfigūracijos failą ~/.vcd-cli/profiles.yaml
Pabaigoje turite pridėti šiuos dalykus:

extensions:
  - container_service_extension.client.cse

Tada dar kartą patikriname:

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

Kliento diegimo etapas baigtas. Pabandykime įdiegti pirmąjį klasterį.
TPV turi kelis naudojimo parametrų rinkinius, juos visus galima peržiūrėti čia.

Pirmiausia sukurkime raktus be slaptažodžio prieigai prie būsimo klasterio. Šis punktas yra svarbus, nes pagal numatytuosius nustatymus slaptažodžio prisijungimas prie mazgų bus išjungtas, o jei nenustatysite raktų, galite daug dirbti per virtualios mašinos pultus, o tai nėra patogu.

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

Pabandykime pradėti kurti klasterį:

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

Jei gausime klaidą Klaida: sesija baigėsi arba vartotojas neprisijungė. Prašome prisijungti iš naujo. — dar kartą prisijunkite prie vcd-cli prie vCloud, kaip aprašyta aukščiau, ir bandykite dar kartą.

Šį kartą viskas gerai ir prasidėjo klasterio kūrimo užduotis.

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žduočiai atlikti prireiks apie 20 minučių; kol kas pažiūrėkime į pagrindinius paleidimo parametrus.

—tinklas — tinklas, kurį sukūrėme anksčiau.
—ssh-key — mūsų sukurti raktai, kurie bus įrašyti į klasterio mazgus
—mazgai n — Darbuotojo mazgų skaičius klasteryje. Visada bus vienas pagrindinis, tai yra TPP apribojimas
—enable-nfs — sukurkite papildomą NFS bendrinimo mazgą nuolatiniuose tomuose. Tai šiek tiek pedalo parinktis; prie to, ką jis daro, grįšime šiek tiek vėliau.

Tuo tarpu „vCloud“ galite vizualiai stebėti klasterio kūrimą
TPP: „Kubernetes“ tiems, kurie naudojasi „vCloud“.

Atlikus klasterio kūrimo užduotį, jis paruoštas naudoti.

Su komanda patikrinkime diegimo teisingumą vcd CS klasterio informacija MyCluster

TPP: „Kubernetes“ tiems, kurie naudojasi „vCloud“.

Toliau turime gauti naudojamą klasterio konfigūraciją kubectl

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

Ir jūs galite patikrinti klasterio būseną naudodami jį:

TPP: „Kubernetes“ tiems, kurie naudojasi „vCloud“.

Šiuo metu klasteris gali būti laikomas sąlyginai veikiančiu, jei ne istorija su nuolatiniais tūriais. Kadangi esame „vCloud“, negalėsime naudoti „vSphere Provider“. Variantas --enable-nfs sukurta siekiant išlyginti šį nemalonumą, tačiau tai nepasiteisino iki galo. Reikalingas rankinis reguliavimas.

Norėdami pradėti, mūsų mazgas turi sukurti atskirą nepriklausomą diską „vCloud“. Tai garantuoja, kad mūsų duomenys neišnyks kartu su grupe, jei ji bus ištrinta. Taip pat prijunkite diską prie NFS

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

Po to mes einame per ssh (tu tikrai sukūrėte raktus?) į mūsų NFS mazgą ir galiausiai prijungiame 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

Sukurkite duomenų katalogą ir prijunkite ten naują skaidinį:

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

Sukurkime penkis bandomuosius skaidinius ir bendrinkime juos klasteryje:

>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 visos šios magijos galime sukurti PV ir PVC savo klasteryje maždaug taip:
Reporteris:

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

Čia baigiasi vieno klasterio sukūrimo istorija ir prasideda jo gyvavimo ciklo istorija. Be to, yra dar dvi naudingos TPP komandos, leidžiančios kartais sutaupyti išteklių arba ne:

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

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

Dėkojame visiems už jūsų laiką, jei turite klausimų, klauskite komentaruose.

Šaltinis: www.habr.com

Добавить комментарий