CSE: Kubernetes za tiste v vCloud

CSE: Kubernetes za tiste v vCloud
Pozdravljeni vsi!

Tako se je zgodilo, da se je naša majhna ekipa, da ne rečem pred kratkim, vsekakor pa ne nenadoma, povečala in preselila nekatere (in v prihodnosti vse) izdelke v Kubernetes.

Razlogov za to je bilo veliko, vendar naša zgodba ni o holivarju.

Glede infrastrukturne baze nismo imeli veliko izbire. vCloud Director in vCloud Director. Izbrali smo novejšega in se odločili začeti.

Še enkrat, ko sem pregledal “The Hard Way,” sem zelo hitro prišel do zaključka, da je bilo včeraj potrebno orodje za avtomatizacijo vsaj osnovnih procesov, kot sta uvajanje in dimenzioniranje. Poglobljen potop v Google je razkril izdelek, kot je VMware Container Service Extension (CSE) – odprtokodni izdelek, ki vam omogoča avtomatizacijo ustvarjanja in določanja velikosti gruč k8s za tiste v vCloud.

Zavrnitev odgovornosti: CSE ima svoje omejitve, vendar je bil za naše namene popoln. Prav tako mora biti rešitev podprta s strani ponudnika oblaka, ker pa je tudi strežniški del odprtokoden prosite najbližjega upravitelja, da vam jo zagotovi :)

Za začetek uporabe potrebujete skrbniški račun v organizaciji vCloud in predhodno ustvarjeno usmerjeno omrežje za gručo (med postopkom uvajanja potrebujete dostop do interneta iz tega omrežja, ne pozabite konfigurirati požarnega zidu/NAT). Naslavljanje ni pomembno. V tem primeru vzemimo 10.0.240.0/24

CSE: Kubernetes za tiste v vCloud

Ker bo treba po ustvarjanju gručo nekako upravljati, je priporočljivo imeti VPN z usmerjanjem v ustvarjeno omrežje. Uporabljamo standardni SSL VPN, konfiguriran na Edge Gatewayu naše organizacije.

Nato morate namestiti odjemalca CSE, kjer bodo upravljane gruče k8s. V mojem primeru je to delujoč prenosnik in nekaj dobro skritih vsebnikov, ki poganjajo avtomatizacijo.

Odjemalec zahteva nameščen Python različice 3.7.3 in novejšo ter nameščen modul vcd-cli, torej namestimo oba.

pip3 install vcd-cli

pip3 install container-service-extension

Po namestitvi preverimo različico CSE in dobimo naslednje:

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

Nepričakovano, a popravljivo. Kot se je izkazalo, je treba CSE priklopiti kot modul na vcd-cli.
Če želite to narediti, se morate najprej prijaviti v vcd-cli v našo organizacijo:

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

Po tem bo vcd-cli ustvaril konfiguracijsko datoteko ~/.vcd-cli/profiles.yaml
Na koncu morate dodati naslednje:

extensions:
  - container_service_extension.client.cse

Nato ponovno preverimo:

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

Faza namestitve odjemalca je končana. Poskusimo razmestiti prvo gručo.
CSE ima več nizov parametrov uporabe, vse si jih je mogoče ogledati tukaj.

Najprej ustvarimo ključe za dostop brez gesla do bodoče gruče. Ta točka je pomembna, saj bo prijava z geslom v vozlišča privzeto onemogočena in če ne nastavite ključev, lahko dobite veliko dela prek konzol virtualnega stroja, kar ni priročno.

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

Poskusimo začeti ustvarjati gručo:

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

Če dobimo napako Napaka: Seja je potekla ali uporabnik ni prijavljen. Prosim ponovno se prijavite. — znova se prijavite v vcd-cli v vCloud, kot je opisano zgoraj, in poskusite znova.

Tokrat je vse v redu in naloga ustvarjanja grozda se je začela.

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

Za dokončanje naloge bo potrebnih približno 20 minut, medtem pa si poglejmo osnovne parametre zagona.

—omrežje — omrežje, ki smo ga ustvarili prej.
—ssh-key — ključi, ki smo jih ustvarili in bodo zapisani v vozlišča gruče
—nodes n — Število delovnih vozlišč v gruči. Vedno bo en mojster, to je omejitev CSE
—enable-nfs — ustvari dodatno vozlišče za skupne rabe NFS pod trajnimi nosilci. To je nekoliko podobna možnost pedala; k uglaševanju tega, kar počne, se bomo vrnili malo kasneje.

Medtem pa lahko v vCloud vizualno spremljate ustvarjanje gruče
CSE: Kubernetes za tiste v vCloud

Ko je naloga ustvarjanja gruče končana, je pripravljena za uporabo.

Preverimo pravilnost uvajanja z ukazom vcd cse informacije o gruči MyCluster

CSE: Kubernetes za tiste v vCloud

Nato moramo pridobiti konfiguracijo gruče za uporabo kubectl

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

Z njim lahko preverite stanje gruče:

CSE: Kubernetes za tiste v vCloud

Na tej točki se grozd lahko šteje za pogojno delujoč, če ne gre za zgodbo s stalnimi količinami. Ker smo v vCloudu, uporaba ponudnika vSphere ne bo delovala. Možnost --enable-nfs zasnovano tako, da bi zgladilo to nadlogo, vendar se ni povsem obneslo. Potrebna je ročna nastavitev.

Za začetek mora naše vozlišče ustvariti ločen neodvisen disk v vCloud. To zagotavlja, da naši podatki ne bodo izginili skupaj z gručo, če jo izbrišemo. Prav tako povežite disk z NFS

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

Nato gremo prek ssh (res ste ustvarili ključe?) do našega vozlišča NFS in končno povežemo disk:

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

Ustvarite imenik za podatke in vanj namestite novo particijo:

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

Ustvarimo pet testnih particij in jih delimo za gručo:

>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

Po vsej tej čarovniji lahko v našem grozdu ustvarimo PV in PVC nekaj takega:
poročevalec:

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

Tu se konča zgodba o nastanku enega grozda in začne zgodba o njegovem življenjskem ciklu. Kot bonus sta na voljo še dva uporabna ukaza CSE, ki vam omogočata, da včasih prihranite sredstva ali ne:

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

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

Hvala vsem za vaš čas, če imate kakršna koli vprašanja, vprašajte v komentarjih.

Vir: www.habr.com

Dodaj komentar