CSE: Kubernetes барои онҳое, ки дар vCloud ҳастанд

CSE: Kubernetes барои онҳое, ки дар vCloud ҳастанд
Салом хама!

Чунин рӯй дод, ки дастаи хурди мо, нагуфтаем, ки ба наздикӣ ва албатта ногаҳон, барои интиқол додани баъзе маҳсулот (ва дар оянда ҳама) ба Кубернетес афзоиш ёфт.

Барои ин сабабҳо зиёд буданд, аммо саргузашти мо дар бораи holivar нест.

Мо дар мавриди заминаи инфрасохтор интихоби кам доштем. Директори vCloud ва Директори vCloud. Мо навтаринро интихоб кардем ва тасмим гирифтем, ки оғоз кунем.

Бори дигар, "Роҳи душвор"-ро дида, ман хеле зуд ба хулосае омадам, ки дирӯз асбоб барои автоматикунонии ҳадди аққал равандҳои асосӣ, ба монанди ҷойгиркунӣ ва андозагирӣ лозим буд. Муборизаи амиқ ба Google чунин маҳсулотро ба монанди VMware Container Service Extension (CSE) рӯшан кард - як маҳсулоти кушодаасос, ки ба шумо имкон медиҳад, ки эҷод ва андозагирии кластерҳои k8s барои онҳое, ки дар vCloud ҳастанд, автоматӣ кунед.

Радди масъулият: CSE маҳдудиятҳои худро дорад, аммо барои мақсадҳои мо он комил буд. Инчунин, ҳалли ин бояд аз ҷониби провайдери абр дастгирӣ карда шавад, аммо азбаски қисми сервер низ кушода аст, аз менеҷери наздиктарини худ хоҳиш кунед, ки онро дастрас кунад :)

Барои оғози истифодаи он, ба шумо ҳисоби администратор дар ташкилоти vCloud ва шабакаи қаблан сохташудаи масир барои кластер лозим аст (дар ҷараёни ҷойгиркунӣ ба шумо дастрасии интернет аз ин шабака лозим аст, танзим кардани Firewall/NAT-ро фаромӯш накунед). Муроҷиат муҳим нест. Дар ин мисол, биёед 10.0.240.0/24-ро гирем

CSE: Kubernetes барои онҳое, ки дар vCloud ҳастанд

Азбаски пас аз офариниш кластерро бо ягон роҳ идора кардан лозим аст, тавсия дода мешавад, ки VPN бо масир ба шабакаи сохташуда дошта бошед. Мо VPN-и стандартии SSL-ро истифода мебарем, ки дар Gateway Edge ташкилоти мо танзим шудааст.

Баъдан, шумо бояд муштарии 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 истифода барем. Варианти --enable-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

Ташаккур ба ҳама барои вақт, агар шумо ягон савол дошта бошед, дар шарҳҳо пурсед.

Манбаъ: will.com

Илова Эзоҳ