CSE: Kubernetes neile, kes kasutavad vCloudi

CSE: Kubernetes neile, kes kasutavad vCloudi
Tere kõigile!

Juhtus nii, et meie väike meeskond, et mitte öelda, et viimasel ajal ja kindlasti mitte ootamatult, on kasvanud, et osa (ja tulevikus kõik) tooted Kubernetesesse kolida.

Sellel oli palju põhjuseid, kuid meie lugu ei puuduta holivarit.

Meil oli infrastruktuuribaasi osas vähe valikut. vCloud Director ja vCloud Director. Valisime uuema ja otsustasime alustada.

Taaskord “The Hard Way” läbi vaadates jõudsin väga kiiresti järeldusele, et eile oli vaja tööriista vähemalt põhiprotsesside automatiseerimiseks, nagu juurutamine ja suuruse määramine. Sügav sukeldumine Google'isse tõi päevavalgele sellise toote nagu VMware Container Service Extension (CSE) – avatud lähtekoodiga toote, mis võimaldab automatiseerida k8s-klastrite loomist ja suuruse määramist vCloudi kasutajate jaoks.

Kohustustest loobumine: CSE-l on oma piirangud, kuid meie eesmärkidel oli see täiuslik. Samuti peab lahendus olema pilvepakkuja poolt toetatud, aga kuna serveri osa on samuti avatud lähtekoodiga, siis paluge lähimal halduril see kättesaadavaks teha :)

Selle kasutamise alustamiseks vajate vCloud organisatsioonis administraatori kontot ja klastri jaoks eelnevalt loodud marsruutitud võrku (juurutusprotsessi ajal on teil vaja Interneti-juurdepääsu sellest võrgust, ärge unustage seadistada tulemüüri/NAT-i). Adresseerimine pole oluline. Selles näites võtame 10.0.240.0/24

CSE: Kubernetes neile, kes kasutavad vCloudi

Kuna pärast loomist tuleb klastrit kuidagi hallata, on soovitatav omada VPN-i koos marsruutimisega loodud võrku. Kasutame standardset SSL VPN-i, mis on konfigureeritud meie organisatsiooni Edge Gateway'is.

Järgmisena peate installima CSE-kliendi, kus k8s-klastreid hallatakse. Minu puhul on see töötav sülearvuti ja paar hästi peidetud konteinerit, mis juhivad automatiseerimist.

Klient vajab Pythoni versiooni 3.7.3 ja uuemat installimist ja mooduli installimist vcd-cli, nii et installime mõlemad.

pip3 install vcd-cli

pip3 install container-service-extension

Pärast installimist kontrollime CSE versiooni ja saame järgmise:

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

Ootamatu, kuid parandatav. Nagu selgus, tuleb CSE vcd-cli moodulina kinnitada.
Selleks peate esmalt meie organisatsiooni vcd-cli sisse logima:

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

Pärast seda loob vcd-cli konfiguratsioonifaili ~/.vcd-cli/profiles.yaml
Lõpus peate lisama järgmise:

extensions:
  - container_service_extension.client.cse

Seejärel kontrollime uuesti:

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

Kliendi installifaas on lõppenud. Proovime esimest klastrit juurutada.
CSE-l on mitu kasutusparameetrite komplekti, neid kõiki saab vaadata siia.

Kõigepealt loome võtmed tulevasele klastrile paroolita juurdepääsuks. See punkt on oluline, kuna vaikimisi on parooliga sõlmedesse sisselogimine keelatud ja kui te võtmeid ei määra, saate virtuaalmasina konsoolide kaudu palju tööd teha, mis pole mugav.

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

Proovime alustada klastri loomist:

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

Kui saame vea Viga: seanss on aegunud või kasutaja pole sisse loginud. Palun logige uuesti sisse. — logige uuesti sisse vcd-cli vCloudi, nagu ülalpool kirjeldatud, ja proovige uuesti.

Seekord on kõik hästi ja klastri loomise ülesanne on alanud.

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

Ülesande täitmiseks kulub umbes 20 minutit; seniks vaatame põhilisi käivitamise parameetreid.

—võrk — võrk, mille me varem lõime.
—ssh-key — meie loodud võtmed, mis kirjutatakse klastri sõlmedesse
—nodes n — Töötaja sõlmede arv klastris. Alati on üks juht, see on CSE piirang
—enable-nfs — lisasõlme loomine NFS-i jagamiste jaoks püsivate mahtude all. See on natuke pedaalivalik; selle häälestamise juurde tuleme tagasi veidi hiljem.

Samal ajal saate vCloudis klastri loomist visuaalselt jälgida
CSE: Kubernetes neile, kes kasutavad vCloudi

Kui klastri loomise ülesanne on lõpetatud, on see kasutamiseks valmis.

Kontrollime käsuga paigutuse õigsust vcd cse klastri teave MyCluster

CSE: Kubernetes neile, kes kasutavad vCloudi

Järgmisena peame hankima kasutatava klastri konfiguratsiooni kubectl

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

Ja saate selle abil klastri olekut kontrollida:

CSE: Kubernetes neile, kes kasutavad vCloudi

Siinkohal võib klastrit pidada tinglikult toimivaks, kui mitte püsivate mahtudega lugu. Kuna oleme vCloudis, ei saa me vSphere Providerit kasutada. Võimalus --enable-nfs mõeldud selle ebameeldivuse tasandamiseks, kuid see ei õnnestunud täielikult. Vajalik käsitsi reguleerimine.

Alustuseks peab meie sõlm looma vCloudis eraldi sõltumatu ketta. See tagab, et meie andmed ei kao koos klastriga, kui need kustutatakse. Samuti ühendage ketas NFS-iga

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

Pärast seda läheme ssh-i kaudu (kas tõesti lõite võtmed?) oma NFS-sõlme ja ühendame lõpuks ketta:

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

Looge andmete jaoks kataloog ja ühendage sinna uus partitsioon:

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

Loome viis testpartitsiooni ja jagame neid klastri jaoks:

>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

Pärast kogu seda maagiat saame oma klastris luua PV ja PVC midagi sellist:
PV:

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

Siin lõpeb ühe klastri loomise lugu ja algab selle elutsükli lugu. Boonusena on veel kaks kasulikku CSE-käsku, mis võimaldavad teil mõnikord ressursse säästa või mitte:

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

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

Tänan teid kõiki teie aja eest, kui teil on küsimusi, küsige kommentaarides.

Allikas: www.habr.com

Lisa kommentaar