Здраво на сите!
Се случи нашиот мал тим, да не речам дека неодамна, и секако не наеднаш, порасна да пресели некои (и во иднина сите) производи во Кубернетес.
Имаше многу причини за ова, но нашата приказна не е за холивар.
Имавме мал избор во однос на инфраструктурната база. директор на vCloud и директор на vCloud. Го избравме поновото и решивме да започнеме.
Погледнувајќи го „Тешкиот начин“ уште еднаш, многу брзо дојдов до заклучок дека вчера беше потребна алатка за автоматизирање на барем основните процеси, како што се распоредувањето и големината. Длабокото нурнување во Google изнесе на виделина таков производ како VMware Container Service Extension (CSE) - производ со отворен код кој ви овозможува да го автоматизирате создавањето и големината на кластерите k8s за оние во vCloud.
Одрекување: CSE има свои ограничувања, но за нашите цели беше совршено. Исто така, решението мора да биде поддржано од провајдерот на облакот, но бидејќи делот на серверот исто така е со отворен код, побарајте од најблискиот менаџер да го има на располагање :)
За да започнете да го користите, потребна ви е администраторска сметка во организацијата vCloud и претходно креирана рутирана мрежа за кластерот (за време на процесот на распоредување, потребен ви е пристап до Интернет од оваа мрежа, не заборавајте да го конфигурирате Firewall/NAT). Обраќањето не е важно. Во овој пример, да земеме 10.0.240.0/24
Бидејќи по креирањето, кластерот ќе треба некако да се управува, се препорачува да имате VPN со рутирање до креираната мрежа. Ние користиме стандарден SSL VPN конфигуриран на Edge Gateway на нашата организација.
Следно, треба да го инсталирате клиентот CSE каде што ќе се управуваат кластерите k8s. Во мојот случај, ова е работен лаптоп и неколку добро скриени контејнери кои водат автоматизација.
Клиентот бара инсталирана верзија на Python 3.7.3 и повисока и инсталиран модул
pip3 install vcd-cli
pip3 install container-service-extension
По инсталацијата, ја проверуваме верзијата CSE и го добиваме следново:
# vcd cse version
Error: No such command "cse".
Неочекувано, но може да се поправи. Како што се испостави, CSE треба да биде прикачен како модул на vcd-cli.
За да го направите ова, прво мора да се најавите на vcd-cli во нашата организација:
# vcd login MyCloud.provider.com org-dev admin
Password:
admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01'
После ова, vcd-cli ќе создаде конфигурациска датотека ~/.vcd-cli/profiles.yaml
На крајот треба да го додадете следново:
extensions:
- container_service_extension.client.cse
Потоа повторно проверуваме:
# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0
Фазата на инсталација на клиентот е завршена. Ајде да се обидеме да го распоредиме првиот кластер.
CSE има неколку групи на параметри за користење, сите од нив може да се видат
Прво, ајде да создадеме клучеви за пристап без лозинка до идниот кластер. Оваа точка е важна, бидејќи по дифолт, најавувањето со лозинка во јазлите ќе биде оневозможено, а ако не ги поставите клучевите, можете да добиете многу работа преку конзолите на виртуелната машина, што не е погодно.
# 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.
Ајде да се обидеме да започнеме да создаваме кластер:
vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs
Ако добиеме грешка Грешка: Сесијата е истечена или корисникот не е најавен. Ве молиме повторно најавете се. — повторно најавете се на vcd-cli на vCloud како што е опишано погоре и обидете се повторно.
Овој пат се е во ред и задачата за создавање кластер е започната.
cluster operation: Creating cluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) from template 'photon-v2_k8-1.12_weave-2.3.0' (revision 1)
Ќе бидат потребни околу 20 минути за да се заврши задачата; во меѓувреме, да ги погледнеме основните параметри за лансирање.
— мрежа — мрежата што ја создадовме порано.
—ssh-key — клучевите што ги создадовме, кои ќе бидат запишани во јазлите на кластерот
— јазли n — Број на работнички јазли во кластерот. Секогаш ќе има еден господар, ова е ограничување на CSE
—enable-nfs — креирајте дополнителен јазол за NFS акции под постојани волумени. Тоа е малку опција за педали; ќе се вратиме на подесување што прави малку подоцна.
Во меѓувреме, во vCloud можете визуелно да го следите создавањето на кластер
Откако ќе заврши задачата за создавање кластер, тој е подготвен за употреба.
Ајде да ја провериме исправноста на распоредувањето со командата vcd cse кластер информации MyCluster
Следно, треба да ја искористиме конфигурацијата на кластерот кубектел
# vcd cse cluster config MyCluster > ./.kube/config
И можете да го проверите статусот на кластерот користејќи го:
Во овој момент, кластерот може да се смета дека работи условно, ако не и за приказната со постојани волумени. Бидејќи сме во vCloud, нема да можеме да користиме vSphere Provider. Опција --овозможи-nfs дизајниран да ја израмни оваа непријатност, но не успеа целосно. Потребно е рачно прилагодување.
За почеток, нашиот јазол треба да создаде посебен независен диск во vCloud. Ова гарантира дека нашите податоци нема да исчезнат заедно со кластерот доколку се избришат. Исто така, поврзете го дискот со NFS
# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares'
# vcd vapp attach mycluster nfsd-9604 nfs-shares-1
После тоа, одиме преку ssh (навистина ги создадовте клучевите?) до нашиот NFS јазол и конечно го поврзуваме дискот:
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
Направете директориум за податоци и монтирајте нова партиција таму:
mkdir /export
echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab
mount -a
Ајде да создадеме пет тест партиции и да ги споделиме за кластерот:
>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
После сета оваа магија, можеме да создадеме PV и PVC во нашиот кластер нешто вака:
Новинар:
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
ПВЦ:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 10Gi
EOF
Тука завршува приказната за создавањето на еден кластер и започнува приказната за неговиот животен циклус. Како бонус, има уште две корисни CSE команди кои ви дозволуваат понекогаш да заштедите ресурси или не:
#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8
#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes
Ви благодариме на сите за вашето време, доколку имате какви било прашања, прашајте ги во коментарите.
Извор: www.habr.com