Hello!
Történt ugyanis, hogy a mi kis csapatunk, hogy ne mondjam, hogy mostanában, és persze nem hirtelen, úgy nőtte ki magát, hogy egyes (és a jövőben az összes) terméket átköltöztette a Kuberneteshez.
Ennek sok oka volt, de történetünk nem a holivarról szól.
Kevés választásunk volt az infrastruktúra bázisát illetően. vCloud Director és vCloud Director. Az újabbat választottuk, és úgy döntöttünk, elkezdjük.
Ismét átnézve a „The Hard Way”-t, nagyon gyorsan arra a következtetésre jutottam, hogy tegnap szükség volt egy olyan eszközre, amely legalább alapvető folyamatokat automatizál, mint például a telepítés és a méretezés. A Google mélyreható fejében egy olyan termék került napvilágra, mint a VMware Container Service Extension (CSE) – egy nyílt forráskódú termék, amely lehetővé teszi a k8s-fürtök létrehozásának és méretének automatizálását a vCloud-on élők számára.
Jogi nyilatkozat: A CSE-nek megvannak a korlátai, de a mi céljainkra tökéletes volt. A megoldást a felhőszolgáltatónak is támogatnia kell, de mivel a szerver rész is nyílt forráskódú, kérje meg a legközelebbi menedzsertől, hogy elérhető legyen :)
A használat megkezdéséhez adminisztrátori fiókra van szüksége a vCloud szervezetben, és egy korábban létrehozott irányított hálózatra a fürt számára (a telepítési folyamat során internet-hozzáférésre van szüksége erről a hálózatról, ne felejtse el konfigurálni a tűzfalat/NAT-ot). A címzés nem számít. Ebben a példában vegyük a 10.0.240.0/24 értéket
Mivel a létrehozás után a fürtöt valahogyan kezelni kell, javasoljuk, hogy rendelkezzen egy VPN-vel, amely a létrehozott hálózatra irányítja. Szabványos SSL VPN-t használunk, amely szervezetünk Edge Gatewayjén van konfigurálva.
Ezután telepítenie kell a CSE-ügyfelet, ahol a k8s-fürtöket kezelni fogják. Az én esetemben ez egy működő laptop és néhány jól elrejtett konténer, amelyek az automatizálást hajtják.
Az ügyfélhez telepíteni kell a Python 3.7.3-as vagy újabb verzióját, és telepíteni kell a modult
pip3 install vcd-cli
pip3 install container-service-extension
A telepítés után ellenőrizzük a CSE verziót, és a következőket kapjuk:
# vcd cse version
Error: No such command "cse".
Váratlan, de javítható. Mint kiderült, a CSE-t modulként kell csatolni a vcd-cli-hez.
Ehhez először be kell jelentkeznie szervezetünkbe a vcd-cli-vel:
# vcd login MyCloud.provider.com org-dev admin
Password:
admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01'
Ezt követően a vcd-cli létrehoz egy konfigurációs fájlt ~/.vcd-cli/profiles.yaml
A végén hozzá kell adni a következőket:
extensions:
- container_service_extension.client.cse
Ezután ellenőrizzük újra:
# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0
A kliens telepítési szakasza befejeződött. Próbáljuk meg telepíteni az első klasztert.
A CSE több használati paraméterkészlettel rendelkezik, ezek mindegyike megtekinthető
Először is hozzunk létre kulcsokat a jövőbeli fürthöz való jelszó nélküli hozzáféréshez. Ez azért fontos, mert alapértelmezés szerint a jelszavas bejelentkezés a csomópontokba le van tiltva, és ha nem állítja be a kulcsokat, akkor a virtuális gépek konzoljain keresztül sokat dolgozhat, ami nem kényelmes.
# 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.
Próbáljuk meg elkezdeni a fürt létrehozását:
vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs
Ha hibát kapunk Hiba: A munkamenet lejárt, vagy a felhasználó nem jelentkezett be. Kérjük, jelentkezzen be újra. — ismét jelentkezzen be a vcd-cli-be a vCloudba a fent leírtak szerint, és próbálja újra.
Ezúttal minden rendben van, és elkezdődött a klaszter létrehozása.
cluster operation: Creating cluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) from template 'photon-v2_k8-1.12_weave-2.3.0' (revision 1)
A feladat végrehajtása körülbelül 20 percet vesz igénybe, addig nézzük az alapvető indítási paramétereket.
—hálózat — az általunk korábban létrehozott hálózat.
—ssh-key — az általunk létrehozott kulcsok, amelyek a fürt csomópontjaiba kerülnek
—nodes n — Worker csomópontok száma a fürtben. Mindig lesz egy mester, ez az egyéni keresőmotor-korlátozás
—enable-nfs — hozzon létre egy további csomópontot az állandó kötetek alatti NFS-megosztásokhoz. Ez egy kicsit pedálozási lehetőség; kicsit később visszatérünk a hangolásra.
Eközben a vCloudban vizuálisan nyomon követheti a fürt létrehozását
A fürt létrehozásának feladatának befejezése után az használatra kész.
A paranccsal ellenőrizzük a telepítés helyességét vcd cse fürt információ MyCluster
Ezután be kell szereznünk a fürt konfigurációját kubectl
# vcd cse cluster config MyCluster > ./.kube/config
És ellenőrizheti a fürt állapotát a segítségével:
Ezen a ponton a klaszter feltételesen működőképesnek tekinthető, ha nem a kitartó kötetekkel rendelkező történet esetében. Mivel a vCloudban vagyunk, nem fogjuk tudni használni a vSphere Provider-t. választási lehetőség --enable-nfs ennek a kellemetlenségnek az elsimítására tervezték, de nem sikerült teljesen. Kézi beállítás szükséges.
A kezdéshez a csomópontunknak külön független lemezt kell létrehoznia a vCloudban. Ez garantálja, hogy adataink nem tűnnek el a klaszterrel együtt, ha törlik. Ezenkívül csatlakoztassa a lemezt az NFS-hez
# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares'
# vcd vapp attach mycluster nfsd-9604 nfs-shares-1
Ezt követően ssh-n keresztül (tényleg te hoztad létre a kulcsokat?) megyünk az NFS-csomópontunkhoz, és végül csatlakoztatjuk a lemezt:
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
Hozzon létre egy könyvtárat az adatok számára, és csatoljon oda egy új partíciót:
mkdir /export
echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab
mount -a
Hozzon létre öt tesztpartíciót, és osszuk meg őket a fürt számára:
>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
Ennyi varázslat után PV-t és PVC-t hozhatunk létre a klaszterünkben, valami ilyesmit:
Riporter:
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
Itt ér véget egy klaszter létrejöttének története és kezdődik életciklusának története. Bónuszként van még két hasznos CSE-parancs, amelyek lehetővé teszik, hogy néha erőforrásokat takarítson meg, vagy sem:
#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8
#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes
Köszönöm mindenkinek az idejét, ha kérdése van, tegye fel a megjegyzésekben.
Forrás: will.com