
Përshëndetje të gjithëve!
Kjo ka ndodhur që ekipi ynë i vogël, jo që së fundmi, dhe me siguri jo papritur, ka arritur të kalojë disa (dhe në një të ardhme, të gjithë) produkte në Kubernetes.
Shkaku për këtë ka qenë i shumtë, por historia jonë nuk është për polemika.
Nga baza infrastrukturës, zgjedhja jonë ishte e vogël. VCloud Director dhe VCloud Director. Zgjedhim atë më të re dhe vendosëm të fillojmë.
Disa herë duke shfletuar "The Hard Way", arrita shumë shpejt në përfundimin se një mjet për automatizimin e së paku proceseve bazë, si deploy dhe sizing, ishte i nevojshëm që dje. Një thellim i thellë në Google nxori në dritë një produkt si VMware Container Service Extension (CSE) — një produkt open-source, që lejon automatizimin e krijimit dhe sizing të klastereve k8s për ata që janë në vCloud.
Kujdes: CSE ka kufizimet e veta, por për qëllimet tona ishte perfekt. Gjithashtu, zgjidhja duhet të mbështetet nga ofruesi i shërbimit të cloud-it, por duke qenë se pjesa server është gjithashtu open-source, kërkoni praninë e saj nga menaxheri më i afërt 🙂
Për të filluar përdorimin, nevojitet një llogari administratori në organizatën vCloud dhe një rrjet i krijuar paraprakisht me routed për klasterin (në procesin e implementimit nevojitet akses në internet nga ky rrjet, mos harroni të konfiguroni Firewall/NAT). Adresimi nuk ka rëndësi. Në këtë shembull, do të marrëim 10.0.240.0/24
![]()
Duke qenë se pas krijimit, klasterit do t’i duhet ndonjë menaxhim, rekomandohet të ketë një VPN me rrugëzim në rrjetin e krijuar. Ne përdorim SSL-VPN standard, të konfiguruar në Edge Gateway të organizatës sonë.
Më pas, nevojitet të instaloni klientin CSE atje ku do të menaxhohen klasteret k8s. në rastin tim, kjo është laptopi im i punës dhe disa kontejnerë të mirë të fshehur që e drejtojnë automatizimin.
Klienti kërkon që të jetë i instaluar Python version 3.7.3 dhe më lart, si dhe moduli , kështu që do të instalojmë të dyja.
pip3 install vcd-cli
pip3 install container-service-extension
Pas instalimit, verifikoni versionin e CSE dhe merrni këtë:
# vcd cse version
Error: No such command "cse".
Papritur, por e riparueshme. Siç doli, CSE duhej të bashkëngjitej si modul te vcd-cli.
Për këtë, së pari nevojitet të identifikoni 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ë skedë konfigurimi ~/.vcd-cli/profiles.yaml
Në fund të tij, duhet të shtoni sa vijon:
extensions:
- container_service_extension.client.cse
Pas kësaj, verifikojmë 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ë provojmë të zhvillojmë klusterin e parë.
CSE ka disa grupe parametrash të përdorimit, të gjitha mund të shihen.
Së pari, do të krijojmë çelësat për akses pa fjalëkalim në klusterin e ardhshëm. Ky moment është i rëndësishëm, pasi që me sa duket, hyrja me fjalëkalim në node do të jetë e çaktivizuar dhe nëse nuk i caktoni çelësat, mund të keni shumë punë përmes konsolës së makinave virtuale, e cila 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.
Provojmë të nisni krijimin e klusterit:
vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfsNëse përjetoni një gabim Error: Session has expired or user not logged in. Please re-login. — rikthehemi përsëri në vcd-cli në vCloud siç është përshkruar më sipër dhe provoni përsëri.
Këtë herë gjithçka shkoi mirë dhe detyra e krijimit të klusterit është 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)
Për përfundimin e detyrës do të nevojiten rreth 20 minuta, ndërkohë le t'i shqyrtojmë parametrat kryesorë të lansimit.
—network — rrjeti që krijuam më parë.
—ssh-key — çelësat që krijuam, të cilat do të regjistrohen në nodet e klasterit
—nodes n — Numri i nodave Worker të klasterit. Mjeshtri gjithmonë do të jetë një, këtë kufizim e ka CSE
—enable-nfs — krijoni një nodë shtesë për ndarjen NFS nën volumes persistente. Një opcion pak teknik, për konfigurimin e asaj që bën, do të kthehemi më vonë.
Ndërkohë, në vCloud mund të shikoni vizualisht krijimin e klasterit

Sapo detyra e krijimit të klasterit të përfundojë, ai është gati për të punuar.
Le të kontrollojmë saktësinë e implementimit me komandën vcd cse cluster info MyCluster

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

Në këtë pikë, klasteri mund të konsiderohet për të punuar në mënyrë relative, nëse nuk do ishte historia me volumes persistente. Duke qenë se jemi në vCloud, nuk do të jetë e mundur të përdorim ofruesin vSphere. Opcion —enable-nfs është krijuar për të zbutur këtë problem, por nuk e kemi arritur deri në fund. Kërkohet një konfigurim manual.
Së pari, nodës tonë i nevojitet të krijojë një disk të veçantë të Pavarur në vCloud. Kjo garanton që të dhënat tona nuk do të humbasin së bashku me klasterin, nëse ai fshihet. Gjithashtu, do të lidhim disku me NFS
# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares'
# vcd vapp attach mycluster nfsd-9604 nfs-shares-1
Pasi ne, shkojmë përmes ssh (a krijuat me të vërtetë çelësat?) në nodën tonë NFS dhe krijojmë përfundimisht lidhjen me diskun:
root@nfsd-9604:~# parted /dev/sdb
(parted) mklabel gpt
Kujdes: Etiketa ekzistuese e diskut në /dev/sdb do të shkatërrohet dhe të gjitha të dhënat në
këtë disk do të humbin. A dëshironi të vazhdoni?
Po/Jo? po
(parted) unit GB
(parted) mkpart primary 0 100
(parted) print
Model: VMware Disk virtual (scsi)
Disk /dev/sdb: 100GB
Madhësia e sektorit (logjike/fizike): 512B/512B
Tabeli i Particioneve: gpt
Flagat e Diskut:
Numri Fillimi Mbarimi Madhësia Sistemi i skedarëve Emri Flagat
1 0.00GB 100GB 100GB primar
(parted) quit
root@nfsd-9604:~# mkfs -t ext4 /dev/sdb1
Krijimi i sistemit të skedarëve me 24413696 blloqe 4k dhe 6111232 inode
UUID i sistemit të skedarëve: 8622c0f5-4044-4ebf-95a5-0372256b34f0
Backupet e superblokut janë ruajtur në blloqet:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Alokimi i tabelave të grupeve: përfunduar
Shkrimi i tabelave të inode: përfunduar
Krijimi i regjistrit (32768 blloqe): përfunduar
Shkrimi i superblokave dhe informacionit të llogarive të sistemit të skedarëve: përfunduar
Krijojmë një direktorium për të dhënat dhe e montojmë atje pjesën e re:
mkdir /export
echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab
mount -a
Krijojmë pesë pjesë testuese dhe i ndajmë ato për klasën:
>cd /export
>mkdir vol1 vol2 vol3 vol4 vol5
>vi /etc/exports
# Shtoni këtë në fund të skedarit
/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 magjie, mund të krijojmë PV dhe PVC në klasterin tonë në këtë mënyrë:
PV:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-vol1
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
# I njëjtë IP si hosti NFS që kemi SSH-uar 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 historia e krijimit të një klasteri dhe fillon historia e ciklit të tij të jetës. Si bonus — dy komanda të dobishme CSE, të cilat ndihmojnë herë pas here 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
Të gjithë faleminderit për kohën tuaj, nëse keni pyetje — mos hezitoni t'i bëni në komentet.
Burimi: habr.com
