CSE: vCloud માં રહેલા લોકો માટે Kubernetes

CSE: vCloud માં રહેલા લોકો માટે Kubernetes
હેલો દરેક!

એવું બન્યું કે અમારી નાની ટીમ, તાજેતરમાં જ અને ચોક્કસપણે અચાનક નહીં, કેટલાક ઉત્પાદનો (અને ભવિષ્યમાં તમામ) કુબરનેટ્સમાં ખસેડવા માટે વિકસિત થઈ છે.

આના ઘણા કારણો હતા, પરંતુ અમારી વાર્તા હોલીવર વિશે નથી.

Из инфраструктурной основы выбор у нас был небольшой. vCloud Director и vCloud Director. Выбрали тот, что поновее и решили начать.

В очередной раз полистав «The Hard Way», я очень быстро пришёл к выводу, что инструмент для автоматизации хотя бы базовых процессов, таких как деплой и сайзинг, нужен ещё вчера. Глубокое погружение в гугл явило на свет такой продукт как VMware Container Service Extension (CSE) — опенсорсный продукт, позволяющий автоматизировать создание и сайзинг k8s кластеров для тех, кто в vCloud-е.

અસ્વીકરણ: CSE ની તેની મર્યાદાઓ છે, પરંતુ અમારા હેતુઓ માટે તે સંપૂર્ણ હતું. ઉપરાંત, ઉકેલ ક્લાઉડ પ્રદાતા દ્વારા સમર્થિત હોવો જોઈએ, પરંતુ સર્વરનો ભાગ પણ ઓપન-સોર્સ હોવાથી, તમારા નજીકના મેનેજરને તે ઉપલબ્ધ કરાવવા માટે કહો :)

Для начала использования необходим аккаунт администратора в организации vCloud и заблаговременно созданная routed-сеть для кластера (в процессе деплоя необходим доступ в интернет из этой сети, не забудьте настроить Firewall/NAT). Адресация не имеет значения. В данном примере возьмём 10.0.240.0/24

CSE: vCloud માં રહેલા લોકો માટે Kubernetes

બનાવટ પછી, ક્લસ્ટરને કોઈક રીતે મેનેજ કરવાની જરૂર પડશે, બનાવેલ નેટવર્ક પર રૂટીંગ સાથે VPN રાખવાની ભલામણ કરવામાં આવે છે. અમે અમારી સંસ્થાના એજ ગેટવે પર ગોઠવેલ પ્રમાણભૂત SSL VPN નો ઉપયોગ કરીએ છીએ.

આગળ, તમારે 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 માં ફરીથી લોગ ઇન કરો અને ફરી પ્રયાસ કરો.

В этот раз всё хорошо и задача создания кластера запустилась.

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 минут, тем временем разберем основные параметры запуска.

—network — созданная нами ранее сеть.
—ssh-key — созданные нами ключи, которые будут записаны на ноды кластера
—nodes n — Количество Worker нод кластера. Мастер будет всегда один, это ограничение CSE
—enable-nfs — સતત વોલ્યુમો હેઠળ NFS શેર માટે વધારાનો નોડ બનાવો. તે થોડો પેડલ વિકલ્પ છે; અમે થોડી વાર પછી તે શું કરે છે તેના પર પાછા આવીશું.

Тем временем, в vCloud можно визуально наблюдать за созданием кластера
CSE: vCloud માં રહેલા લોકો માટે Kubernetes

એકવાર ક્લસ્ટર બનાવવાનું કાર્ય પૂર્ણ થઈ જાય, તે ઉપયોગ માટે તૈયાર છે.

Проверим корректность деплоя командой vcd cse ક્લસ્ટર માહિતી MyCluster

CSE: vCloud માં રહેલા લોકો માટે Kubernetes

આગળ આપણે ઉપયોગ કરવા માટે ક્લસ્ટર રૂપરેખાંકન મેળવવાની જરૂર છે kubectl

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

И можно проверить состояние кластера уже с помощью неё:

CSE: vCloud માં રહેલા લોકો માટે Kubernetes

આ બિંદુએ, ક્લસ્ટરને શરતી રીતે કાર્યરત ગણી શકાય, જો સતત વોલ્યુમ સાથે વાર્તા માટે નહીં. અમે vCloud માં હોવાથી, અમે vSphere Provider નો ઉપયોગ કરી શકીશું નહીં. વિકલ્પ --enable-nfs આ ઉપદ્રવને સરળ બનાવવા માટે રચાયેલ છે, પરંતુ તે સંપૂર્ણપણે કામ કરી શક્યું નથી. મેન્યુઅલ એડજસ્ટમેન્ટ જરૂરી છે.

Для начала нашей ноде необходимо создать отдельный Independent диск в 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

Cоздадим пять тестовых разделов и расшарим их для кластера:

>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

આ બધા જાદુ પછી, અમે અમારા ક્લસ્ટરમાં પીવી અને પીવીસી કંઈક આના જેવું બનાવી શકીએ છીએ:
પીવી:

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

એક ટિપ્પણી ઉમેરો