CSE: Kubernetes para sa mga nasa vCloud

CSE: Kubernetes para sa mga nasa vCloud
Kumusta sa lahat!

Nagkataon na ang aming maliit na koponan, hindi para sabihin na kamakailan, at tiyak na hindi biglaan, ay lumago upang ilipat ang ilan (at sa hinaharap lahat) mga produkto sa Kubernetes.

Maraming mga dahilan para dito, ngunit ang aming kuwento ay hindi tungkol sa holivar.

Mayroon kaming maliit na pagpipilian tungkol sa base ng imprastraktura. vCloud Director at vCloud Director. Pinili namin ang mas bago at nagpasyang magsimula.

Muli, sa pagtingin sa "Ang Mahirap na Daan," napakabilis kong naisip na ang isang tool para sa pag-automate ng hindi bababa sa mga pangunahing proseso, tulad ng pag-deploy at sizing, ay kailangan kahapon. Ang malalim na pagsisid sa Google ay nagbigay-liwanag sa isang produkto gaya ng VMware Container Service Extension (CSE) - isang open source na produkto na nagbibigay-daan sa iyong i-automate ang paggawa at pag-size ng mga k8s cluster para sa mga nasa vCloud.

Disclaimer: Ang CSE ay may mga limitasyon, ngunit para sa aming mga layunin ito ay perpekto. Gayundin, ang solusyon ay dapat na suportado ng cloud provider, ngunit dahil ang bahagi ng server ay open-source din, hilingin sa iyong pinakamalapit na manager na magkaroon ito ng available :)

Upang simulan ang paggamit nito, kailangan mo ng isang administrator account sa vCloud na organisasyon at isang naunang nilikha na naka-ruta na network para sa cluster (sa panahon ng proseso ng pag-deploy, kailangan mo ng Internet access mula sa network na ito, huwag kalimutang i-configure ang Firewall/NAT). Ang pag-address ay hindi mahalaga. Sa halimbawang ito, kunin natin ang 10.0.240.0/24

CSE: Kubernetes para sa mga nasa vCloud

Dahil pagkatapos ng paglikha, ang kumpol ay kailangang pamahalaan kahit papaano, inirerekomenda na magkaroon ng VPN na may pagruruta sa nilikhang network. Gumagamit kami ng karaniwang SSL VPN na na-configure sa Edge Gateway ng aming organisasyon.

Susunod, kailangan mong i-install ang CSE client kung saan pamamahalaan ang mga k8s cluster. Sa aking kaso, ito ay isang gumaganang laptop at isang pares ng mahusay na nakatagong mga lalagyan na nagtutulak ng automation.

Ang kliyente ay nangangailangan ng bersyon ng Python 3.7.3 at mas mataas na naka-install at naka-install ang module vcd-cli, kaya i-install natin pareho.

pip3 install vcd-cli

pip3 install container-service-extension

Pagkatapos ng pag-install, sinusuri namin ang bersyon ng CSE at makuha ang sumusunod:

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

Hindi inaasahan, ngunit naaayos. Tulad ng nangyari, ang CSE ay kailangang ilakip bilang isang module sa vcd-cli.
Upang gawin ito, kailangan mo munang mag-log in sa vcd-cli sa aming organisasyon:

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

Pagkatapos nito, gagawa ang vcd-cli ng configuration file ~/.vcd-cli/profiles.yaml
Sa dulo kailangan mong idagdag ang sumusunod:

extensions:
  - container_service_extension.client.cse

Pagkatapos suriin namin muli:

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

Nakumpleto ang yugto ng pag-install ng kliyente. Subukan nating i-deploy ang unang cluster.
Ang CSE ay may ilang hanay ng mga parameter ng paggamit, lahat ng mga ito ay maaaring matingnan dito.

Una, gumawa tayo ng mga key para sa walang password na access sa hinaharap na cluster. Ang puntong ito ay mahalaga, dahil bilang default, ang pag-login ng password sa mga node ay hindi pinagana, at kung hindi mo itatakda ang mga susi, maaari kang makakuha ng maraming trabaho sa pamamagitan ng mga virtual machine console, na hindi maginhawa.

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

Subukan nating simulan ang paglikha ng isang kumpol:

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

Kung nagkakamali tayo Error: Nag-expire na ang session o hindi naka-log in ang user. Mangyaring muling mag-log in. β€” muling mag-log in vcd-cli sa vCloud gaya ng inilarawan sa itaas at subukang muli.

Sa pagkakataong ito ay maayos na ang lahat at nagsimula na ang gawain ng paglikha ng isang kumpol.

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

Aabutin ng humigit-kumulang 20 minuto upang makumpleto ang gawain; samantala, tingnan natin ang mga pangunahing parameter ng paglulunsad.

β€”network β€” ang network na ginawa namin kanina.
β€”ssh-key β€” ang mga key na ginawa namin, na isusulat sa mga cluster node
β€”nodes n β€” Bilang ng Worker node sa cluster. Palaging may isang master, ito ay isang limitasyon ng CSE
β€”enable-nfs β€” lumikha ng karagdagang node para sa mga pagbabahagi ng NFS sa ilalim ng patuloy na dami. Ito ay isang maliit na opsyon sa pedal; babalik tayo sa pag-tune kung ano ang ginagawa nito sa ibang pagkakataon.

Samantala, sa vCloud maaari mong biswal na masubaybayan ang paglikha ng isang kumpol
CSE: Kubernetes para sa mga nasa vCloud

Kapag nakumpleto na ang gawain ng paglikha ng isang cluster, handa na itong gamitin.

Suriin natin ang kawastuhan ng deployment gamit ang command vcd cse cluster info MyCluster

CSE: Kubernetes para sa mga nasa vCloud

Susunod, kailangan nating makuha ang configuration ng kumpol upang magamit kubectl

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

At maaari mong suriin ang katayuan ng kumpol gamit ito:

CSE: Kubernetes para sa mga nasa vCloud

Sa puntong ito, ang kumpol ay maaaring ituring na may kondisyong gumagana, kung hindi para sa kuwentong may patuloy na dami. Dahil nasa vCloud kami, hindi namin magagamit ang vSphere Provider. Pagpipilian --enable-nfs idinisenyo upang patahimikin ang istorbo na ito, ngunit hindi ito ganap na nagtagumpay. Kinakailangan ang manu-manong pagsasaayos.

Upang magsimula, ang aming node ay kailangang lumikha ng isang hiwalay na Independent disk sa vCloud. Tinitiyak nito na hindi mawawala ang aming data kasama ng cluster kung tatanggalin ito. Gayundin, ikonekta ang disk sa NFS

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

Pagkatapos nito, pumunta kami sa pamamagitan ng ssh (ginawa mo talaga ang mga susi?) sa aming NFS node at sa wakas ay ikonekta ang 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

Lumikha ng isang direktoryo para sa data at mag-mount ng isang bagong partition doon:

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

Gumawa tayo ng limang test partition at ibahagi ang mga ito para sa 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

Matapos ang lahat ng mahika na ito, maaari tayong lumikha ng PV at PVC sa ating kumpol na tulad nito:
Tagapagbalita:

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

Dito nagtatapos ang kwento ng paglikha ng isang kumpol at nagsimula ang kwento ng ikot ng buhay nito. Bilang isang bonus, mayroong dalawang mas kapaki-pakinabang na CSE command na nagbibigay-daan sa iyo na minsan ay mag-save ng mga mapagkukunan o hindi:

#Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ кластСра Π΄ΠΎ 8 Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π½ΠΎΠ΄
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8

#Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½ΠΎΠ΄Ρ‹ ΠΈΠ· кластСра с ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ
>vcd cse node delete MyCluster node-1a2v node-6685 --yes

Salamat sa lahat para sa iyong oras, kung mayroon kang anumang mga katanungan, magtanong sa mga komento.

Pinagmulan: www.habr.com

Magdagdag ng komento