CSE: Kubernetes fir déi a vCloud

CSE: Kubernetes fir déi a vCloud
Hallo jiddereen!

Et ass geschitt, datt eis kleng Equipe, net ze soen, datt viru kuerzem, a sécher net op eemol, gewuess ass fir e puer (an an Zukunft all) Produkter op Kubernetes ze plënneren.

Et ware vill Grënn dofir, awer eis Geschicht ass net iwwer Holivar.

Mir hate wéineg Wiel wat d'Infrastrukturbasis ugeet. vCloud Direkter an vCloud Direkter. Mir hunn deen neien gewielt an hunn decidéiert unzefänken.

Nodeems ech "The Hard Way" nach eng Kéier duerchgekuckt hunn, sinn ech ganz séier zur Conclusioun komm, datt gëschter en Tool fir op d'mannst Basisprozesser ze automatiséieren, wéi z. En Deep Tauche a Google huet esou e Produkt wéi VMware Container Service Extension (CSE) an d'Liicht bruecht - en Open Source Produkt deen Iech erlaabt d'Schafung an d'Gréisst vu k8s Cluster fir déi a vCloud ze automatiséieren.

Verzichterklärung: CSE huet seng Aschränkungen, awer fir eis Zwecker war et perfekt. Och muss d'Léisung vum Cloud Provider ënnerstëtzt ginn, awer well de Server Deel och Open-Source ass, frot Ären nächste Manager et verfügbar ze hunn :)

Fir et ze benotzen, braucht Dir en Administratorkonto an der vCloud Organisatioun an e virdru erstallt routert Netzwierk fir de Stärekoup (während der Deployment, braucht Dir Internetzougang vun dësem Netz, vergiesst net Firewall / NAT ze konfiguréieren). Adress ass egal. An dësem Beispill, loosst eis 10.0.240.0/24 huelen

CSE: Kubernetes fir déi a vCloud

Zënter der Schafung muss de Stärekoup iergendwéi geréiert ginn, et ass recommandéiert e VPN mat Routing op dat erstallt Netzwierk ze hunn. Mir benotzen e Standard SSL VPN konfiguréiert op der Edge Gateway vun eiser Organisatioun.

Als nächst musst Dir den CSE Client installéieren wou d'k8s Cluster geréiert ginn. A mengem Fall ass dëst e funktionnéierende Laptop an e puer gutt verstoppte Container déi d'Automatisatioun féieren.

De Client erfuerdert Python Versioun 3.7.3 a méi héich installéiert an de Modul installéiert vcd-cli, also loosst eis béid installéieren.

pip3 install vcd-cli

pip3 install container-service-extension

No der Installatioun kontrolléiere mir d'CSE Versioun a kréien déi folgend:

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

Onerwaart, awer fixéierbar. Wéi et sech erausstellt, muss CSE als Modul op vcd-cli befestegt ginn.
Fir dëst ze maachen, musst Dir als éischt vcd-cli bei eis Organisatioun aloggen:

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

Duerno wäert vcd-cli eng Konfiguratiounsdatei erstellen ~/.vcd-cli/profiles.yaml
Um Enn musst Dir déi folgend addéieren:

extensions:
  - container_service_extension.client.cse

Da kucken mir nach eng Kéier:

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

D'Clientinstallatiounsphase ass ofgeschloss. Loosst eis probéieren den éischte Cluster z'installéieren.
CSE huet verschidde Sätze vun Benotzungsparameter, all kënne gekuckt ginn hei.

Als éischt, loosst eis Schlësselen erstellen fir Passwuertlosen Zougang zum zukünftege Stärekoup. Dëse Punkt ass wichteg, well Par défaut gëtt Passwuert Login op Noden behënnert, a wann Dir d'Schlësselen net setzt, kënnt Dir vill Aarbecht duerch d'virtuell Maschinn Konsolen kréien, wat net bequem ass.

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

Loosst eis probéieren e Cluster ze kreéieren:

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

Wa mir e Feeler kréien Feeler: Sessioun ass ofgelaf oder de Benotzer ass net ageloggt. Gitt w.e.g. nei aloggen. - Loggt Iech nach eng Kéier vcd-cli op vCloud un wéi uewen beschriwwen a probéiert nach eng Kéier.

Dës Kéier ass alles gutt an d'Aufgab fir e Cluster ze kreéieren ass ugefaang.

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

Et dauert ongeféier 20 Minutten fir d'Aufgab ofzeschléissen; an der Tëschenzäit kucke mer d'Basis Startparameter.

—Network — d'Netzwierk dat mir virdru erstallt hunn.
-ssh-Schlëssel - d'Schlësselen déi mir erstallt hunn, déi an de Clusternoden geschriwwe ginn
—Nodes n — Unzuel vun den Aarbechternoden am Cluster. Et gëtt ëmmer ee Meeschter, dëst ass eng CSE Begrenzung
-enable-nfs - erstellt en zousätzleche Node fir NFS Aktien ënner persistent Bänn. Et ass e bësse vun enger Pedaloptioun; mir kommen zréck op ofstëmmen wat et e bësse méi spéit mécht.

Mëttlerweil, a vCloud kënnt Dir d'Schafung vun engem Cluster visuell iwwerwaachen
CSE: Kubernetes fir déi a vCloud

Wann d'Aufgab fir e Cluster ze kreéieren fäerdeg ass, ass et prett fir ze benotzen.

Loosst eis d'Korrektheet vum Ofbau mam Kommando iwwerpréiwen vcd cse Cluster Info MyCluster

CSE: Kubernetes fir déi a vCloud

Als nächst musse mir d'Clusterkonfiguratioun kréien fir ze benotzen kubectl

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

An Dir kënnt de Status vum Cluster kontrolléieren andeems Dir et benotzt:

CSE: Kubernetes fir déi a vCloud

Zu dësem Zäitpunkt kann de Stärekoup als bedingt funktionnéieren ugesi ginn, wann net fir d'Geschicht mat persistent Bänn. Well mir a vCloud sinn, kënne mir de vSphere Provider net benotzen. Optioun --enable-nfs entworf fir dës Nuddelen ze gläichen, awer et huet net ganz geklappt. Manuell Upassung néideg.

Fir unzefänken, muss eisen Node eng separat Onofhängeg Disk am vCloud erstellen. Dëst garantéiert datt eis Donnéeën net zesumme mam Cluster verschwannen wann se geläscht ginn. Connectéiert och den Disk op NFS

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

Duerno gi mir iwwer ssh (Dir hutt d'Schlësselen wierklech erstallt?) An eisen NFS Node a verbënnt endlech den 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

Erstellt e Verzeechnes fir Daten a montéiert eng frësch Partition do:

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

Loosst eis fënnef Testpartitionen erstellen an se fir de Cluster deelen:

>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

No all dëser Magie kënne mir PV a PVC an eisem Cluster esou eppes erstellen:
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

Dëst ass wou d'Geschicht vun der Schafung vun engem Stärekoup endet an d'Geschicht vu sengem Liewenszyklus fänkt un. Als Bonus ginn et zwee méi nëtzlech CSE Kommandoen déi Iech erlaben heiansdo Ressourcen ze spueren oder net:

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

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

Merci all fir Är Zäit, wann Dir Froen hutt, frot Iech an de Kommentarer.

Source: will.com

Setzt e Commentaire