CSE: Kubernetes neile, kes on vCloudis

CSE: Kubernetes neile, kes on vCloudis
Tere kõigile!

Oleme jõudnud olukorda, kus meie väike meeskond, mitte just hiljuti ja kindlasti mitte järsku, on jõudnud tasemeni, kus viime mitmed (ja tulevikus kõik) tooted Kubernetesesse.

Sellel oli palju põhjuseid, kuid meie lugu ei ole sellest valimisest.

Meie infrastruktuuri aluseks oli vähe valikuid. vCloud Director ja vCloud Director. Valisime uuema versiooni ja otsustasime alustada.

Jällegi „The Hard Way“ lehitsedes jõudsin kiiresti järeldusele, et automatiseerimise tööriist vähemalt põhiprotsesside, nagu juurutamine ja mõõtmine, jaoks on vajalik juba eile. Sügavam sukeldumine Google'isse tõi esile toote VMware Container Service Extension (CSE) — avatud lähtekoodiga toote, mis võimaldab automatiseerida k8s klastrite loomist ja mõõtmist neil, kes kasutavad vCloudi.

Märkus: CSE-l on oma piirangud, kuid meie eesmärkide jaoks sobis see ideaalselt. Lahendust peab toetama pilveteenus, kuid kuna serveripool on samuti avatud lähtekoodiga, nõudke selle olemasolu lähimalt juhilt 🙂

Alustamiseks on vajalik administraatori konto vCloudi organisatsioonis ja eelnevalt loodud suunatud võrk klastrile (juurutamise protsessis on vajalik internetiühendus sellest võrgust, ärge unustage tulekahju/NAT seadistada). Aadressimine ei oma tähtsust. Käesolevas näites kasutame 10.0.240.0/24.

CSE: Kubernetes neile, kes on vCloudis

Kuna klastrit tuleb pärast loomist kuidagi hallata, on soovitatav olemasolu VPN, mis suudab suunata loodud võrku. Me kasutame standardset SSL-VPNi, mis on seadistatud meie organisatsiooni Edge Gatewayle.

Seejärel on vajalik CSE kliendi paigaldamine sinna, kust klastreid k8s hallatakse. Minu puhul on see tööarvuti ja paar hästi varjatud konteinerit, mis haldavad automatiseerimist.

Kliendil on vajalik, et Python versioon 3.7.3 või uuem oleks juba paigaldatud ja moodul vcd-cli, seega paigaldame mõlemad.

pip3 install vcd-cli

pip3 install container-service-extension

Pärast paigaldamist kontrollime CSE versiooni ja saame järgmist:

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

Ootamatu, kuid parandatav. Selgub, et CSE tuleb seadistada vcd-cli mooduliks.
Selleks tuleb esmalt logida vcd-cli meie organisatsiooni:

# 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 konfiguratsiooni faili ~/.vcd-cli/profiles.yaml
Selle lõppu tuleb lisada järgmine:

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 installatsiooni etapp on lõpetatud. Proovime käivitada esimese klastrite.
CSE-l on mitu kasutamise parameetrite komplekti, kõiki saab vaadata. siit.

Alustuseks loome võtmed tulevasse klastrisse paroolivaba juurdepääsu jaoks. See punkt on oluline, kuna vaikimisi on sisselogimine sõlmedesse parooliga keelatud ning võtmete määramata jätmine võib põhjustada palju tööd virtuaalmasinate konsoolist, mis ei ole just 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 käivitada klastri loomist:

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

Kui saame vea, Error: Seanss on aegunud või kasutaja ei ole sisse logitud. Palun logige uuesti sisse. — logime uuesti vcd-cli-ga vCloudi, nagu eespool kirjeldatud, ja proovime uuesti.

Seekord läheb kõik hästi ja klastri loomise ülesanne käivitati.

cluster operation: Loomine klastrivApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) mallist 'photon-v2_k8-1.12_weave-2.3.0' (muudatus 1)

Ülesande lõpetamine võtab aega umbes 20 minutit, samal ajal vaatame üle peamised käivitamisparameetrid.

—network — varem loodud võrk.
—ssh-key — loodud võtmed, mis salvestatakse klastrisõlmedesse.
—nodes n — Klastri töötajate sõlmede arv. Meister on alati üks, see on CSE piirang.
—enable-nfs — luua täiendav sõlm NFS jagamiseks püsivatesse mahtudesse. Veidi keeruline valik, nende seadistamise juurde tagasi tuleme.

Sel ajal saab vCloudis visuaalselt jälgida klastrite loomist.
CSE: Kubernetes neile, kes on vCloudis

Niipea kui klastri loomise ülesanne on lõpetatud, on see tööks valmis.

Kontrollime juurutamise õigsust käsuga. vcd cse cluster info MyCluster

CSE: Kubernetes neile, kes on vCloudis

Seejärel peame saama klastri konfiguratsiooni kasutamiseks. kubectl

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

Ja seda on võimalik klastriseisundi kontrollimiseks kasutada:

CSE: Kubernetes neile, kes on vCloudis

Sel hetkel võib klastri pidada tinglikult tööks, kui mitte arvestada püsivate mahtudega seotud ajalooga. Kuna oleme vCloudis, ei saa kasutada vSphere Providerit. Valik —enable-nfs on mõeldud selle ebameeldivuse leevendamiseks, kuid see ei õnnestunud täielikult. Nõutakse käsitsi seadeid.

Esmalt peab meie sõlm looma eraldi iseseisva ketta vCloudis. See garanteerib, et meie andmed ei kao koos klastriga, kui see kustutatakse. Samuti ühendame ketta 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 kaudu (te tõeliselt lõite võtmed, eks?) meie NFS sõlme ja ühendame ketta lõplikult:

root@nfsd-9604:~# parted /dev/sdb
(parted) mklabel gpt
Warning: 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

Loome me kaust andmete jaoks ja monteerime sinna värske partitsioon:

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

Loome viis testpartitsiooni ja jagame need klastri jaoks:

>cd /export
>mkdir vol1 vol2 vol3 vol4 vol5
>vi /etc/exports
#Lisame selle faili lõppu
/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! ;)
#Seejärel - ekspordime partitsioonid
>exportfs -r

Pärast kogu seda võlu on võimalik luua PV ja PVC meie klastris umbes nii:
PV:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-vol1
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    # Sama IP nagu NFS host, kuhu me varem ssh’iga sisse viisime.
    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

Sellega lõpeb ühe klastrite loomise lugu ja algab tema elutsükkel. Boonusena - veel kaks kasulikku CSE käsku, mis võivad mõnikord ressursse hästi 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

Aitäh kõigile aega leidmise eest, kui on küsimusi - küsige kommentaarides.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster