CSE: Kubernetes per quelli in vCloud

CSE: Kubernetes per quelli in vCloud
Bonghjornu ognunu!

Hè accadutu chì a nostra piccula squadra, per ùn dì chì pocu tempu, è certamente micca di colpu, hà crisciutu per trasfurmà alcuni (è in u futuru tutti) i prudutti à Kubernetes.

Ci era parechje ragioni per questu, ma a nostra storia ùn hè micca di holivar.

Avemu avutu poca scelta in quantu à a basa di l'infrastruttura. vCloud Director è vCloud Director. Avemu sceltu u più novu è decisu di principià.

Una volta di più, fighjendu à traversu "The Hard Way", aghju ghjuntu assai rapidamente à a cunclusione chì un strumentu per l'automatizazione almenu i prucessi basi, cum'è l'implementazione è u sizing, era necessariu ieri. Una immersione profonda in Google hà purtatu à a luce un tali pruduttu cum'è VMware Container Service Extension (CSE) - un pruduttu open source chì vi permette di automatizà a creazione è a dimensione di clusters k8s per quelli in vCloud.

Disclaimer: CSE hà e so limitazioni, ma per i nostri scopi era perfetta. Inoltre, a suluzione deve esse supportata da u fornitore di nuvola, ma postu chì a parte di u servitore hè ancu open-source, dumandate à u vostru manager più vicinu per avè dispunibule :)

Per cumincià à aduprà, avete bisognu di un contu amministratore in l'urganisazione vCloud è di una reta di routed creata prima per u cluster (durante u prucessu di implementazione, avete bisognu di accessu à Internet da questa reta, ùn vi scurdate di cunfigurà Firewall / NAT). L'indirizzu ùn importa micca. In questu esempiu, pigliemu 10.0.240.0/24

CSE: Kubernetes per quelli in vCloud

Siccomu dopu a creazione, u cluster hà da esse amministratu in qualchì manera, hè cunsigliatu per avè una VPN cù routing à a reta creata. Utilizemu una VPN SSL standard cunfigurata nantu à u Gateway Edge di a nostra urganizazione.

Dopu, avete bisognu di installà u cliente CSE induve i clusters k8s seranu amministrati. In u mo casu, questu hè un laptop chì funziona è un coppiu di cuntenituri ben nascosti chì guidanu l'automatizazione.

U cliente hà bisognu di a versione Python 3.7.3 è superiore installata è u modulu installatu vcd-cli, allora installemu i dui.

pip3 install vcd-cli

pip3 install container-service-extension

Dopu a stallazione, cuntrollemu a versione CSE è uttene u seguente:

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

Inaspittatu, ma riparabile. Cum'è hè risultatu, CSE deve esse attaccatu cum'è un modulu à vcd-cli.
Per fà questu, devi prima log in vcd-cli à a nostra urganizazione:

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

Dopu questu, vcd-cli creà un schedariu di cunfigurazione ~/.vcd-cli/profiles.yaml
À a fine, avete bisognu di aghjunghje i seguenti:

extensions:
  - container_service_extension.client.cse

Allora cuntrollemu di novu:

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

A fase di stallazione di u cliente hè finita. Pruvemu di implementà u primu cluster.
CSE hà parechji setti di parametri d'usu, tutti ponu esse vistu quì.

Prima, creemu chjavi per l'accessu senza password à u futuru cluster. Stu puntu hè impurtante, postu chì di manera predeterminata, u login di password à i nodi serà disattivatu, è se ùn avete micca stabilitu i chjavi, pudete ottene assai travagliu attraversu e cunsola di e macchine virtuale, chì ùn hè micca cunvenutu.

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

Pruvemu di cumincià à creà un cluster:

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

Se avemu un errore Errore: A sessione hè scaduta o l'utilizatore ùn hè micca logatu. Per piacè re-login. - torna à accede à vcd-cli à vCloud cum'è descrittu sopra è pruvate di novu.

Sta volta tuttu hè bè è u compitu di creà un cluster hà iniziatu.

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

Ci hà da piglià circa 20 minuti per compie u compitu intantu, fighjemu i paràmetri di basi di lanciamentu.

-network - a reta chì avemu creatu prima.
-ssh-key - i chjavi chì avemu creatu, chì saranu scritti à i nodi di cluster
—nodes n — Numeru di nodi Worker in u cluster. Ci sarà sempre un maestru, questu hè una limitazione CSE
-enable-nfs - crea un node supplementu per i sparte NFS sottu volumi persistenti. Hè un pocu di una opzione di pedale, avemu da vultà à tuning ciò chì faci un pocu dopu.

Intantu, in vCloud pudete monitorà visualmente a creazione di un cluster
CSE: Kubernetes per quelli in vCloud

Quandu u compitu di creà un cluster hè cumpletu, hè prestu per l'usu.

Cuntrollamu a correttezza di a implementazione cù u cumandamentu vcd cse cluster info MyCluster

CSE: Kubernetes per quelli in vCloud

Dopu avemu bisognu di ottene a cunfigurazione di u cluster per aduprà kubectl

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

È pudete verificà u statutu di u cluster usendu:

CSE: Kubernetes per quelli in vCloud

À questu puntu, u cluster pò esse cunsideratu u travagliu cundizionale, se micca per a storia cù volumi persistenti. Siccomu simu in vCloud, ùn pudemu micca aduprà vSphere Provider. Opzione --enable-nfs cuncepitu per liscia stu fastidiu, ma ùn hà micca travagliatu cumpletamente. A regulazione manuale hè necessaria.

Per cumincià, u nostru node hà bisognu di creà un discu indipendente separatu in vCloud. Questu guarantisci chì i nostri dati ùn spariranu micca cù u cluster s'ellu hè sguassatu. Inoltre, cunnette u discu à NFS

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

Dopu quì, andemu via ssh (avete veramente creatu e chjave?) à u nostru node NFS è infine cunnette u discu:

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

Crea un repertoriu per i dati è muntate una partizione fresca quì:

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

Creemu cinque partizioni di prova è sparte per u cluster:

>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

Dopu tuttu sta magia, pudemu creà PV è PVC in u nostru cluster qualcosa cum'è questu:
Reporter :

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

Hè quì chì a storia di a creazione di un cluster finisci è a storia di u so ciclu di vita principia. Cum'è un bonus, ci sò dui cumandamenti CSE più utili chì permettenu à volte di salvà risorse o micca:

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

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

Grazie à tutti per u vostru tempu, se avete qualchì quistione, dumandate in i cumenti.

Source: www.habr.com

Add a comment