
Mindenkinek szia!
Úgy alakult, hogy a kis csapatunk, nem mondanám, hogy nemrég, és biztosan nem hirtelen, eljutott odáig, hogy néhány (a jövőben pedig minden) terméket átvigyen a Kubernetesbe.
Ennek sok oka volt, de a mi történetünk nem erről szól.
Infrastruktúra szempontjából a választékunk kicsi volt. vCloud Director és vCloud Director. Az újat választottuk, és úgy döntöttünk, hogy elkezdjük.
Miután ismét lapozgattam a „The Hard Way”-t, nagyon gyorsan arra a következtetésre jutottam, hogy egy alapvető folyamatok, mint a deploy és a méretezés, automatizálására szolgáló eszközre szükség volna már tegnap. A Google mélyreható kutatása olyan terméket hozott felszínre, mint a VMware Container Service Extension (CSE) — egy nyílt forráskódú termék, amely lehetővé teszi a k8s klaszterek automatikus létrehozását és méretezését a vCloud felhasználók számára.
Disclaimer: A CSE-nek megvannak a maga korlátai, de a céljainknak tökéletesen megfelelt. Emellett a megoldást a felhőszolgáltatónak is támogatnia kell, de mivel a kiszolgáló oldala is nyílt forráskódú, kérje a legközelebbi menedzsertől 🙂
A használat elkezdéséhez szükség van egy adminisztrátori fiókra a vCloud szervezetben és egy előre létrehozott routed hálózatra a klaszter számára (a telepítési folyamat során internet-hozzáférésre van szükség ebből a hálózatból, ne felejtse el beállítani a tűzfalat/NAT-ot). Az címzés nem számít. A példához vegyünk egy 10.0.240.0/24-es címet.
![]()
Mivel a klaszter létrehozása után valamilyen módon kezelni kell, javasolt egy VPN beállítása, amely közvetlenül a létrehozott hálózatra irányít. Mi egy standard SSL-VPN-t használunk, amely a szervezetünk Edge Gateway-jén van beállítva.
Ezután telepítenünk kell a CSE klienst arra a helyre, ahonnan a k8s klaszterek kezelését végezzük. Az én esetemben ez egy munkahelyi laptop és néhány jól elrejtett konténer, amelyek az automatizálást irányítják.
A kliens 3.7.3 vagy újabb verziójú Python telepítését igényli, valamint a következő modul telepítését: , ezért telepítsük mindkettőt.
pip3 install vcd-cli
pip3 install container-service-extension
A telepítés után ellenőrizzük a CSE verzióját, és a következőt kapjuk:
# vcd cse version
Error: No such command "cse".
Meghökkentő, de javítható. Kiderült, hogy a CSE-t mint modult kell csatolni a vcd-cli-hoz.
Ehhez először be kell jelentkeznünk a vcd-cli-ba a szervezetünkhöz:
# 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 fájl végére a következőt kell hozzáadnunk:
extensions:
- container_service_extension.client.cse
Ezután újra ellenőrizzük:
# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0
A kliens telepítési lépése befejeződött. Próbáljuk meg telepíteni az első klasztert.
A CSE-nek többféle használati paramétere van, amelyeket meg lehet tekinteni.
Először hozzunk létre kulcsokat, hogy jelszó nélküli hozzáférést biztosítsunk a jövőbeli klaszterhez. Ez fontos, mert alapértelmezés szerint a jelszavas bejelentkezés a csomópontokra ki lesz kapcsolva, és ha nem állítunk be kulcsokat, sok munkát valósíthatunk meg a virtuális gépek konzolján, ami nem túl 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 elindítani a klaszter létrehozását:
vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/ .ssh/id_rsa.pub --nodes 3 --enable-nfsHa hibát kapunk, Error: A munkamenet lejárt, vagy a felhasználó nincs bejelentkezve. Kérjük, jelentkezzen be újra. — ismét jelentkezzünk be vcd-cli segítségével a vCloud-ba, ahogy fentebb leírtuk, és próbálkozzunk újra.
Ezúttal minden rendben van, és a klaszter létrehozása elindult.
cluster operation: Klaszter vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) létrehozása a 'photon-v2_k8-1.12_weave-2.3.0' sablonból (1. verzió)
A feladat befejezéséhez körülbelül 20 percre lesz szükség, addig nézzük át az indítás fő paramétereit.
—network — a korábban létrehozott hálózatunk.
—ssh-key — a létrehozott kulcsok, amelyeket a klaszter csomópontjain fogunk rögzíteni.
—nodes n — A klaszter Worker csomópontjainak számát. A mester mindig egy lesz, ez a CSE korlátozása.
—enable-nfs — létrehozni egy további csomópontot az NFS megosztáshoz a tartós tárolókhoz. Ez egy kicsit bonyolult opció, a finomhangolásra, amit csinál, később visszatérünk.
Ez idő alatt a vCloud-ban vizuálisan nyomon követhetjük a klaszter létrehozását.

Amint a klaszter létrehozása befejeződött, készen áll a használatra.
Ellenőrizzük a telepítés helyességét a következő parancs segítségével: vcd cse cluster info MyCluster

Ezután meg kell szereznünk a klaszter konfigurációját a használathoz. kubectl
# vcd cse cluster config MyCluster > ./.kube/config
És ezt már ezzel az eszközzel ellenőrizhetjük a klaszter állapotát:

Ezen a ponton a klaszter körülbelül működőképes, ha nem lenne a tartós tárolók története. Mivel a vCloud-ban vagyunk, nem használhatjuk a vSphere szolgáltatót. Az opció —enable-nfs kipróbálta ezt a kellemetlenséget, de nem teljesen sikerült. Kézi finomhangolásra van szükség.
Először a csomópontunknak létre kell hoznia egy külön Independent lemezt a vCloud-ban. Ez garantálja, hogy az adataink nem tűnnek el a klaszterrel együtt, ha az törlésre kerül. Továbbá csatlakoztassuk 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
Ezután SSH-n keresztül (valóban, létrehoztad a kulcsokat?) csatlakozunk az NFS csomópontunkhoz, és véglegesen csatlakoztatjuk a lemezt:
root@nfsd-9604:~# parted /dev/sdb
(parted) mklabel gpt
Figyelem: A meglévő lemezcímke az /dev/sdb-n el fog veszni, és az ezen a lemezen található összes adat törlődik. Folytatni akarja?
Igen/Nem? igen
(parted) unit GB
(parted) mkpart primary 0 100
(parted) print
Modell: VMware Virtual disk (scsi)
Lemez /dev/sdb: 100GB
Sektor méret (logikai/fizikai): 512B/512B
Partíciós tábla: gpt
Lemez zászlók:
Szám Kezd Vég Méret Fájlrendszer Név Zászlók
1 0.00GB 100GB 100GB primary
(parted) quit
root@nfsd-9604:~# mkfs -t ext4 /dev/sdb1
Fájlrendszer létrehozása 24413696 4k blokkal és 6111232 inode-dal
Fájlrendszer UUID: 8622c0f5-4044-4ebf-95a5-0372256b34f0
Superblock mentések a következő blokkokon:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Csoport táblák allokálása: kész
Inode táblák írása: kész
Napló létrehozása (32768 blokk): kész
Superblock és fájlrendszer könyvelési információk írása: kész
Hozzunk létre egy könyvtárat az adatok számára, és csatoljuk oda az új partíciót:
mkdir /export
echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab
mount -a
Hozzunk létre öt tesztpartíciót, és osszuk meg őket a klaszter számára:
>cd /export
>mkdir vol1 vol2 vol3 vol4 vol5
>vi /etc/exports
#Ezt adjuk hozzá a fájl végéhez
/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! ;)
#Ezután exportáljuk a partíciókat
>exportfs -r
Mindezek után létrehozhatjuk a PV-t és a PVC-t a klaszterünkben körülbelül így:
PV:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-vol1
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
nfs:
# Az NFS hoszt IP-címe, amelyhez korábban ssh-val csatlakoztunk.
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
Ezzel a egy klaszter létrehozásának története véget ér, és elkezdődik a létrehozott klaszter életciklusa. Bónuszként — itt van még két hasznos CSE parancs, amelyek időnként jelentős energiát takaríthatnak meg:
#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8
#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes
Mindenkinek köszönjük az időt, ha kérdései vannak — kérdezzen a megjegyzésekben.
Forrás: habr.com
