CSE: Kubernetes för dem i vCloud

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

Det hände så att vårt lilla team, för att inte säga det nyligen, och absolut inte plötsligt, har vuxit till att flytta några (och i framtiden alla) produkter till Kubernetes.

Det fanns många anledningar till detta, men vår berättelse handlar inte om holivar.

Vi hade lite val när det gäller infrastrukturbasen. vCloud Director och vCloud Director. Vi valde den nyare och bestämde oss för att börja.

Återigen, när jag tittade igenom "The Hard Way", kom jag mycket snabbt till slutsatsen att ett verktyg för att automatisera åtminstone grundläggande processer, såsom distribution och dimensionering, behövdes igår. En djupdykning i Google förde fram en sådan produkt som VMware Container Service Extension (CSE) – en öppen källkodsprodukt som låter dig automatisera skapandet och storleken på k8s-kluster för de i vCloud.

Ansvarsfriskrivning: CSE har sina begränsningar, men för våra ändamål var det perfekt. Lösningen måste också stödjas av molnleverantören, men eftersom serverdelen också är öppen källkod, be din närmaste chef att ha den tillgänglig :)

För att börja använda det behöver du ett administratörskonto i vCloud-organisationen och ett tidigare skapat dirigerat nätverk för klustret (under distributionsprocessen behöver du tillgång till Internet från detta nätverk, glöm inte att konfigurera Firewall/NAT). Adresseringen spelar ingen roll. I det här exemplet, låt oss ta 10.0.240.0/24

CSE: Kubernetes för dem i vCloud

Eftersom klustret efter skapandet kommer att behöva hanteras på något sätt, rekommenderas det att ha en VPN med routing till det skapade nätverket. Vi använder en standard SSL VPN konfigurerad på vår organisations Edge Gateway.

Därefter måste du installera CSE-klienten där k8s-klustren kommer att hanteras. I mitt fall är detta en fungerande bärbar dator och ett par väl dolda behållare som driver automatisering.

Klienten kräver Python version 3.7.3 och senare installerad och modulen installerad vcd-cli, så låt oss installera båda.

pip3 install vcd-cli

pip3 install container-service-extension

Efter installationen kontrollerar vi CSE-versionen och får följande:

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

Oväntat, men går att fixa. Som det visade sig måste CSE anslutas som en modul till vcd-cli.
För att göra detta måste du först logga in vcd-cli till 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 måste du lägga till följande:

extensions:
  - container_service_extension.client.cse

Sedan kollar vi igen:

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

Klientinstallationsfasen är klar. Låt oss försöka distribuera det första klustret.
CSE har flera uppsättningar användningsparametrar, alla kan ses här.

Låt oss först skapa nycklar för lösenordslös åtkomst till det framtida klustret. Denna punkt är viktig, eftersom lösenordsinloggning till noder som standard kommer att inaktiveras, och om du inte ställer in nycklarna kan du få mycket arbete genom de virtuella maskinkonsolerna, vilket inte är 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.

Låt oss försöka börja skapa ett kluster:

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 igen på vCloud enligt beskrivningen ovan och försök igen.

Den här gången är allt bra och arbetet med att skapa ett kluster har börjat.

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

Det kommer att ta cirka 20 minuter att slutföra uppgiften; under tiden, låt oss titta på de grundläggande startparametrarna.

—nätverk — nätverket vi skapade tidigare.
—ssh-key — nycklarna vi skapade, som kommer att skrivas till klusternoderna
—noder n — Antal arbetarnoder i klustret. Det kommer alltid att finnas en master, detta är en CSE-begränsning
—enable-nfs — skapa en extra nod för NFS-andelar under beständiga volymer. Det är lite av ett pedalalternativ; vi återkommer till att ställa in vad den gör lite senare.

Under tiden kan du i vCloud visuellt övervaka skapandet av ett kluster
CSE: Kubernetes för dem i vCloud

När uppgiften att skapa ett kluster är klar är den redo att användas.

Låt oss kontrollera att distributionen är korrekt med kommandot vcd cse kluster info MyCluster

CSE: Kubernetes för dem i vCloud

Därefter måste vi få klusterkonfigurationen att använda kubectl

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

Och du kan kontrollera statusen för klustret med det:

CSE: Kubernetes för dem i vCloud

Vid denna tidpunkt kan klustret anses fungera villkorligt, om inte för berättelsen med ihållande volymer. Eftersom vi är i vCloud kommer vi inte att kunna använda vSphere Provider. Alternativ --enable-nfs utformad för att jämna ut denna olägenhet, men det fungerade inte helt. Manuell justering krävs.

Till att börja med måste vår nod skapa en separat oberoende disk i vCloud. Detta garanterar att vår data inte försvinner tillsammans med klustret om den raderas. Anslut 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 det går vi via ssh (du skapade verkligen nycklarna?) till vår NFS-nod och ansluter slutligen disken:

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

Skapa en katalog för data och montera en ny partition 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
#Добавим это в конец файла
/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

Efter all denna magi kan vi skapa PV och PVC i vårt kluster ungefär så här:
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

Det är här historien om skapandet av ett kluster slutar och historien om dess livscykel börjar. Som en bonus finns det ytterligare två användbara CSE-kommandon som låter dig ibland spara resurser eller inte:

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

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

Tack alla för er tid, om ni har några frågor, fråga i kommentarerna.

Källa: will.com

Lägg en kommentar