CSE: Kubernetes vCloud-en daudenentzat

CSE: Kubernetes vCloud-en daudenentzat
Hola a todos!

Gertatu zen gure talde txikia, zer esanik ez duela gutxi, eta zalantzarik gabe ez bat-batean, produktu batzuk (eta etorkizunean guztiak) Kubernetesera mugitzeko hazi egin dela.

Arrazoi asko zeuden, baina gure istorioa ez da holivarri buruzkoa.

Aukera gutxi genuen azpiegituren oinarriari dagokionez. vCloud Zuzendaria eta vCloud Zuzendaria. Berriagoa aukeratu genuen eta hastea erabaki genuen.

Berriro ere, "The Hard Way"-tik begiratuta, oso azkar ondorioztatu nuen atzo gutxienez oinarrizko prozesuak automatizatzeko tresna bat behar zela, hedapena eta dimentsionatzea. Google-n murgiltze sakon batek VMware Container Service Extension (CSE) bezalako produktu bat atera zuen argitara, vCloud-en daudenentzat k8s klusterren sorrera eta tamaina automatizatzeko aukera ematen duen kode irekiko produktua.

Lege-oharra: CSEk bere mugak ditu, baina gure helburuetarako ezin hobea zen. Gainera, soluzioak hodeiko hornitzaileak onartu behar du, baina zerbitzariaren zatia ere kode irekikoa denez, eskatu hurbilen duzun kudeatzaileari eskuragarri izan dezala :)

Erabiltzen hasteko, vCloud erakundean administratzaile-kontu bat eta aldez aurretik sortutako sare bideratu bat behar dituzu klusterrako (hedapen-prozesuan zehar, sare honetatik Interneterako sarbidea behar duzu, ez ahaztu Firewall/NAT konfiguratzea). Helbideak ez du axola. Adibide honetan, har dezagun 10.0.240.0/24

CSE: Kubernetes vCloud-en daudenentzat

Sortu ondoren, clusterra nolabait kudeatu beharko denez, sorturiko sarera bideratzearekin VPN bat izatea gomendatzen da. Gure erakundearen Edge Gateway-n konfiguratutako SSL VPN estandar bat erabiltzen dugu.

Ondoren, k8s klusterrak kudeatuko diren CSE bezeroa instalatu behar duzu. Nire kasuan, hau da, funtzionatzen duen ordenagailu eramangarri bat eta automatizazioa gidatzen duten ondo ezkutuko edukiontzi pare bat.

Bezeroak Python 3.7.3 bertsioa eta berriagoa instalatuta eta modulua instalatuta behar du vcd-cli, beraz, instala ditzagun biak.

pip3 install vcd-cli

pip3 install container-service-extension

Instalatu ondoren, CSE bertsioa egiaztatu eta hurrengoa lortzen dugu:

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

Ezustekoa, baina konpondu daitekeena. Horrexegatik, CSE modulu gisa erantsi behar da vcd-cli-ra.
Horretarako, lehenengo vcd-cli saioa hasi behar duzu gure erakundean:

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

Horren ondoren, vcd-cli-k konfigurazio fitxategi bat sortuko du ~/.vcd-cli/profiles.yaml
Bukaeran honako hau gehitu behar duzu:

extensions:
  - container_service_extension.client.cse

Ondoren, berriro egiaztatuko dugu:

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

Bezeroaren instalazio fasea amaitu da. Saia gaitezen lehen clusterra zabaltzen.
CSEk hainbat erabilera-parametro ditu, denak ikus daitezke hemen.

Lehenik eta behin, sor ditzagun etorkizuneko klusterera pasahitzik gabeko sarbidea izateko gakoak. Puntu hau garrantzitsua da, lehenespenez, pasahitza nodoetan saioa hasteko desgaituta egongo baita, eta gakoak ezartzen ez badituzu, lan asko lor dezakezu makina birtualen kontsolen bidez, eta hori ez da erosoa.

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

Saia gaitezen kluster bat sortzen hasten:

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

Errore bat jasotzen badugu Errorea: saioa iraungi da edo erabiltzailea ez da saioa hasi. Mesedez, berriro hasi saioa. β€” Hasi saioa berriro vcd-cli vCloud-en goian azaldu bezala eta saiatu berriro.

Oraingoan dena ondo dago eta kluster bat sortzeko lana hasi da.

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

20 minutu inguru beharko ditu zeregina burutzeko; bitartean, ikus ditzagun oinarrizko abiarazteko parametroak.

β€”sarea β€” lehenago sortu genuen sarea.
β€”ssh-key β€” sortu ditugun gakoak, cluster nodoetan idatziko direnak
β€”nodes n β€” Klustereko Worker nodo kopurua. Beti egongo da maisu bat, hau CSE muga bat da
β€”enable-nfs β€” sortu NFS partekatzeetarako nodo gehigarri bat bolumen iraunkorretan. Pedalaren aukera apur bat da; geroxeago itzuliko gara egiten duena sintonizatzera.

Bien bitartean, vCloud-en kluster baten sorrera ikus dezakezu
CSE: Kubernetes vCloud-en daudenentzat

Kluster bat sortzeko zeregina amaitutakoan, erabiltzeko prest dago.

Egiazta dezagun inplementazioa zuzena den komandoarekin vcd cse cluster info MyCluster

CSE: Kubernetes vCloud-en daudenentzat

Ondoren, kluster konfigurazioa erabili behar dugu kubectl

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

Eta klusterraren egoera egiaztatu dezakezu hura erabiliz:

CSE: Kubernetes vCloud-en daudenentzat

Une honetan, klusterrak baldintzapean funtzionatzen duela har daiteke, bolumen iraunkorrak dituen istorioa ez bada. vCloud-en gaudenez, ezin izango dugu vSphere Provider erabili. Aukera --enable-nfs traba hori leuntzeko diseinatua, baina ez zen guztiz konpontzen. Eskuzko doikuntza behar da.

Hasteko, gure nodoak disko independente bat sortu behar du vCloud-en. Horrek bermatzen du gure datuak ezabatu egingo direla klusterrekin batera ezabatzen bada. Gainera, konektatu diskoa NFSra

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

Horren ostean, ssh bidez joango gara (benetan sortu dituzu gakoak?) gure NFS nodora eta azkenik diskoa konektatuko dugu:

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

Sortu datuetarako direktorio bat eta muntatu partizio berri bat bertan:

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

Sor ditzagun bost proba-partizio eta parteka ditzagun klustererako:

>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

Magia honen guztiaren ondoren, PV eta PVC gure klusterrean honelako zerbait sor dezakegu:
Berriemailea:

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

Hor amaitzen da kluster baten sorreraren istorioa eta bere bizi-zikloaren istorioa hasten da. Hobari gisa, beste bi CSE komando erabilgarriak daude batzuetan baliabideak gordetzeko edo ez gordetzeko aukera ematen dutenak:

#Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ кластСра Π΄ΠΎ 8 Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π½ΠΎΠ΄
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8

#Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½ΠΎΠ΄Ρ‹ ΠΈΠ· кластСра с ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ
>vcd cse node delete MyCluster node-1a2v node-6685 --yes

Eskerrik asko guztioi zure denboragatik, galderarik baduzu, galdetu iruzkinetan.

Iturria: www.habr.com

Gehitu iruzkin berria