CSE: Kubernetes vir diegene in vCloud

CSE: Kubernetes vir diegene in vCloud
Hallo almal!

Dit het so gebeur dat ons klein span, om nie te sê dit onlangs, en beslis nie skielik nie, gegroei het om sommige (en in die toekoms alle) produkte na Kubernetes te skuif.

Daar was baie redes hiervoor, maar ons storie gaan nie oor holivar nie.

Ons het min keuse gehad oor die infrastruktuurbasis. vCloud Director en vCloud Director. Ons het die nuwer een gekies en besluit om te begin.

Weereens, deur “The Hard Way” te kyk, het ek baie vinnig tot die gevolgtrekking gekom dat 'n instrument vir die outomatisering van ten minste basiese prosesse, soos ontplooiing en grootte, gister nodig was. 'n Diep duik in Google het so 'n produk soos VMware Container Service Extension (CSE) aan die lig gebring - 'n oopbronproduk wat jou toelaat om die skepping en grootte van k8s-klusters vir diegene in vCloud te outomatiseer.

Disclaimer: CSE het sy beperkings, maar vir ons doeleindes was dit perfek. Die oplossing moet ook deur die wolkverskaffer ondersteun word, maar aangesien die bedienerdeel ook oopbron is, vra jou naaste bestuurder om dit beskikbaar te hê :)

Om dit te begin gebruik, benodig jy 'n administrateurrekening in die vCloud-organisasie en 'n voorheen geskepte gerouteerde netwerk vir die groepering (tydens die ontplooiingsproses benodig jy internettoegang vanaf hierdie netwerk, moenie vergeet om Firewall/NAT op te stel nie). Aanspreek maak nie saak nie. Kom ons neem in hierdie voorbeeld 10.0.240.0/24

CSE: Kubernetes vir diegene in vCloud

Aangesien die groepering na die skepping op een of ander manier bestuur moet word, word dit aanbeveel om 'n VPN te hê met roetering na die geskepte netwerk. Ons gebruik 'n standaard SSL VPN wat op ons organisasie se Edge Gateway opgestel is.

Vervolgens moet u die CSE-kliënt installeer waar die k8s-klusters bestuur sal word. In my geval is dit 'n werkende skootrekenaar en 'n paar goed versteekte houers wat outomatisering aandryf.

Die kliënt vereis Python weergawe 3.7.3 en hoër geïnstalleer en die module geïnstalleer vcd-cli, so kom ons installeer albei.

pip3 install vcd-cli

pip3 install container-service-extension

Na die installasie gaan ons die CSE-weergawe na en kry die volgende:

# vcd cse version
Error: No such command "cse".

Onverwags, maar regmaakbaar. Soos dit geblyk het, moet CSE as 'n module aan vcd-cli aangeheg word.
Om dit te doen, moet jy eers vcd-cli by ons organisasie aanmeld:

# vcd login MyCloud.provider.com org-dev admin
Password: 
admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01'

Hierna sal vcd-cli 'n konfigurasielêer skep ~/.vcd-cli/profiles.yaml
Aan die einde moet jy die volgende byvoeg:

extensions:
  - container_service_extension.client.cse

Dan kyk ons ​​weer:

# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0

Die kliënt installasie fase is voltooi. Kom ons probeer om die eerste groep te ontplooi.
CSE het verskeie stelle gebruiksparameters, almal kan bekyk word hier.

Kom ons skep eers sleutels vir wagwoordlose toegang tot die toekomstige groepering. Hierdie punt is belangrik, aangesien wagwoordaanmelding by nodusse by verstek gedeaktiveer sal wees, en as jy nie die sleutels instel nie, kan jy baie werk kry deur die virtuele masjienkonsoles, wat nie gerieflik is nie.

# 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.

Kom ons probeer om 'n groepering te begin skep:

vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs

As ons 'n fout kry Fout: Sessie het verval of gebruiker het nie aangemeld nie. Meld asseblief weer aan. - meld weer vcd-cli aan by vCloud soos hierbo beskryf en probeer weer.

Hierdie keer is alles reg en die taak om 'n cluster te skep het begin.

cluster operation: Creating cluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) from template 'photon-v2_k8-1.12_weave-2.3.0' (revision 1)

Dit sal ongeveer 20 minute neem om die taak te voltooi; kom ons kyk intussen na die basiese bekendstellingsparameters.

—netwerk — die netwerk wat ons vroeër geskep het.
—ssh-sleutel — die sleutels wat ons geskep het, wat na die cluster nodusse geskryf sal word
—nodes n — Aantal Werker nodusse in die cluster. Daar sal altyd een meester wees, dit is 'n CSE-beperking
—enable-nfs — skep 'n bykomende nodus vir NFS-aandele onder aanhoudende volumes. Dit is 'n bietjie van 'n pedaalopsie; ons sal 'n bietjie later terugkom na die instel van wat dit doen.

Intussen kan u in vCloud die skepping van 'n groep visueel monitor
CSE: Kubernetes vir diegene in vCloud

Sodra die taak om 'n kluster te skep voltooi is, is dit gereed vir gebruik.

Kom ons kyk na die korrektheid van die ontplooiing met die opdrag vcd cse cluster info MyCluster

CSE: Kubernetes vir diegene in vCloud

Volgende moet ons die groepkonfigurasie kry om te gebruik kubectl

# vcd cse cluster config MyCluster > ./.kube/config

En jy kan die status van die groepering nagaan deur dit te gebruik:

CSE: Kubernetes vir diegene in vCloud

Op hierdie stadium kan die cluster beskou word as voorwaardelik werk, indien nie vir die verhaal met aanhoudende volumes nie. Aangesien ons in vCloud is, sal ons nie vSphere Provider kan gebruik nie. Opsie --aktiveer-nfs ontwerp om hierdie oorlas uit te stryk, maar dit het nie heeltemal uitgewerk nie. Handmatige verstelling vereis.

Om te begin, moet ons nodus 'n aparte onafhanklike skyf in vCloud skep. Dit waarborg dat ons data nie saam met die groep sal verdwyn as dit uitgevee word nie. Koppel ook die skyf aan NFS

# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares'
# vcd vapp attach mycluster nfsd-9604 nfs-shares-1

Daarna gaan ons via ssh (jy het regtig die sleutels geskep?) na ons NFS-knoop en koppel uiteindelik die skyf:

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

Skep 'n gids vir data en monteer 'n vars partisie daar:

mkdir /export
echo '/dev/sdb1  /export   ext4  defaults   0 0' >> /etc/fstab
mount -a

Kom ons skep vyf toetspartisies en deel dit vir die groep:

>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

Na al hierdie towerkrag kan ons PV en PVC in ons groepie so iets skep:
Verslaggewer:

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

Dit is waar die verhaal van die skepping van een groep eindig en die verhaal van sy lewensiklus begin. As 'n bonus is daar nog twee nuttige CSE-opdragte waarmee u soms hulpbronne kan bespaar of nie:

#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8

#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes

Dankie almal vir jou tyd, as jy enige vrae het, vra in die kommentaar.

Bron: will.com

Voeg 'n opmerking