CSE: vCloud-da bo'lganlar uchun Kubernetes

CSE: vCloud-da bo'lganlar uchun Kubernetes
Hammaga salom!

Shunday bo'ldiki, bizning kichik jamoamiz, yaqinda va, albatta, birdaniga emas, ba'zi mahsulotlarni (va kelajakda hammasini) Kubernetesga ko'chirish uchun o'sdi.

Buning sabablari ko'p edi, ammo bizning hikoyamiz holivar haqida emas.

Infratuzilma bazasi borasida bizda kam tanlov bor edi. vCloud direktori va vCloud direktori. Biz yangisini tanladik va boshlashga qaror qildik.

Yana bir bor, "Qiyin yo'l" ni ko'rib chiqib, men kecha hech bo'lmaganda asosiy jarayonlarni, masalan, joylashtirish va o'lchamlarni avtomatlashtirish uchun vosita kerak degan xulosaga keldim. Google-ga chuqur kirib borish VMware Container Service Extension (CSE) kabi mahsulotni yoritib berdi - bu vCloud-dagilar uchun k8s klasterlarini yaratish va o'lchamlarini avtomatlashtirish imkonini beruvchi ochiq kodli mahsulot.

Rad etish: CSE o'z cheklovlariga ega, ammo bizning maqsadlarimiz uchun u mukammal edi. Bundan tashqari, yechim bulutli provayder tomonidan qo'llab-quvvatlanishi kerak, ammo server qismi ham ochiq manba bo'lganligi sababli, eng yaqin menejeringizdan uni mavjud bo'lishini so'rang :)

Uni ishlatishni boshlash uchun sizga vCloud tashkilotida administrator hisobi va klaster uchun oldindan yaratilgan yo'naltirilgan tarmoq kerak bo'ladi (o'rnatish jarayonida sizga ushbu tarmoqdan Internetga kirish kerak, xavfsizlik devori/NATni sozlashni unutmang). Manzil muhim emas. Ushbu misolda 10.0.240.0/24 ni olaylik

CSE: vCloud-da bo'lganlar uchun Kubernetes

Yaratilgandan so'ng, klaster qandaydir tarzda boshqarilishi kerak bo'lganligi sababli, yaratilgan tarmoqqa yo'naltirilgan VPN-ga ega bo'lish tavsiya etiladi. Biz tashkilotimizning Edge Gateway-da sozlangan standart SSL VPN-dan foydalanamiz.

Keyinchalik, k8s klasterlari boshqariladigan CSE mijozini o'rnatishingiz kerak. Mening holimda, bu ishlaydigan noutbuk va avtomatlashtirishni boshqaradigan bir nechta yaxshi yashirin konteynerlar.

Mijoz uchun Python 3.7.3 va undan yuqori versiyalari o'rnatilgan va modul o'rnatilgan bo'lishi kerak vcd-cli, shuning uchun ikkalasini ham o'rnatamiz.

pip3 install vcd-cli

pip3 install container-service-extension

O'rnatishdan so'ng biz CSE versiyasini tekshiramiz va quyidagilarni olamiz:

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

Kutilmagan, ammo tuzatish mumkin. Ma'lum bo'lishicha, CSE vcd-cli-ga modul sifatida biriktirilishi kerak.
Buning uchun avval tashkilotimizga vcd-cli tizimiga kirishingiz kerak:

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

Shundan so'ng vcd-cli konfiguratsiya faylini yaratadi ~/.vcd-cli/profiles.yaml
Oxirida siz quyidagilarni qo'shishingiz kerak:

extensions:
  - container_service_extension.client.cse

Keyin yana tekshiramiz:

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

Mijozni o'rnatish bosqichi tugallandi. Keling, birinchi klasterni joylashtirishga harakat qilaylik.
CSE bir nechta foydalanish parametrlariga ega, ularning barchasini ko'rish mumkin Bu erda.

Birinchidan, kelajakdagi klasterga parolsiz kirish uchun kalitlarni yarataylik. Bu nuqta juda muhim, chunki sukut bo'yicha tugunlarga parol bilan kirish o'chirib qo'yiladi va agar siz kalitlarni o'rnatmasangiz, virtual mashina konsollari orqali juda ko'p ishlarni bajarishingiz mumkin, bu qulay emas.

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

Keling, klaster yaratishni boshlaylik:

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

Agar biz xato qilsak Xato: seans muddati tugagan yoki foydalanuvchi tizimga kirmagan. Iltimos, qayta kiring. — yuqorida tavsiflanganidek vcd-cli-ga yana vCloud-ga kiring va qaytadan urinib ko'ring.

Bu safar hammasi yaxshi va klaster yaratish vazifasi boshlandi.

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

Vazifani bajarish uchun taxminan 20 daqiqa vaqt ketadi, shu bilan birga, ishga tushirishning asosiy parametrlarini ko'rib chiqaylik.

—tarmoq — biz avval yaratgan tarmoq.
—ssh-key — biz yaratgan kalitlar, ular klaster tugunlariga yoziladi
—tugunlar n — Klasterdagi ishchi tugunlar soni. Har doim bitta usta bo'ladi, bu CSE cheklovidir
—enable-nfs — doimiy hajmlar ostida NFS aktsiyalari uchun qo'shimcha tugun yarating. Bu biroz pedal varianti; biz uning nima qilishini birozdan keyin sozlashga qaytamiz.

Shu bilan birga, vCloud-da siz klaster yaratilishini vizual ravishda kuzatishingiz mumkin
CSE: vCloud-da bo'lganlar uchun Kubernetes

Klaster yaratish vazifasi bajarilgandan so'ng u foydalanishga tayyor.

Buyruq bilan joylashtirishning to'g'riligini tekshiramiz vcd cse klaster ma'lumotlari MyCluster

CSE: vCloud-da bo'lganlar uchun Kubernetes

Keyinchalik foydalanish uchun klaster konfiguratsiyasini olishimiz kerak kubectl

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

Va siz undan foydalanib klaster holatini tekshirishingiz mumkin:

CSE: vCloud-da bo'lganlar uchun Kubernetes

Hozirgi vaqtda klasterni shartli ravishda ishlaydigan deb hisoblash mumkin, agar doimiy hajmli hikoya bo'lmasa. Biz vCloud-da bo'lganimiz sababli, vSphere Provider-dan foydalana olmaymiz. Variant --enable-nfs bu noqulaylikni yumshatish uchun mo'ljallangan, ammo u to'liq ishlamadi. Qo'lda sozlash talab qilinadi.

Boshlash uchun bizning tugunimiz vCloud-da alohida Mustaqil disk yaratishi kerak. Bu bizning ma'lumotlarimiz o'chirilsa, klaster bilan birga yo'qolib ketmasligini kafolatlaydi. Bundan tashqari, diskni NFS ga ulang

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

Shundan so'ng, biz ssh orqali (siz haqiqatan ham kalitlarni yaratdingizmi?) NFS tugunimizga o'tamiz va nihoyat diskni ulaymiz:

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

Ma'lumotlar uchun katalog yarating va u erda yangi bo'limni o'rnating:

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

Keling, beshta sinov bo'limini yaratamiz va ularni klaster uchun baham ko'ramiz:

>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

Bu sehrdan keyin biz klasterimizda PV va PVXni shunday yaratishimiz mumkin:
Muxbir:

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

PVX:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 10Gi
EOF

Bu erda bitta klasterning yaratilishi haqidagi hikoya tugaydi va uning hayot aylanishi hikoyasi boshlanadi. Bonus sifatida yana ikkita foydali CSE buyruqlari mavjud bo'lib, ular ba'zan resurslarni tejashga imkon beradi yoki yo'q:

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

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

Vaqtingiz uchun barchangizga rahmat, agar sizda biron bir savol bo'lsa, sharhlarda so'rang.

Manba: www.habr.com

a Izoh qo'shish