CSE: Kubernetes no ka poe ma vCloud

CSE: Kubernetes no ka poe ma vCloud
Hello a pau!

ʻO ka mea i hiki i kā mākou hui liʻiliʻi, ʻaʻole e ʻōlelo i kēia manawa, a ʻaʻole hikiwawe, ua ulu e neʻe i kekahi (a i ka wā e hiki mai ana) nā huahana i Kubernetes.

Nui nā kumu o kēia, akā ʻaʻole pili ka holivar kā mākou moʻolelo.

He liʻiliʻi kā mākou koho e pili ana i ke kahua ʻōnaehana. Luna Hoʻokele vCloud a me Luna Hoʻokele vCloud. Ua koho mākou i ka mea hou a hoʻoholo e hoʻomaka.

Ma hope o ka nānā hou ʻana i ka "The Hard Way", ua hiki koke iaʻu i ka hopena e pono ai kahi mea hana no ka hoʻomaʻamaʻa ʻana i nā kaʻina hana maʻamau, e like me ke kau ʻana a me ka nui ʻana, i nehinei. ʻO kahi luʻu hohonu i loko o Google i hōʻike mai i kahi huahana e like me VMware Container Service Extension (CSE) - kahi huahana open source e hiki ai iā ʻoe ke hoʻokaʻawale i ka hana ʻana a me ka nui o nā pūʻulu k8s no ka poʻe ma vCloud.

Hoʻokuʻu: Loaʻa iā CSE kona mau palena, akā no kā mākou kumu ua kūpono ia. Eia kekahi, pono e kākoʻo ʻia ka hoʻonā e ka mea hāʻawi kapuaʻi, akā no ka mea he open-source ka ʻāpana kikowaena, e noi i kāu luna kokoke e loaʻa iā ia :)

No ka hoʻomaka ʻana e hoʻohana iā ia, pono ʻoe i kahi moʻokāki hoʻokele ma ka hui vCloud a me kahi pūnaewele i hana mua ʻia no ka hui (i ka wā o ke kaʻina hana, pono ʻoe i ka ʻike pūnaewele mai kēia pūnaewele, mai poina e hoʻonohonoho i ka Firewall / NAT). ʻAʻole pili ka ʻōlelo ʻana. Ma kēia laʻana, e lawe kākou i ka 10.0.240.0/24

CSE: Kubernetes no ka poe ma vCloud

No ka mea ma hope o ka hana ʻana, pono e hoʻokele ʻia ka pūʻulu ma kekahi ʻano, ʻōlelo ʻia e loaʻa kahi VPN me ke ala ʻana i ka pūnaewele i hana ʻia. Hoʻohana mākou i kahi SSL VPN maʻamau i hoʻonohonoho ʻia ma ka Edge Gateway o kā mākou hui.

A laila, pono ʻoe e hoʻokomo i ka mea kūʻai aku CSE kahi e mālama ʻia ai nā pūʻulu k8s. I koʻu hihia, he pona hana kēia a me kekahi mau pahu huna huna e hoʻokele i ka automation.

Pono ka mea kūʻai aku i ka Python version 3.7.3 a ʻoi aku ke kiʻekiʻe i hoʻokomo ʻia a hoʻokomo ʻia ka module vcd-cli, no laila e hoʻokomo kāua i ʻelua.

pip3 install vcd-cli

pip3 install container-service-extension

Ma hope o ka hoʻouka ʻana, nānā mākou i ka mana CSE a loaʻa i kēia:

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

Manaʻo ʻole, akā hiki ke hoʻoponopono ʻia. E like me ka mea i ʻike ʻia, pono e hoʻopili ʻia ʻo CSE ma ke ʻano he module i vcd-cli.
No ka hana ʻana i kēia, pono ʻoe e komo mua i ka vcd-cli i kā mākou hui:

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

Ma hope o kēia, e hana ʻo vcd-cli i kahi faila hoʻonohonoho ~/.vcd-cli/profiles.yaml
I ka hopena, pono ʻoe e hoʻohui i kēia:

extensions:
  - container_service_extension.client.cse

A laila nānā hou mākou:

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

Ua pau ka manawa hoʻokomo o ka mea kūʻai aku. E ho'āʻo kākou e kau i ka pūʻulu mua.
Loaʻa iā CSE nā ʻāpana o ka hoʻohana ʻana, hiki ke ʻike ʻia iā lākou āpau ʻaneʻi.

ʻO ka mea mua, e hana kākou i nā kī no ka loaʻa ʻole o ka password i ka pūʻulu e hiki mai ana. He mea koʻikoʻi kēia wahi, no ka mea ma ke ʻano maʻamau, e hoʻopau ʻia ka ʻōlelo huna i nā nodes, a inā ʻaʻole ʻoe e hoʻonohonoho i nā kī, hiki iā ʻoe ke loaʻa i nā hana he nui ma o nā consoles o nā mīkini virtual, ʻaʻole kūpono.

# 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.

E ho'āʻo kākou e hoʻomaka i ka hana ʻana i kahi pūʻulu:

vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs

Inā loaʻa iā mākou kahi hewa Hapa: Ua pau ka manawa a i ʻole ka mea hoʻohana. E ʻoluʻolu e komo hou. - e hoʻokomo hou i vcd-cli i vCloud e like me ka mea i hōʻike ʻia ma luna a hoʻāʻo hou.

I kēia manawa ua maikaʻi nā mea a pau a ua hoʻomaka ka hana o ka hana ʻana i kahi hui.

cluster operation: Creating cluster vApp 'MyCluster' (38959587-54f4-4a49-8f2e-61c3a3e879e0) from template 'photon-v2_k8-1.12_weave-2.3.0' (revision 1)

Ma kahi o 20 mau minuke e hoʻopau ai i ka hana; i kēia manawa, e nānā kākou i nā ʻāpana hoʻomaka.

—network — ka pūnaewele a mākou i hana ai ma mua.
—ssh-key - nā kī a mākou i hana ai, e kākau ʻia i nā nodes cluster
—nodes n — Ka helu o na mea hana ma ka hui. Hoʻokahi mau haku, he palena CSE kēia
-enable-nfs - hana i kahi node hou no nā kaʻana NFS ma lalo o nā puke hoʻomau. He ʻano koho pedal; e hoʻi mākou i ka hoʻopaʻa ʻana i kāna hana ma hope iki.

I kēia manawa, ma vCloud hiki iā ʻoe ke nānā pono i ka hana ʻana o kahi puʻupuʻu
CSE: Kubernetes no ka poe ma vCloud

Ke pau ka hana o ka hana ʻana i kahi puʻupuʻu, mākaukau ia no ka hoʻohana.

E nānā kākou i ka pololei o ka hoʻolaha ʻana me ke kauoha vcd cse cluster info MyCluster

CSE: Kubernetes no ka poe ma vCloud

A laila pono mākou e kiʻi i ka hoʻonohonoho cluster e hoʻohana ai kubectl

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

A hiki iā ʻoe ke nānā i ke kūlana o ka puʻupuʻu me ka hoʻohana ʻana iā ia:

CSE: Kubernetes no ka poe ma vCloud

I kēia manawa, hiki ke noʻonoʻo ʻia ka hui ʻana me ke kūlana, inā ʻaʻole no ka moʻolelo me nā leo hoʻomau. No ka mea aia mākou ma vCloud, ʻaʻole e holo ka hoʻohana ʻana iā vSphere Provider. Koho --enable-nfs i hoʻolālā ʻia e hoʻomaʻemaʻe i kēia pilikia, akā ʻaʻole i holo pono. Pono ka hoʻoponopono lima.

No ka hoʻomaka, pono kā mākou node e hana i kahi disk kūʻokoʻa ma vCloud. Hōʻoiaʻiʻo kēia ʻaʻole e nalowale kā mākou ʻikepili me ka pūʻulu inā holoi ʻia. Eia kekahi, e hoʻopili i ka disk i NFS

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

Ma hope o kēlā, hele mākou ma ssh (ua hana maoli ʻoe i nā kī?) i kā mākou NFS node a hoʻopili hope i ka disk:

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

E hana i papa kuhikuhi no ka ʻikepili a kau i kahi ʻāpana hou ma laila:

mkdir /export
echo '/dev/sdb1  /export   ext4  defaults   0 0' >> /etc/fstab
mount -a

E hana kākou i ʻelima mau ʻāpana hoʻāʻo a kaʻana like iā lākou no ka pūʻulu:

>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

Ma hope o kēia kilokilo, hiki iā mākou ke hana i ka PV a me ka PVC i loko o kā mākou puʻupuʻu e like me kēia:
Mea hōʻike:

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

pvc:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nfs-pvc
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: ""
  resources:
    requests:
      storage: 10Gi
EOF

ʻO kēia kahi i pau ai ka moʻolelo o ka hana ʻana i hoʻokahi puʻupuʻu a hoʻomaka ka moʻolelo o kona pōʻai ola. Ma ke ʻano he bonus, aia ʻelua mau kauoha CSE pono e ʻae iā ʻoe e mālama i nā kumuwaiwai a i ʻole:

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

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

Mahalo iā ʻoukou a pau no ko ʻoukou manawa, inā he nīnau kāu, e nīnau ma nā ʻōlelo.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka