CSE: Kubernetes pro uživatele vCloud

CSE: Kubernetes pro uživatele vCloud
Ahoj všichni!

Stalo se, že se náš malý tým, neřkuli nedávno a rozhodně ne náhle, rozrostl o přesun některých (a v budoucnu všech) produktů do Kubernetes.

Bylo pro to mnoho důvodů, ale náš příběh není o holivaru.

Pokud jde o základnu infrastruktury, neměli jsme na výběr. vCloud Director a vCloud Director. Vybrali jsme si novější a rozhodli jsme se začít.

Znovu jsem při pohledu na „The Hard Way“ velmi rychle došel k závěru, že včera byl potřeba nástroj pro automatizaci alespoň základních procesů, jako je nasazení a dimenzování. Hluboký ponor do Googlu přinesl na světlo takový produkt, jako je VMware Container Service Extension (CSE) – produkt s otevřeným zdrojovým kódem, který vám umožňuje automatizovat vytváření a dimenzování clusterů k8s pro uživatele vCloud.

Upozornění: CSE má svá omezení, ale pro naše účely to bylo perfektní. Řešení také musí být podporováno poskytovatelem cloudu, ale protože serverová část je také open-source, požádejte svého nejbližšího manažera, aby ji měl k dispozici :)

Abyste ji mohli začít používat, potřebujete administrátorský účet v organizaci vCloud a dříve vytvořenou směrovanou síť pro cluster (během procesu nasazení potřebujete přístup k internetu z této sítě, nezapomeňte nakonfigurovat Firewall/NAT). Na adresování nezáleží. V tomto příkladu vezměme 10.0.240.0/24

CSE: Kubernetes pro uživatele vCloud

Jelikož po vytvoření bude potřeba cluster nějak spravovat, doporučuje se mít VPN s routováním do vytvořené sítě. Používáme standardní SSL VPN nakonfigurovanou na Edge Gateway naší organizace.

Dále musíte nainstalovat klienta CSE, kde budou spravovány clustery k8s. V mém případě se jedná o fungující notebook a pár dobře skrytých kontejnerů, které řídí automatizaci.

Klient vyžaduje nainstalovaný Python verze 3.7.3 a vyšší a nainstalovaný modul vcd-cli, takže nainstalujme oba.

pip3 install vcd-cli

pip3 install container-service-extension

Po instalaci zkontrolujeme verzi CSE a získáme následující:

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

Nečekané, ale opravitelné. Jak se ukázalo, CSE je třeba připojit jako modul k vcd-cli.
Chcete-li to provést, musíte se nejprve přihlásit vcd-cli do naší organizace:

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

Poté vcd-cli vytvoří konfigurační soubor ~/.vcd-cli/profiles.yaml
Na závěr je potřeba přidat následující:

extensions:
  - container_service_extension.client.cse

Poté znovu zkontrolujeme:

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

Fáze instalace klienta je dokončena. Zkusme nasadit první cluster.
CSE má několik sad parametrů použití, všechny je možné zobrazit zde.

Nejprve si vytvořte klíče pro přístup k budoucímu clusteru bez hesla. Tento bod je důležitý, protože ve výchozím nastavení bude přihlášení do uzlů heslem zakázáno, a pokud nenastavíte klíče, můžete získat spoustu práce prostřednictvím konzol virtuálních strojů, což není pohodlné.

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

Zkusme začít vytvářet cluster:

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

Pokud dostaneme chybu Chyba: Relace vypršela nebo uživatel není přihlášen. Prosím znovu se přihlaste. — znovu se přihlaste vcd-cli do vCloud, jak je popsáno výše, a zkuste to znovu.

Tentokrát je vše v pořádku a začal úkol vytvoření clusteru.

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

Dokončení úkolu zabere asi 20 minut, mezitím se podíváme na základní parametry spouštění.

—network — síť, kterou jsme vytvořili dříve.
—ssh-key — klíče, které jsme vytvořili a které budou zapsány do uzlů clusteru
—nodes n — Počet pracovních uzlů v clusteru. Vždy bude jeden master, to je omezení CSE
—enable-nfs — vytvořit další uzel pro sdílení NFS pod trvalými svazky. Je to trochu možnost pedálu; k ladění se vrátíme o něco později.

Mezitím ve vCloud můžete vizuálně sledovat vytváření clusteru
CSE: Kubernetes pro uživatele vCloud

Jakmile je úkol vytvoření clusteru dokončen, je připraven k použití.

Zkontrolujme si správnost nasazení příkazem vcd cse cluster informace MyCluster

CSE: Kubernetes pro uživatele vCloud

Dále musíme získat konfiguraci clusteru k použití kubectl

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

A pomocí něj můžete zkontrolovat stav clusteru:

CSE: Kubernetes pro uživatele vCloud

V tomto okamžiku lze cluster považovat za podmíněně fungující, nebýt příběhu s trvalými objemy. Protože jsme ve vCloudu, nebudeme moci používat vSphere Provider. Volba --enable-nfs navržený tak, aby tuto nepříjemnost vyhladil, ale nefungovalo to úplně. Nutné ruční nastavení.

Pro začátek musí náš uzel vytvořit samostatný nezávislý disk ve vCloud. To zaručuje, že naše data nezmizí spolu s clusterem, pokud bude smazán. Také připojte disk k NFS

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

Poté přejdeme přes ssh (vy jste opravdu vytvořili klíče?) do našeho uzlu NFS a nakonec připojíme 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

Vytvořte adresář pro data a připojte tam nový oddíl:

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

Vytvořme pět testovacích oddílů a sdílíme je pro 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

Po všech těchto kouzlech můžeme vytvořit PV a PVC v našem clusteru něco takového:
Zpravodaj:

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

Zde končí příběh vzniku jednoho shluku a začíná příběh jeho životního cyklu. Jako bonus jsou k dispozici dva další užitečné příkazy CSE, které vám někdy umožňují šetřit zdroje nebo ne:

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

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

Děkuji všem za váš čas, pokud máte nějaké dotazy, ptejte se v komentářích.

Zdroj: www.habr.com

Přidat komentář