
Përshëndetje të gjithëve!
Është krijuar që ekipi ynë i vogël, jo që tronditshëm最近, dhe sigurisht jo papritur, ka kaluar në transferimin e disa (dhe në perspektivë, gjitha) produkteve në Kubernetes.
Arsyet për këtë ishin të shumta, por historia jonë nuk është për polemika.
Nga baza infrastrukturore, zgjedhja jonë ishte e vogël. vCloud Director dhe vCloud Director. Zgjedhëm atë që është më i ri dhe vendosëm të fillojmë.
Pasi shfletova përsëri "The Hard Way", arrita shpejt në përfundimin se një mjet për automatizimin e proceseve themelore, si deploy dhe sizing, ishte i nevojshëm që dje. Një thellim i thellë në Google solli në dritë një produkt si VMware Container Service Extension (CSE) — një produkt open-source që lejon automatizimin e krijimit dhe sizing të klasterëve k8s për ata që janë në vCloud.
Shënim: CSE ka kufizimet e tij, por për qëllimet tona ishte perfekt. Po ashtu, zgjidhja duhet të mbështetet nga ofruesi i shërbimit cloud, por pasi pjesa serverike është gjithashtu open-source, kërkoni praninë e saj nga menaxheri më i afërt 🙂
Për të filluar përdorimin, kërkohet një llogari administratori në organizatën vCloud dhe një rrjet i krijuar paraprakisht routed për klasterin (në procesin e deploy-it kërkohet qasje në internet nga ky rrjet, mos harroni të konfiguroni Firewall/NAT). Adresimi nuk ka rëndësi. Në këtë shembull do të marrim 10.0.240.0/24
![]()
Sepse pas krijimit, klasteri kërkon të menaxhohet, rekomandohet të ekzistojë një VPN me routing në rrjetin e krijuar. Ne përdorim SSL-VPN standard, të konfiguruar në Edge Gateway të organizatës sonë.
Më pas, është e nevojshme të instaloni klientin CSE atje ku do të realizohet menaxhimi i klasterëve k8s. Në rastin tim, kjo është laptopi im i punës dhe disa konteinerë të mirë të fshehur, të cilët menaxhojnë automatizimin.
Klienti kërkon instalimin e Python version 3.7.3 ose më sipër dhe të modulit , prandaj do të instalojmë si njëri dhe tjetrin.
pip3 install vcd-cli
pip3 install container-service-extension
Pas instalimit, kontrollojmë versionin e CSE dhe marrim si vijon:
# vcd cse version
Error: No such command "cse".
Papritur, por e rregullueshme. Siç rezultoi, CSE duhet të lidhet si një modul në vcd-cli.
Për këtë, duhet së pari të sigurohemi se jemi loguar 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 të tij duhet të shtojmë si vijon:
extensions:
- container_service_extension.client.cse
Pas kësaj, kontrollojmë përsëri:
# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0
Hapi i instalimit të klientit ka përfunduar. Le të provojmë të shpërndajmë grupin e parë.
CSE ka disa grupe parametrash përdorimi, të cilat mund të shihni të gjitha.
Fillimisht, le të krijojmë çelësa për qasje pa fjalëkalim në grupin e ardhshëm. Ky moment është i rëndësishëm, pasi për shkak të parazgjedhjes, hyrja me fjalëkalim në nodet do të jetë e çaktivizuar dhe nëse nuk caktojmë çelësat, mund të kemi shumë punë përmes konsolave të makinave virtuale, që nuk është shumë 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ë provojmë të fillojmë krijimin e grupit:
vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfsNëse marrim një gabim Error: Sesioni ka skaduar ose përdoruesi nuk është loguar. Ju lutemi logohuni përsëri. — përsëri logojmë vcd-cli në vCloud siç është përshkruar më lart dhe përpiqemi sërish.
Këtë herë gjithçka shkon mbarë dhe detyra e krijimit të grupit fillon.
operacioni i grupit: Krijimi i grupit vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) nga shablloni 'photon-v2_k8-1.12_weave-2.3.0' (rivisioni 1)
Për përfundimin e detyrës do të nevojiten rreth 20 minuta, ndërkohë le të shqyrtojmë parametrat kryesorë të fillimit.
—network — rrjeti që kemi krijuar më parë.
—ssh-key — çelësat që kemi krijuar, të cilat do të shkruhen në nodet e grupit
—nodes n — Numri i nodave punuese të grupit. Mjeshtri do të jetë gjithmonë një, kjo është një kufizim i CSE
—enable-nfs — krijoni një nodë shtesë për ndarjen NFS për volume të vazhdueshme. Është një opsion pak delikat, për sa i përket përshtatjes së asaj që bën, ne do të kthehemi më vonë.
Ndërkohë, në vCloud mund të vëzhgojmë vizualisht krijimin e grupit.

Sapo detyra e krijimit të grupit përfundoi, ai është gati për punë.
Le të kontrollojmë saktësinë e depolimit me komandën vcd cse cluster info MyCluster

Më pas na nevojitet të marrim konfigurimin e grupit për përdorim. kubectl
# vcd cse cluster config MyCluster > ./.kube/config
Dhe mund të kontrollojmë gjendjen e grupit tashmë me të:

Në këtë moment, grupi mund të konsiderohet në mënyrë të favorshme, nëse nuk do të ishte historia me volumet e vazhdueshme. Duke qenë se jemi në vCloud, nuk është e mundur të përdorim ofruesin vSphere. Opsioni —enable-nfs ka si qëllim të zbusë këtë ndodhi të pakëndshme, por nuk ka funksionuar plotësisht. Nevojitet përshtatje manuale.
Në fillim, nodën tonë përkatëse do t'i nevojitet të krijojë një disk të pavarur në vCloud. Kjo siguron që të dhënat tona të mos humbasin së bashku me grupin, nëse ai fshihet. Gjithashtu, do ta lidhim disku 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, hyjmë përmes ssh (ju vërtet krijuat çelësat, apo jo?) në nodën tonë NFS dhe përfundojmë lidhjen e disku:
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
Krijojmë një direktori për të dhënat dhe e montojmë atje si pjesë të re:
mkdir /export
echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab
mount -a
Të krijojmë pesë pjesë provuese dhe t'i ndajmë për klasterin:
>cd /export
>mkdir vol1 vol2 vol3 vol4 vol5
>vi /etc/exports
#Shtoni këtë në fund të fajlit
/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! ;)
#Më pas - eksportojmë pjesët
>exportfs -r
Pas gjithë kësaj magie, mund të krijojmë PV dhe PVC në klasterin tonë si më poshtë:
PV:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-vol1
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
# I njëjti IP si host-i NFS ku u lidhëm më herët.
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 ky tregim për krijimin e një klasteri dhe fillon historia e ciklit të tij të Jetës. Si një bonus - dy komanda të dobishme CSE, që ndonjëherë ndihmojnë për të kursyer ose jo burime:
#Увеличиваем размер кластера до 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 pyetje - bëni komente.
Burimi: habr.com
