CSE. Kubernetes vCloud-ում գտնվողների համար

CSE. Kubernetes vCloud-ում գտնվողների համար
Hello everyone!

Այնպես եղավ, որ մեր փոքր թիմը, չասեմ, որ վերջերս, և, իհարկե, ոչ հանկարծակի, աճել է, որպեսզի որոշ (և ապագայում բոլոր) ապրանքները տեղափոխվեն Kubernetes:

Սրա պատճառները շատ էին, բայց մեր պատմությունը հոլիվարի մասին չէ։

Մենք քիչ ընտրություն ունեինք ենթակառուցվածքի բազայի հետ կապված։ vCloud Director և vCloud Director: Ընտրեցինք ավելի նորը և որոշեցինք սկսել։

Մեկ անգամ ևս, նայելով «Դժվար ճանապարհին», ես շատ արագ եկա այն եզրակացության, որ երեկ անհրաժեշտ էր առնվազն հիմնական գործընթացների ավտոմատացման գործիք, ինչպիսիք են տեղակայումը և չափերը: 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-ը: Տարբերակ --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

Շնորհակալություն բոլորիդ ձեր ժամանակի համար, եթե հարցեր ունեք, հարցրեք մեկնաբանություններում։

Source: www.habr.com

Добавить комментарий