CSE: Kubernetes por tiuj en vCloud

CSE: Kubernetes por tiuj en vCloud
Saluton ĉiuj!

Okazis, ke nia malgranda teamo, por ne diri, ke lastatempe, kaj certe ne subite, kreskis por movi kelkajn (kaj estonte ĉiujn) produktojn al Kubernetes.

Estis multaj kialoj por tio, sed nia rakonto ne temas pri holivaro.

Ni havis malmulte da elekto koncerne la infrastrukturan bazon. vCloud Direktoro kaj vCloud Direktoro. Ni elektis la pli novan kaj decidis komenci.

Denove, trarigardante "La Malmola Vojo", mi tre rapide venis al la konkludo, ke ilo por aŭtomatigi almenaŭ bazajn procezojn, kiel ekzemple disfaldiĝo kaj grandeco, estas bezonata hieraŭ. Profunda plonĝo en Guglon elmontris tian produkton kiel VMware Container Service Extension (CSE) - malfermfonteca produkto kiu permesas vin aŭtomatigi la kreadon kaj grandecon de k8s-aretoj por tiuj en vCloud.

Malgarantio: CSE havas siajn limojn, sed por niaj celoj ĝi estis perfekta. Ankaŭ, la solvo devas esti subtenata de la nuba provizanto, sed ĉar la servila parto ankaŭ estas malfermfonta, petu vian plej proksiman administranton havi ĝin havebla :)

Por komenci uzi ĝin, vi bezonas administrandan konton en la vCloud-organizo kaj antaŭe kreitan direktitan reton por la areto (dum la disfalda procezo, vi bezonas Interretan aliron de ĉi tiu reto, ne forgesu agordi Firewall/NAT). Adresado ne gravas. En ĉi tiu ekzemplo, ni prenu 10.0.240.0/24

CSE: Kubernetes por tiuj en vCloud

Ĉar post kreado, la areto devos esti administrita iel, oni rekomendas havi VPN kun vojigo al la kreita reto. Ni uzas norman SSL VPN agordita sur Edge Gateway de nia organizo.

Poste, vi devas instali la CSE-klienton kie la k8s-aretoj estos administritaj. En mia kazo, ĉi tio estas funkcianta tekkomputilo kaj kelkaj bone kaŝitaj ujoj, kiuj veturas aŭtomatigon.

La kliento postulas Python version 3.7.3 kaj pli alta instalita kaj la modulo instalita vcd-cli, do ni instalu ambaŭ.

pip3 install vcd-cli

pip3 install container-service-extension

Post instalado, ni kontrolas la CSE-version kaj ricevas la jenon:

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

Neatendita, sed riparebla. Kiel evidentiĝis, CSE devas esti alfiksita kiel modulo al vcd-cli.
Por fari tion, vi unue devas ensaluti vcd-cli al nia organizo:

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

Post ĉi tio, vcd-cli kreos agordan dosieron ~/.vcd-cli/profiles.yaml
Fine vi devas aldoni la jenon:

extensions:
  - container_service_extension.client.cse

Tiam ni denove kontrolas:

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

La klienta instala fazo finiĝis. Ni provu deploji la unuan areton.
CSE havas plurajn arojn de uzado-parametroj, ĉiuj el ili videblas tie.

Unue, ni kreu ŝlosilojn por senpasvorta aliro al la estonta areto. Ĉi tiu punkto estas grava, ĉar defaŭlte, pasvorta ensaluto al nodoj estos malŝaltita, kaj se vi ne agordas la ŝlosilojn, vi povas akiri multan laboron per la virtualaj maŝinaj konzoloj, kio ne estas oportuna.

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

Ni provu komenci krei areton:

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

Se ni ricevas eraron Eraro: Sesio eksvalidiĝis aŭ uzanto ne ensalutis. Bonvolu re-ensaluti. — denove ensalutu vcd-cli al vCloud kiel priskribite supre kaj provu denove.

Ĉi-foje ĉio estas en ordo kaj la tasko krei areton komenciĝis.

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

Ĝi daŭros ĉirkaŭ 20 minutojn por plenumi la taskon; intertempe, ni rigardu la bazajn lanĉajn parametrojn.

—reto — la reto, kiun ni kreis pli frue.
—ssh-key — la ŝlosiloj, kiujn ni kreis, kiuj estos skribitaj al la clusternodoj
—nodes n — Nombro de Laboristaj nodoj en la areto. Ĉiam estos unu majstro, ĉi tio estas CSE-limigo
—enable-nfs — kreu plian nodon por NFS-akcioj sub konstantaj volumoj. Ĝi estas iom pedala opcio; ni reiros al agordi kion ĝi faras iom poste.

Dume, en vCloud vi povas vide monitori la kreadon de areto
CSE: Kubernetes por tiuj en vCloud

Post kiam la tasko krei areton estas finita, ĝi estas preta por uzo.

Ni kontrolu la ĝustecon de la deplojo per la komando vcd cse cluster info MyCluster

CSE: Kubernetes por tiuj en vCloud

Poste ni devas akiri la agordon de grapo por uzi kubectl

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

Kaj vi povas kontroli la staton de la grapolo uzante ĝin:

CSE: Kubernetes por tiuj en vCloud

Ĉe tiu punkto, la areto povas esti konsiderita kondiĉe funkcianta, se ne por la rakonto kun persistaj volumoj. Ĉar ni estas en vCloud, ni ne povos uzi vSphere Provider. Opcio --enable-nfs desegnita por mildigi ĉi tiun ĝenon, sed ĝi ne funkciis tute. Mana alĝustigo bezonata.

Por komenci, nia nodo devas krei apartan Sendependan diskon en vCloud. Ĉi tio garantias, ke niaj datumoj ne malaperos kune kun la areto se ĝi estas forigita. Ankaŭ konektu la diskon al NFS

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

Post tio, ni iras per ssh (vi vere kreis la ŝlosilojn?) al nia NFS-nodo kaj finfine konekti la diskon:

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

Kreu dosierujon por datumoj kaj muntu freŝan sekcion tie:

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

Ni kreu kvin testajn sekciojn kaj dividu ilin por la areto:

>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

Post ĉi tiu tuta magio, ni povas krei PV kaj PVC en nia areto ion tian:
Raportisto:

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

Ĉi tie finiĝas la rakonto pri la kreado de unu areto kaj komenciĝas la rakonto pri ĝia vivociklo. Kiel gratifiko, estas du pli utilaj CSE-komandoj, kiuj permesas vin foje ŝpari rimedojn aŭ ne:

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

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

Dankon al vi ĉiuj pro via tempo, se vi havas demandojn, demandu en la komentoj.

fonto: www.habr.com

Aldoni komenton