CSE: vCloud жүйесіндегілерге арналған Kubernetes

CSE: vCloud жүйесіндегілерге арналған Kubernetes
Привет!

Біздің шағын командамыз, жақында емес, кенеттен емес, кейбір (және болашақта барлығы) өнімдерді Kubernetes-ке көшіру үшін өсті.

Бұған көптеген себептер болды, бірақ біздің әңгімеміз холивар туралы емес.

Инфрақұрылымдық базаға қатысты таңдауымыз аз болды. vCloud директоры және vCloud директоры. Біз жаңасын таңдап, бастауды шештік.

Тағы да «Қиын жолды» қарап отырып, мен кеше орналастыру және өлшемдер сияқты ең болмағанда негізгі процестерді автоматтандыруға арналған құрал қажет деген қорытындыға келдім. Google-ге терең бойлау VMware Container Service Extension (CSE) сияқты өнімді жарыққа шығарды - бұл vCloud жүйесіндегілер үшін k8s кластерлерін жасау мен өлшемдерін автоматтандыруға мүмкіндік беретін ашық бастапқы өнім.

Жауапкершіліктен бас тарту: CSE-нің шектеулері бар, бірақ біздің мақсаттарымыз үшін ол тамаша болды. Сондай-ақ, шешімге бұлттық провайдер қолдау көрсетуі керек, бірақ сервер бөлігі де ашық бастапқы код болғандықтан, ең жақын менеджеріңізден оның қолжетімді болуын сұраңыз :)

Оны пайдалануды бастау үшін vCloud ұйымындағы әкімші тіркелгісі және кластер үшін бұрын жасалған маршрутталған желі қажет (орналастыру процесі кезінде сізге осы желіден Интернетке кіру қажет, брандмауэр/NAT конфигурациялауды ұмытпаңыз). Мекенжай маңызды емес. Бұл мысалда 10.0.240.0/24 алайық

CSE: vCloud жүйесіндегілерге арналған Kubernetes

Жасалғаннан кейін кластерді қандай да бір жолмен басқару қажет болғандықтан, құрылған желіге маршрутизациясы бар VPN болуы ұсынылады. Біз ұйымымыздың Edge шлюзінде конфигурацияланған стандартты SSL VPN пайдаланамыз.

Әрі қарай, k8s кластерлері басқарылатын CSE клиентін орнату керек. Менің жағдайда, бұл жұмыс істейтін ноутбук және автоматтандыруды басқаратын бірнеше жақсы жасырын контейнерлер.

Клиент 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 жүйесіне жоғарыда сипатталғандай қайтадан кіріп, әрекетті қайталаңыз.

Бұл жолы бәрі жақсы және кластер құру міндеті басталды.

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-кілт — біз жасаған кілттер, олар кластер түйіндеріне жазылады
—nodes n — Кластердегі жұмысшы түйіндерінің саны. Әрқашан бір шебер болады, бұл CSE шектеуі
—enable-nfs — тұрақты көлемдердегі NFS үлестері үшін қосымша түйін жасаңыз. Бұл педаль опциясы; біз оның не істейтінін реттеуге сәл кейінірек ораламыз.

Сонымен қатар, vCloud жүйесінде кластердің жасалуын визуалды бақылауға болады
CSE: vCloud жүйесіндегілерге арналған Kubernetes

Кластер құру тапсырмасы орындалғаннан кейін ол пайдалануға дайын.

Пәрмен арқылы орналастырудың дұрыстығын тексерейік vcd cse кластер туралы ақпарат MyCluster

CSE: vCloud жүйесіндегілерге арналған Kubernetes

Содан кейін біз пайдалану үшін кластер конфигурациясын алуымыз керек кубектл

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

Оның көмегімен кластердің күйін тексеруге болады:

CSE: vCloud жүйесіндегілерге арналған Kubernetes

Осы кезде кластерді, егер тұрақты томдары бар әңгіме болмаса, шартты түрде жұмыс істейтін деп санауға болады. Біз 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

Осыдан кейін біз NFS түйініне ssh (сіз шынымен кілттерді жасадыңыз ба) арқылы өтіп, дискіні қосамыз:

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

пікір қалдыру