CSE: Kubernetes foar dyjingen yn vCloud

CSE: Kubernetes foar dyjingen yn vCloud
Hello everyone!

It barde sa dat ús lytse team, om net te sizzen dat koartlyn, en seker net ynienen, útgroeid is om guon (en yn 'e takomst alle) produkten nei Kubernetes te ferpleatsen.

D'r wiene in protte redenen foar dit, mar ús ferhaal giet net oer holivar.

Wy hiene net folle kar oangeande de ynfrastruktuerbasis. vCloud Director en vCloud Director. Wy keas de nijere en besletten om te begjinnen.

Nochris, troch "The Hard Way" te sjen, kaam ik heul gau ta de konklúzje dat juster in ark nedich wie foar it automatisearjen fan op syn minst basisprosessen, lykas ynset en maatwurk. In djippe dûk yn Google brocht sa'n produkt oan it ljocht as VMware Container Service Extension (CSE) - in iepen boarne-produkt wêrmei jo it oanmeitsjen en grutte fan k8s-klusters kinne automatisearje foar dyjingen yn vCloud.

Disclaimer: CSE hat syn beheiningen, mar foar ús doelen wie it perfekt. De oplossing moat ek wurde stipe troch de wolkprovider, mar om't it serverdiel ek iepen boarne is, freegje jo neiste manager om it beskikber te hawwen :)

Om it te brûken, hawwe jo in behearderakkount nedich yn 'e vCloud-organisaasje en in earder oanmakke routed netwurk foar it kluster (yn it ynsetproses hawwe jo ynternettagong nedich fan dit netwurk, ferjit net om Firewall / NAT te konfigurearjen). Adressearring makket neat út. Litte wy yn dit foarbyld 10.0.240.0/24 nimme

CSE: Kubernetes foar dyjingen yn vCloud

Sûnt nei oanmeitsjen sil it kluster op ien of oare manier moatte wurde beheard, is it oan te rieden om in VPN te hawwen mei routing nei it oanmakke netwurk. Wy brûke in standert SSL VPN konfigureare op 'e Edge Gateway fan ús organisaasje.

Dêrnei moatte jo de CSE-kliïnt ynstallearje wêr't de k8s-klusters wurde beheard. Yn myn gefal is dit in wurkjende laptop en in pear goed ferburgen konteners dy't automatisearring oandriuwe.

De kliïnt fereasket Python ferzje 3.7.3 en heger ynstalleare en de module ynstalleare vcd-cli, dus litte wy beide ynstallearje.

pip3 install vcd-cli

pip3 install container-service-extension

Nei ynstallaasje kontrolearje wy de CSE-ferzje en krije it folgjende:

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

Unferwachte, mar fixable. As it die bliken, moat CSE wurde taheakke as in module oan vcd-cli.
Om dit te dwaan, moatte jo earst vcd-cli oanmelde by ús organisaasje:

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

Hjirnei sil vcd-cli in konfiguraasjetriem oanmeitsje ~/.vcd-cli/profiles.yaml
Oan 'e ein moatte jo it folgjende tafoegje:

extensions:
  - container_service_extension.client.cse

Dan kontrolearje wy nochris:

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

De client ynstallaasje faze is foltôge. Litte wy besykje it earste kluster yn te setten.
CSE hat ferskate sets gebrûksparameters, allegear kinne wurde besjoen hjir.

Litte wy earst kaaien meitsje foar wachtwurdleaze tagong ta it takomstige kluster. Dit punt is wichtich, om't standert ynlogge mei wachtwurd nei knopen wurdt útskeakele, en as jo de kaaien net ynstelle, kinne jo in protte wurk krije fia de firtuele masine-konsoles, wat net handich is.

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

Litte wy besykje in kluster te meitsjen:

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

As wy krije in flater Flater: sesje is ferrûn of brûker is net oanmeld. Graach opnij oanmelde. - opnij oanmelde vcd-cli by vCloud lykas hjirboppe beskreaun en besykje it nochris.

Dizze kear is alles goed en is de taak fan it meitsjen fan in kluster begûn.

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

It sil sawat 20 minuten duorje om de taak te foltôgjen; litte wy yn 'e tuskentiid nei de basisstartparameters sjen.

-netwurk - it netwurk dat wy earder makke hawwe.
-ssh-key - de kaaien dy't wy makke hawwe, dy't sille wurde skreaun nei de klusterknooppunten
-knooppunten n - Oantal Worker-knooppunten yn it kluster. D'r sil altyd ien master wêze, dit is in CSE-beheining
-enable-nfs - meitsje in ekstra knooppunt foar NFS-oandielen ûnder persistente folumes. It is in bytsje fan in pedaalopsje; wy sille in bytsje letter weromkomme op it ôfstimmen fan wat it docht.

Underwilens kinne jo yn vCloud de skepping fan in kluster fisueel kontrolearje
CSE: Kubernetes foar dyjingen yn vCloud

Sadree't de taak fan it meitsjen fan in kluster is foltôge, is it klear foar gebrûk.

Litte wy de krektens fan 'e ynset kontrolearje mei it kommando vcd cse klusterynfo MyCluster

CSE: Kubernetes foar dyjingen yn vCloud

Folgjende moatte wy de klusterkonfiguraasje krije om te brûken kubectl

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

En jo kinne de status fan it kluster kontrolearje mei it:

CSE: Kubernetes foar dyjingen yn vCloud

Op dit punt kin it kluster beskôge wurde as betingst wurkjend, as net foar it ferhaal mei oanhâldende bondels. Sûnt wy yn vCloud binne, kinne wy ​​vSphere Provider net brûke. Opsje --enable-nfs ûntwurpen om glêd út dizze oerlêst, mar it slagge net hielendal. Hânlieding oanpassing nedich.

Om te begjinnen, moat ús knooppunt in aparte Unôfhinklike skiif meitsje yn vCloud. Dit garandearret dat ús gegevens net ferdwine tegearre mei it kluster as it wurdt wiske. Ferbine ek de skiif oan NFS

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

Dêrnei geane wy ​​fia ssh (jo hawwe de kaaien echt makke?) nei ús NFS-knooppunt en ferbine úteinlik de skiif:

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

Meitsje in map foar gegevens en montearje dêr in nije partysje:

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

Litte wy fiif testpartysjes oanmeitsje en se diele foar it kluster:

>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

Nei al dizze magy kinne wy ​​PV en PVC oanmeitsje yn ús kluster sa'n ding:
Ferslachjouwer:

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

Dit is wêr't it ferhaal fan 'e skepping fan ien kluster einiget en it ferhaal fan syn libbenssyklus begjint. As bonus binne d'r noch twa nuttige CSE-kommando's wêrmei jo soms boarnen kinne bewarje of net:

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

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

Tankewol allegear foar jo tiid, as jo fragen hawwe, freegje dan yn 'e kommentaren.

Boarne: www.habr.com

Add a comment