CSE: Kubernetes för dem som Àr i vCloud

CSE: Kubernetes för dem som Àr i vCloud
Hej alla!

Det har blivit sÄ att vÄrt lilla team, inte sÀrskilt nyligen och definitivt inte plötsligt, har vuxit till sig för att flytta vissa (och i framtiden alla) produkter till Kubernetes.

Det fanns mÄnga orsaker till detta, men vÄr historia handlar inte om kontroverser.

Som infrastruktur hade vi ett begrÀnsat val. vCloud Director och vCloud Director. Vi valde den nyare versionen och bestÀmde oss för att börja.

NĂ€r jag Ă„terigen blĂ€ddrade igenom "The Hard Way" kom jag snabbt fram till att ett verktyg för att automatisera Ă„tminstone grundlĂ€ggande processer, som deployment och sizing, behövdes igĂ„r. En djupdykning i Google visade ett produkt som VMware Container Service Extension (CSE) – en öppen kĂ€llkodsprodukt som möjliggör automatisering av skapandet och sizing av k8s-kluster för dem som Ă€r i vCloud.

Disclaimer: CSE har sina begrĂ€nsningar, men för vĂ„ra Ă€ndamĂ„l passade den perfekt. Lösningen mĂ„ste ocksĂ„ stödjas av molnleverantören, men eftersom serverdelen ocksĂ„ Ă€r öppen kĂ€llkod, begĂ€r dess existens hos den nĂ€rmaste managern 🙂

För att börja anvÀnda det krÀvs ett administratörskonto inom vCloud-organisationen och en förhandskonfigurerad routed-nÀtverk för klustret (under deployment-processen krÀvs internetÄtkomst frÄn detta nÀtverk, glöm inte att stÀlla in brandvÀgg/NAT). Adresseringen Àr inte viktig. I detta exempel tar vi 10.0.240.0/24.

CSE: Kubernetes för dem som Àr i vCloud

Eftersom klustret mÄste hanteras efter skapandet rekommenderas en VPN med routing till det skapade nÀtverket. Vi anvÀnder en standard SSL-VPN, konfigurerad pÄ Edge Gateway i vÄr organisation.

DÀrefter mÄste CSE-klienten installeras dÀrifrÄn kluster k8s kommer att hanteras. I mitt fall Àr detta en arbetslaptop och ett par vÀl gömda containrar som kontrollerar automatiseringen.

Klienten krÀver att Python version 3.7.3 eller högre och modulen vcd-climÄste vara installerade, sÄ vi installerar bÄda.

pip3 install vcd-cli

pip3 install container-service-extension

Efter installationen kontrollerar vi versionen av CSE och fÄr följande:

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

Överraskande, men fixbart. Det visade sig att CSE mĂ„ste kopplas som en modul till vcd-cli.
För detta mÄste vi först logga in pÄ vcd-cli i vÄr organisation:

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

Efter detta kommer vcd-cli att skapa en konfigurationsfil ~/ .vcd-cli / profiles.yaml
I slutet av denna fil mÄste följande lÀggas till:

extensions:
  - container_service_extension.client.cse

DĂ€refter kontrollerar vi igen:

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

Klientinstallationen Àr avslutad. LÄt oss försöka implementera den första klustret.
CSE har flera uppsÀttningar av anvÀndarinstÀllningar, som alla kan ses. hÀr.

Först skapar vi nycklar för lösenordsfri Ätkomst till det framtida klustret. Det hÀr Àr viktigt eftersom lösenordsinloggning till noderna Àr inaktiverad som standard, och om nycklarna inte anges kan man behöva göra mycket arbete via konsolen för de virtuella maskinerna, vilket inte Àr sÀrskilt bekvÀmt.

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

Vi försöker starta skapandet av klustret:

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

Om vi fĂ„r ett fel: Fel: Sessionen har löpt ut eller anvĂ€ndaren Ă€r inte inloggad. VĂ€nligen logga in igen. — logga in vcd-cli i vCloud igen som beskrivs ovan och försök pĂ„ nytt.

Den hÀr gÄngen gick allt bra och skapandet av klustret startade.

klusteroperation: Skapar kluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) frÄn mall 'photon-v2_k8-1.12_weave-2.3.0' (revision 1)

Det tar cirka 20 minuter att slutföra uppgiften, under tiden gÄr vi igenom de grundlÀggande startparametrarna.

—network — det nĂ€tverk vi skapade tidigare.
—ssh-key — de nycklar vi skapade, som kommer att skrivas till nodernas kluster.
—nodes n — Antal Worker-noder i klustret. Det kommer alltid att vara en master, detta Ă€r CSE:s begrĂ€nsning.
—enable-nfs — skapa en extra nod för NFS-delning för bestĂ€ndiga volymer. En lite avancerad alternativ, som vi kommer att Ă„terkomma till senare.

Under tiden kan vi visuellt observera skapandet av klustret i vCloud.
CSE: Kubernetes för dem som Àr i vCloud

SÄ snart klustrets skapande Àr klart Àr det redo för anvÀndning.

LÄt oss kontrollera korrektheten i distributionen med kommandot: vcd cse cluster info MyCluster

CSE: Kubernetes för dem som Àr i vCloud

DÀrefter mÄste vi fÄ klusterkonfigurationen för anvÀndning. kubectl

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

Och vi kan kontrollera klustrets tillstÄnd med hjÀlp av den:

CSE: Kubernetes för dem som Àr i vCloud

Vid detta tillfĂ€lle kan klustret anses vara villkorligt aktivt, om det inte vore för historien om bestĂ€ndiga volymer. Eftersom vi Ă€r i vCloud gĂ„r det inte att anvĂ€nda vSphere-leverantören. Alternativet —enable-nfs Ă€r avsedd att mildra detta problem, men det har inte helt lyckats. Manuell efterkonfiguration krĂ€vs.

Först mÄste vÄr nod skapa en separat oberoende disk i vCloud. Detta garanterar att vÄra data inte försvinner tillsammans med klustret om det raderas. Vi kopplar ocksÄ disken till NFS.

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

Efter detta gÄr vi via ssh (du har vÀl skapat nycklar?) till vÄr NFS-nod och kopplar slutgiltigt disken:

root@nfsd-9604:~# parted /dev/sdb
(parted) mklabel gpt
Varning: Den befintliga disklabeln pÄ /dev/sdb kommer att raderas och all data pÄ denna disk kommer att gÄ förlorad. Vill du fortsÀtta?
Ja/Nej? ja
(parted) unit GB
(parted) mkpart primary 0 100
(parted) print
Modell: VMware Virtual disk (scsi)
Disk /dev/sdb: 100GB
Sektorstorlek (logisk/fysisk): 512B/512B
Partitionstabell: gpt
Diskflaggor:

Nummer  Start   Slut    Storlek   Filtyp  Namn     Flaggor
 1      0.00GB  100GB  100GB               primary

(parted) quit
root@nfsd-9604:~# mkfs -t ext4 /dev/sdb1
Skapar filsystem med 24413696 4k block och 6111232 inoder
Filsystem UUID: 8622c0f5-4044-4ebf-95a5-0372256b34f0
Superblock backups lagrade pÄ block:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424, 20480000, 23887872

Allokerar grupptabeller: klart
Skriver inodetabeller: klart
Skapar journal (32768 block): klart
Skriver superblock och filsystemredovisningsinformation: klart

Skapar en katalog för data och monterar den nya partitionen dÀr:

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

LÄt oss skapa fem testpartitioner och dela dem för klustret:

>cd /export
>mkdir vol1 vol2 vol3 vol4 vol5
>vi /etc/exports
#LĂ€gg till detta i slutet av filen
/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! ;)
#DĂ€refter - exportera partitionerna
>exportfs -r

Efter all denna magi kan vi skapa PV och PVC i vÄrt kluster pÄ ungefÀr detta sÀtt:
PV:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: nfs-vol1
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  nfs:
    # Samma IP som NFS-vÀrden vi ssh:ade till tidigare.
    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

PÄ detta sÀtt avslutas historien om skapandet av ett kluster och historien om dess livscykel börjar. Som en bonus - ytterligare tvÄ anvÀndbara CSE-kommandon som ibland kan spara resurser ganska bra eller inte:

#ĐŁĐČДлОчОĐČĐ°Đ”ĐŒ Ń€Đ°Đ·ĐŒĐ”Ń€ ĐșластДра ĐŽĐŸ 8 ĐČĐŸŃ€ĐșДр ĐœĐŸĐŽ
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8

#ВыĐČĐŸĐŽĐžĐŒ ĐœĐ”ĐœŃƒĐ¶ĐœŃ‹Đ” ĐœĐŸĐŽŃ‹ Оз ĐșластДра с ох ĐżĐŸŃĐ»Đ”ĐŽŃƒŃŽŃ‰ĐžĐŒ ŃƒĐŽĐ°Đ»Đ”ĐœĐžĐ”ĐŒ
>vcd cse node delete MyCluster node-1a2v node-6685 --yes

Tack för er tid, om ni har frÄgor - stÀll dem i kommentarerna.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster