CSE: Kubernetes a vCloudban lévőknek

CSE: Kubernetes a vCloudban lévőknek
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

CSE: Kubernetes a vCloudban lévőknek

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 vcd-cli, tehát 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ó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ő itt.

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
CSE: Kubernetes a vCloudban lévőknek

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

CSE: Kubernetes a vCloudban lévőknek

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:

CSE: Kubernetes a vCloudban lévőknek

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

Hozzászólás