CSE: Kubernetes for de i vCloud

CSE: Kubernetes for de i vCloud
Hei!

Det har seg slik at vårt lille team, for ikke å si det nylig, og absolutt ikke plutselig, har vokst til å flytte noen (og i fremtiden alle) produkter til Kubernetes.

Det var mange grunner til dette, men historien vår handler ikke om holivar.

Vi hadde lite valg angående infrastrukturbasen. vCloud Director og vCloud Director. Vi valgte den nyere og bestemte oss for å starte.

Nok en gang, når jeg så gjennom "The Hard Way", kom jeg veldig raskt til den konklusjonen at et verktøy for å automatisere i det minste grunnleggende prosesser, som utrulling og størrelse, var nødvendig i går. Et dypdykk i Google brakte frem et slikt produkt som VMware Container Service Extension (CSE) – et åpen kildekodeprodukt som lar deg automatisere opprettelsen og størrelsen på k8s-klynger for de i vCloud.

Ansvarsfraskrivelse: CSE har sine begrensninger, men for våre formål var det perfekt. Løsningen må også støttes av skyleverandøren, men siden serverdelen også er åpen kildekode, be din nærmeste leder om å ha den tilgjengelig :)

For å begynne å bruke det trenger du en administratorkonto i vCloud-organisasjonen og et tidligere opprettet rutet nettverk for klyngen (under distribusjonsprosessen trenger du Internett-tilgang fra dette nettverket, ikke glem å konfigurere brannmur/NAT). Adressering spiller ingen rolle. I dette eksemplet, la oss ta 10.0.240.0/24

CSE: Kubernetes for de i vCloud

Siden klyngen etter opprettelsen må administreres på en eller annen måte, anbefales det å ha en VPN med ruting til det opprettede nettverket. Vi bruker en standard SSL VPN konfigurert på organisasjonens Edge Gateway.

Deretter må du installere CSE-klienten der k8s-klyngene skal administreres. I mitt tilfelle er dette en fungerende bærbar PC og et par godt skjulte beholdere som driver automatisering.

Klienten krever Python versjon 3.7.3 og høyere installert og modulen installert vcd-cli, så la oss installere begge.

pip3 install vcd-cli

pip3 install container-service-extension

Etter installasjonen sjekker vi CSE-versjonen og får følgende:

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

Uventet, men kan fikses. Som det viste seg, må CSE kobles som en modul til vcd-cli.
For å gjøre dette må du først logge på vcd-cli til vår organisasjon:

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

Etter dette vil vcd-cli lage en konfigurasjonsfil ~/.vcd-cli/profiles.yaml
På slutten må du legge til følgende:

extensions:
  - container_service_extension.client.cse

Så sjekker vi igjen:

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

Klientinstallasjonsfasen er fullført. La oss prøve å distribuere den første klyngen.
CSE har flere sett med bruksparametere, alle kan sees her.

Først, la oss lage nøkler for passordløs tilgang til den fremtidige klyngen. Dette punktet er viktig, siden passordpålogging til noder som standard vil være deaktivert, og hvis du ikke angir nøklene, kan du få mye arbeid gjennom de virtuelle maskinkonsollene, noe som 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.

La oss prøve å begynne å lage 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 feil Feil: Økten er utløpt eller brukeren er ikke logget på. Logg på på nytt. — igjen logg på vcd-cli til vCloud som beskrevet ovenfor og prøv igjen.

Denne gangen er alt bra og oppgaven med å lage en klynge har 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 ta omtrent 20 minutter å fullføre oppgaven; i mellomtiden, la oss se på de grunnleggende lanseringsparametrene.

—nettverk — nettverket vi opprettet tidligere.
—ssh-key — nøklene vi opprettet, som vil bli skrevet til klyngenodene
—noder n — Antall arbeidernoder i klyngen. Det vil alltid være én master, dette er en CSE-begrensning
—enable-nfs — lag en ekstra node for NFS-andeler under vedvarende volumer. Det er litt av et pedalalternativ; vi kommer tilbake til å stille inn hva den gjør litt senere.

I mellomtiden kan du i vCloud visuelt overvåke opprettelsen av en klynge
CSE: Kubernetes for de i vCloud

Når oppgaven med å opprette en klynge er fullført, er den klar til bruk.

La oss sjekke riktigheten av distribusjonen med kommandoen vcd cse cluster info MyCluster

CSE: Kubernetes for de i vCloud

Deretter må vi få klyngekonfigurasjonen til å bruke kubectl

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

Og du kan sjekke statusen til klyngen ved å bruke den:

CSE: Kubernetes for de i vCloud

På dette tidspunktet kan klyngen betraktes som betinget fungerende, hvis ikke for historien med vedvarende volumer. Siden vi er i vCloud, vil vi ikke kunne bruke vSphere Provider. Alternativ --aktiver-nfs designet for å jevne ut denne plagen, men det fungerte ikke helt. Manuell justering kreves.

For å begynne må noden vår lage en separat uavhengig disk i vCloud. Dette garanterer at våre data ikke forsvinner sammen med klyngen hvis de slettes. Koble også disken til NFS

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

Etter det går vi via ssh (du opprettet virkelig nøklene?) til NFS-noden vår og til slutt kobler vi til 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

Opprett en katalog for data og monter en ny partisjon der:

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

La oss lage fem testpartisjoner og dele dem for 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

Etter all denne magien kan vi lage PV og PVC i klyngen vår noe sånt som dette:
Journalist:

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 opprettelsen av en klynge slutter og historien om dens livssyklus begynner. Som en bonus er det ytterligere to nyttige CSE-kommandoer som lar deg noen ganger spare ressurser eller ikke:

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

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

Takk alle sammen for tiden deres, hvis du har spørsmål, spør i kommentarene.

Kilde: www.habr.com

Legg til en kommentar