CSE: Kubernetes for dem i vCloud

CSE: Kubernetes for dem i vCloud
Hej alle!

Det skete sådan, at vores lille team, for ikke at sige det for nylig, og bestemt ikke pludselig, er vokset til at flytte nogle (og i fremtiden alle) produkter til Kubernetes.

Der var mange grunde til dette, men vores historie handler ikke om holivar.

Vi havde ikke meget valg med hensyn til infrastrukturbasen. vCloud Director og vCloud Director. Vi valgte den nyere og besluttede at starte.

Endnu en gang, da jeg kiggede igennem "The Hard Way", kom jeg meget hurtigt til den konklusion, at et værktøj til at automatisere i det mindste grundlæggende processer, såsom implementering og dimensionering, var nødvendigt i går. Et dybt dyk ned i Google viste et sådant produkt som VMware Container Service Extension (CSE) - et open source-produkt, der giver dig mulighed for at automatisere oprettelsen og størrelsen af ​​k8s-klynger for dem i vCloud.

Ansvarsfraskrivelse: CSE har sine begrænsninger, men til vores formål var det perfekt. Løsningen skal også understøttes af cloud-udbyderen, men da serverdelen også er open source, så bed din nærmeste leder om at have den tilgængelig :)

For at begynde at bruge det skal du have en administratorkonto i vCloud-organisationen og et tidligere oprettet rutenetværk til klyngen (under implementeringsprocessen skal du have internetadgang fra dette netværk, glem ikke at konfigurere Firewall/NAT). Adressering er ligegyldig. Lad os i dette eksempel tage 10.0.240.0/24

CSE: Kubernetes for dem i vCloud

Da klyngen efter oprettelsen skal administreres på en eller anden måde, anbefales det at have en VPN med routing til det oprettede netværk. Vi bruger en standard SSL VPN konfigureret på vores organisations Edge Gateway.

Dernæst skal du installere CSE-klienten, hvor k8s-klyngerne vil blive administreret. I mit tilfælde er dette en fungerende bærbar computer og et par godt skjulte beholdere, der driver automatisering.

Klienten kræver Python version 3.7.3 og nyere installeret og modulet installeret vcd-cli, så lad os installere begge dele.

pip3 install vcd-cli

pip3 install container-service-extension

Efter installationen tjekker vi CSE-versionen og får følgende:

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

Uventet, men kan fikses. Som det viste sig, skal CSE være knyttet som et modul til vcd-cli.
For at gøre dette skal du først logge på vcd-cli til vores organisation:

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

Efter dette vil vcd-cli oprette en konfigurationsfil ~/.vcd-cli/profiles.yaml
Til sidst skal du tilføje følgende:

extensions:
  - container_service_extension.client.cse

Så tjekker vi igen:

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

Klientinstallationsfasen er afsluttet. Lad os prøve at implementere den første klynge.
CSE har flere sæt brugsparametre, som alle kan ses her.

Lad os først oprette nøgler til adgangskodefri adgang til den fremtidige klynge. Dette punkt er vigtigt, da adgangskodelogin til noder som standard vil være deaktiveret, og hvis du ikke indstiller nøglerne, kan du få en masse arbejde gennem de virtuelle maskinkonsoller, hvilket ikke er praktisk.

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

Lad os prøve at begynde at oprette en klynge:

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

Hvis vi får en fejl Fejl: Sessionen er udløbet, eller brugeren er ikke logget ind. Log venligst på igen. — Log igen vcd-cli på vCloud som beskrevet ovenfor, og prøv igen.

Denne gang er alt fint, og opgaven med at skabe en klynge er startet.

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

Det vil tage omkring 20 minutter at fuldføre opgaven; i mellemtiden, lad os se på de grundlæggende startparametre.

—netværk — netværket, vi oprettede tidligere.
—ssh-key — de nøgler, vi oprettede, som vil blive skrevet til klyngens noder
—nodes n — Antal arbejderknuder i klyngen. Der vil altid være én master, dette er en CSE-begrænsning
—enable-nfs — opret en ekstra node til NFS-shares under vedvarende volumener. Det er lidt af en pedalmulighed; vi vender tilbage til at tune, hvad den gør lidt senere.

I mellemtiden kan du i vCloud visuelt overvåge oprettelsen af ​​en klynge
CSE: Kubernetes for dem i vCloud

Når opgaven med at oprette en klynge er fuldført, er den klar til brug.

Lad os kontrollere korrektheden af ​​implementeringen med kommandoen vcd cse cluster info MyCluster

CSE: Kubernetes for dem i vCloud

Dernæst skal vi få klyngekonfigurationen til at bruge kubectl

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

Og du kan kontrollere klyngens status ved at bruge den:

CSE: Kubernetes for dem i vCloud

På dette tidspunkt kan klyngen betragtes som betinget fungerende, hvis ikke for historien med vedvarende volumener. Da vi er i vCloud, vil vi ikke være i stand til at bruge vSphere Provider. Mulighed --enable-nfs designet til at udjævne denne gener, men det lykkedes ikke helt. Manuel justering påkrævet.

For at begynde skal vores node oprette en separat uafhængig disk i vCloud. Dette garanterer, at vores data ikke forsvinder sammen med klyngen, hvis de slettes. Tilslut også disken til NFS

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

Derefter går vi via ssh (du har virkelig oprettet nøglerne?) til vores NFS-node og slutter til sidst disken:

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

Opret en mappe til data og monter en ny partition der:

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

Lad os oprette fem testpartitioner og dele dem til klyngen:

>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

Efter al denne magi kan vi skabe PV og PVC i vores klynge noget som dette:
Reporter:

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

Det er her, historien om skabelsen af ​​én klynge slutter, og historien om dens livscyklus begynder. Som en bonus er der yderligere to nyttige CSE-kommandoer, der tillader dig nogle gange at spare ressourcer eller ej:

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

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

Tak til jer alle for jeres tid, hvis I har spørgsmål, så spørg i kommentarerne.

Kilde: www.habr.com

Tilføj en kommentar