CSE: Kubernetes за оние во vCloud

CSE: Kubernetes за оние во vCloud
Здраво на сите!

Се случи нашиот мал тим, да не речам дека неодамна, и секако не наеднаш, порасна да пресели некои (и во иднина сите) производи во Кубернетес.

Имаше многу причини за ова, но нашата приказна не е за холивар.

Имавме мал избор во однос на инфраструктурната база. директор на vCloud и директор на vCloud. Го избравме поновото и решивме да започнеме.

Погледнувајќи го „Тешкиот начин“ уште еднаш, многу брзо дојдов до заклучок дека вчера беше потребна алатка за автоматизирање на барем основните процеси, како што се распоредувањето и големината. Длабокото нурнување во Google изнесе на виделина таков производ како VMware Container Service Extension (CSE) - производ со отворен код кој ви овозможува да го автоматизирате создавањето и големината на кластерите k8s за оние во vCloud.

Одрекување: CSE има свои ограничувања, но за нашите цели беше совршено. Исто така, решението мора да биде поддржано од провајдерот на облакот, но бидејќи делот на серверот исто така е со отворен код, побарајте од најблискиот менаџер да го има на располагање :)

За да започнете да го користите, потребна ви е администраторска сметка во организацијата vCloud и претходно креирана рутирана мрежа за кластерот (за време на процесот на распоредување, потребен ви е пристап до Интернет од оваа мрежа, не заборавајте да го конфигурирате Firewall/NAT). Обраќањето не е важно. Во овој пример, да земеме 10.0.240.0/24

CSE: Kubernetes за оние во vCloud

Бидејќи по креирањето, кластерот ќе треба некако да се управува, се препорачува да имате VPN со рутирање до креираната мрежа. Ние користиме стандарден SSL VPN конфигуриран на Edge Gateway на нашата организација.

Следно, треба да го инсталирате клиентот CSE каде што ќе се управуваат кластерите k8s. Во мојот случај, ова е работен лаптоп и неколку добро скриени контејнери кои водат автоматизација.

Клиентот бара инсталирана верзија на Python 3.7.3 и повисока и инсталиран модул vcd-cli, па ајде да ги инсталираме и двете.

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 можете визуелно да го следите создавањето на кластер
CSE: Kubernetes за оние во vCloud

Откако ќе заврши задачата за создавање кластер, тој е подготвен за употреба.

Ајде да ја провериме исправноста на распоредувањето со командата vcd cse кластер информации MyCluster

CSE: Kubernetes за оние во vCloud

Следно, треба да ја искористиме конфигурацијата на кластерот кубектел

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

И можете да го проверите статусот на кластерот користејќи го:

CSE: Kubernetes за оние во vCloud

Во овој момент, кластерот може да се смета дека работи условно, ако не и за приказната со постојани волумени. Бидејќи сме во 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

Додадете коментар