ЦСЕ: Кубернетес за оне у вЦлоуд-у

ЦСЕ: Кубернетес за оне у вЦлоуд-у
Поздрав свима!

Десило се да је наш мали тим, да не кажем да је недавно, а свакако не изненада, нарастао да неке (а убудуће и све) производе пресели у Кубернетес.

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

Имали смо мало избора што се тиче инфраструктурне базе. вЦлоуд Дирецтор и вЦлоуд Дирецтор. Изабрали смо новију и одлучили да почнемо.

Прегледавши још једном „Тхе Хард Ваи“, врло брзо сам дошао до закључка да је јуче био потребан алат за аутоматизацију барем основних процеса, као што су постављање и димензионисање. Дубоко уроњење у Гоогле изнело је на видело производ као што је ВМваре Цонтаинер Сервице Ектенсион (ЦСЕ) – производ отвореног кода који вам омогућава да аутоматизујете креирање и одређивање величине к8с кластера за оне у вЦлоуд-у.

Одрицање од одговорности: ЦСЕ има своја ограничења, али за наше потребе био је савршен. Такође, решење мора да подржава провајдер облака, али пошто је серверски део такође отвореног кода, замолите најближег менаџера да вам буде доступан :)

Да бисте почели да га користите, потребан вам је администраторски налог у вЦлоуд организацији и претходно креирана рутирана мрежа за кластер (током процеса постављања потребан вам је приступ Интернету са ове мреже, не заборавите да конфигуришете Фиревалл/НАТ). Адресирање није важно. У овом примеру, узмимо 10.0.240.0/24

ЦСЕ: Кубернетес за оне у вЦлоуд-у

Пошто ће након креирања кластером треба некако да се управља, препоручује се да имате ВПН са рутирањем до креиране мреже. Користимо стандардни ССЛ ВПН конфигурисан на Едге Гатеваи-у наше организације.

Затим морате да инсталирате ЦСЕ клијент где ће се управљати к8с кластерима. У мом случају, ово је радни лаптоп и неколико добро скривених контејнера који покрећу аутоматизацију.

Клијент захтева инсталиран Питхон верзије 3.7.3 и новије и инсталиран модул вцд-цли, па хајде да инсталирамо оба.

pip3 install vcd-cli

pip3 install container-service-extension

Након инсталације, проверавамо ЦСЕ верзију и добијамо следеће:

# vcd cse version
Error: No such command "cse".

Неочекивано, али поправљиво. Како се испоставило, ЦСЕ треба да буде прикључен као модул за вцд-цли.
Да бисте то урадили, прво се морате пријавити вцд-цли у нашу организацију:

# vcd login MyCloud.provider.com org-dev admin
Password: 
admin logged in, org: 'org-dev', vdc: 'org-dev_vDC01'

Након тога, вцд-цли ће креирати конфигурациону датотеку ~/.вцд-цли/профилес.иамл
На крају морате додати следеће:

extensions:
  - container_service_extension.client.cse

Затим поново проверавамо:

# vcd cse version
CSE, Container Service Extension for VMware vCloud Director, version 2.5.0

Фаза инсталације клијента је завршена. Хајде да покушамо да распоредимо први кластер.
ЦСЕ има неколико скупова параметара коришћења, сви се могу видети овде.

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

# 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

Ако добијемо грешку Грешка: Сесија је истекла или корисник није пријављен. Молимо вас да се поново пријавите. — поново се пријавите на вцд-цли на вЦлоуд као што је горе описано и покушајте поново.

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

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 минута; у међувремену, погледајмо основне параметре покретања.

—мрежа — мрежа коју смо раније креирали.
—ссх-кеи — кључеви које смо креирали, који ће бити уписани у чворове кластера
—чворови н — Број Воркер чворова у кластеру. Увек ће постојати један мајстор, ово је ЦСЕ ограничење
—енабле-нфс — креирајте додатни чвор за НФС дељење под сталним волуменима. То је помало опција за педале; вратићемо се на конфигурисање шта ради мало касније.

У међувремену, у вЦлоуд-у можете визуелно пратити стварање кластера
ЦСЕ: Кубернетес за оне у вЦлоуд-у

Када је задатак креирања кластера завршен, он је спреман за употребу.

Командом проверимо исправност распоређивања вцд цсе цлустер инфо МиЦлустер

ЦСЕ: Кубернетес за оне у вЦлоуд-у

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

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

А помоћу њега можете проверити статус кластера:

ЦСЕ: Кубернетес за оне у вЦлоуд-у

У овом тренутку, кластер се може сматрати условно радним, ако не и прича са упорним обима. Пошто смо у вЦлоуд-у, нећемо моћи да користимо вСпхере Провидер. Опција --енабле-нфс дизајниран да изглади ову сметњу, али није у потпуности успео. Потребно је ручно подешавање.

За почетак, наш чвор треба да направи посебан независни диск у вЦлоуд-у. Ово гарантује да наши подаци неће нестати заједно са кластером ако се избришу. Такође, повежите диск на НФС

# vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares'
# vcd vapp attach mycluster nfsd-9604 nfs-shares-1

Након тога, идемо преко ссх-а (стварно сте креирали кључеве?) до нашег НФС чвора и коначно повезујемо диск:

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

После све ове магије, можемо креирати ПВ и ПВЦ у нашем кластеру нешто овако:
ПВ:

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

Ту се завршава прича о стварању једног кластера и почиње прича о његовом животном циклусу. Као бонус, постоје још две корисне ЦСЕ команде које вам омогућавају да понекад уштедите ресурсе или не:

#Увеличиваем размер кластера до 8 воркер нод
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8

#Выводим ненужные ноды из кластера с их последующим удалением
>vcd cse node delete MyCluster node-1a2v node-6685 --yes

Хвала свима на издвојеном времену, ако имате питања, питајте их у коментарима.

Извор: ввв.хабр.цом

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