CSE: Kubernetes për ata në vCloud

CSE: Kubernetes për ata në vCloud
Përshëndetje të gjithëve!

Kështu ndodhi që ekipi ynë i vogël, për të mos thënë se kohët e fundit, dhe sigurisht jo papritur, është rritur për të zhvendosur disa (dhe në të ardhmen të gjitha) produkte në Kubernetes.

Kishte shumë arsye për këtë, por historia jonë nuk ka të bëjë me holivarin.

Ne kishim pak zgjedhje në lidhje me bazën e infrastrukturës. Drejtori vCloud dhe Drejtori vCloud. Zgjodhëm më të renë dhe vendosëm të fillojmë.

Edhe një herë, duke parë përmes "Rrugës së vështirë", arrita shumë shpejt në përfundimin se dje ishte i nevojshëm një mjet për automatizimin e të paktën proceseve bazë, si vendosja dhe madhësia. Një zhytje e thellë në Google nxori në dritë një produkt të tillë si VMware Container Service Extension (CSE) - një produkt me burim të hapur që ju lejon të automatizoni krijimin dhe madhësinë e grupimeve k8s për ata në vCloud.

Mohim përgjegjësie: CSE ka kufizimet e veta, por për qëllimet tona ishte perfekte. Gjithashtu, zgjidhja duhet të mbështetet nga ofruesi i cloud, por meqenëse pjesa e serverit është gjithashtu me burim të hapur, kërkoni nga menaxheri juaj më i afërt që ta ketë në dispozicion :)

Për të filluar përdorimin e tij, ju nevojitet një llogari administratori në organizatën vCloud dhe një rrjet i drejtuar më parë për grupin (gjatë procesit të vendosjes, keni nevojë për qasje në internet nga ky rrjet, mos harroni të konfiguroni Firewall/NAT). Nuk ka rëndësi adresimi. Në këtë shembull, le të marrim 10.0.240.0/24

CSE: Kubernetes për ata në vCloud

Meqenëse pas krijimit, grupi do të duhet të menaxhohet disi, rekomandohet të keni një VPN me rrugëzim në rrjetin e krijuar. Ne përdorim një VPN standarde SSL të konfiguruar në Edge Gateway të organizatës sonë.

Më pas, duhet të instaloni klientin CSE ku do të menaxhohen grupet k8s. Në rastin tim, ky është një laptop që funksionon dhe disa kontejnerë të fshehur mirë që drejtojnë automatizimin.

Klienti kërkon të instaluar versionin Python 3.7.3 dhe më të lartë dhe të instaluar modulin vcd-cli, kështu që le t'i instalojmë të dyja.

pip3 install vcd-cli

pip3 install container-service-extension

Pas instalimit, ne kontrollojmë versionin CSE dhe marrim sa vijon:

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

E papritur, por e rregullueshme. Siç doli, CSE duhet të bashkëngjitet si modul në vcd-cli.
Për ta bërë këtë, së pari duhet të hyni në vcd-cli në organizatën tonë:

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

Pas kësaj, vcd-cli do të krijojë një skedar konfigurimi ~/.vcd-cli/profiles.yaml
Në fund ju duhet të shtoni sa vijon:

extensions:
  - container_service_extension.client.cse

Pastaj kontrollojmë përsëri:

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

Faza e instalimit të klientit ka përfunduar. Le të përpiqemi të vendosim grupin e parë.
CSE ka disa grupe parametrash përdorimi, të gjithë mund të shikohen këtu.

Së pari, le të krijojmë çelësa për qasje pa fjalëkalim në grupin e ardhshëm. Kjo pikë është e rëndësishme, pasi si parazgjedhje, identifikimi me fjalëkalim në nyje do të çaktivizohet dhe nëse nuk vendosni çelësat, mund të bëni shumë punë përmes konzollave të makinës virtuale, gjë që nuk është e përshtatshme.

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

Le të përpiqemi të fillojmë të krijojmë një grup:

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

Nëse marrim një gabim Gabim: Sesioni ka skaduar ose përdoruesi nuk është identifikuar. Ju lutemi ri-identifikohuni. — përsëri hyni në vcd-cli në vCloud siç përshkruhet më sipër dhe provoni përsëri.

Këtë herë gjithçka është në rregull dhe detyra e krijimit të një grupi ka nisur.

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

Do të duhen rreth 20 minuta për të përfunduar detyrën; ndërkohë, le të shohim parametrat bazë të nisjes.

—rrjeti — rrjeti që krijuam më parë.
—ssh-key — çelësat që krijuam, të cilët do të shkruhen në nyjet e grupimit
—Nyjet n — Numri i nyjeve të Punëtorëve në grup. Gjithmonë do të ketë një master, ky është një kufizim i CSE
—enable-nfs — krijoni një nyje shtesë për aksionet NFS nën vëllime të vazhdueshme. Është paksa një opsion pedalimi; do t'i rikthehemi akordimit të asaj që bën pak më vonë.

Ndërkohë, në vCloud mund të monitoroni vizualisht krijimin e një grupi
CSE: Kubernetes për ata në vCloud

Pasi të përfundojë detyra e krijimit të një grupi, ai është gati për përdorim.

Le të kontrollojmë korrektësinë e vendosjes me komandën Informacioni i grupit vcd cse MyCluster

CSE: Kubernetes për ata në vCloud

Më pas duhet të marrim konfigurimin e grupit për t'u përdorur kubectl

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

Dhe mund të kontrolloni statusin e grupit duke përdorur atë:

CSE: Kubernetes për ata në vCloud

Në këtë pikë, grupi mund të konsiderohet se funksionon me kusht, nëse jo për tregimin me vëllime të vazhdueshme. Meqenëse jemi në vCloud, nuk do të jemi në gjendje të përdorim vSphere Provider. Opsioni --aktivizo-nfs projektuar për të zbutur këtë telash, por nuk funksionoi plotësisht. Kërkohet rregullim manual.

Për të filluar, nyja jonë duhet të krijojë një disk të veçantë të pavarur në vCloud. Kjo garanton që të dhënat tona nuk do të zhduken së bashku me grupin nëse fshihen. Gjithashtu, lidhni diskun me NFS

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

Pas kësaj, ne kalojmë përmes ssh (i keni krijuar vërtet çelësat?) në nyjen tonë NFS dhe më në fund lidhim diskun:

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

Krijoni një direktori për të dhënat dhe montoni një ndarje të re atje:

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

Le të krijojmë pesë ndarje testimi dhe t'i ndajmë ato për grupin:

>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

Pas gjithë kësaj magjie, ne mund të krijojmë PV dhe PVC në grupin tonë diçka si kjo:
Gazetari:

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

Këtu përfundon historia e krijimit të një grupi dhe fillon historia e ciklit të tij jetësor. Si bonus, ka dy komanda më të dobishme CSE që ju lejojnë ndonjëherë të kurseni burime ose jo:

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

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

Faleminderit të gjithëve për kohën tuaj, nëse keni ndonjë pyetje, pyesni në komente.

Burimi: www.habr.com

Shto një koment