CSE: Kubernetes ืขื‘ื•ืจ ืืœื” ื‘-vCloud

CSE: Kubernetes ืขื‘ื•ืจ ืืœื” ื‘-vCloud
ืฉืœื•ื ืœื›ื•ืœื!

ื›ืš ืงืจื” ืฉื”ืฆื•ื•ืช ื”ืงื˜ืŸ ืฉืœื ื•, ืฉืœื ืœื•ืžืจ ืฉืœืื—ืจื•ื ื”, ื•ื‘ื•ื•ื“ืื™ ืœื ืคืชืื•ื, ื’ื“ืœ ื•ื”ืขื‘ื™ืจ ื—ืœืง ืžื”ืžื•ืฆืจื™ื (ื•ื‘ืขืชื™ื“ ื›ื•ืœื) ืœ- Kubernetes.

ื”ื™ื• ืœื›ืš ืกื™ื‘ื•ืช ืจื‘ื•ืช, ืื‘ืœ ื”ืกื™ืคื•ืจ ืฉืœื ื• ืœื ืขื•ืกืง ื‘ื”ื•ืœื™ื‘ืจ.

ืœื ื”ื™ื™ืชื” ืœื ื• ื‘ืจื™ืจื” ืœื’ื‘ื™ ื‘ืกื™ืก ื”ืชืฉืชื™ืช. vCloud Director ื•-vCloud Director. ื‘ื—ืจื ื• ื‘ื—ื“ืฉ ื™ื•ืชืจ ื•ื”ื—ืœื˜ื ื• ืœื”ืชื—ื™ืœ.

ืฉื•ื‘, ื‘ื”ืกืชื›ืœื•ืช ืขืœ "ื”ื“ืจืš ื”ืงืฉื”", ื”ื’ืขืชื™ ืžื”ืจ ืžืื•ื“ ืœืžืกืงื ื” ืฉื ื“ืจืฉ ืืชืžื•ืœ ื›ืœื™ ืœืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืœืคื—ื•ืช ืชื”ืœื™ื›ื™ื ื‘ืกื™ืกื™ื™ื, ื›ืžื• ืคืจื™ืกื” ื•ื’ื•ื“ืœ. ืฆืœื™ืœื” ืขืžื•ืงื” ืœื’ื•ื’ืœ ื”ื‘ื™ืื” ืœื™ื“ื™ ื‘ื™ื˜ื•ื™ ืžื•ืฆืจ ื›ืžื• VMware Container Service Extension (CSE) - ืžื•ืฆืจ ืงื•ื“ ืคืชื•ื— ื”ืžืืคืฉืจ ืœืš ืœื”ืคื•ืš ืืช ื”ื™ืฆื™ืจื” ื•ื”ื’ื•ื“ืœ ืฉืœ ืืฉื›ื•ืœื•ืช k8s ืœืื•ื˜ื•ืžื˜ื™ื™ื ืขื‘ื•ืจ ืืœื” ืฉื ืžืฆืื™ื ื‘-vCloud.

ื›ืชื‘ ื•ื™ืชื•ืจ: ืœ-CSE ื™ืฉ ืžื’ื‘ืœื•ืช, ืื‘ืœ ืœืžื˜ืจื•ืชื™ื ื• ื–ื” ื”ื™ื” ืžื•ืฉืœื. ื›ืžื• ื›ืŸ, ื”ืคืชืจื•ืŸ ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื ืชืžืš ืขืœ ื™ื“ื™ ืกืคืง ื”ืขื ืŸ, ืืš ืžื›ื™ื•ื•ืŸ ืฉื—ืœืง ื”ืฉืจืช ื”ื•ื ื’ื ืงื•ื“ ืคืชื•ื—, ื‘ืงืฉ ืžื”ืžื ื”ืœ ื”ืงืจื•ื‘ ืฉืœืš ืฉื™ื”ื™ื” ื–ืžื™ืŸ :)

ื›ื“ื™ ืœื”ืชื—ื™ืœ ืœื”ืฉืชืžืฉ ื‘ื•, ืืชื” ืฆืจื™ืš ื—ืฉื‘ื•ืŸ ืžื ื”ืœ ื‘ืืจื’ื•ืŸ vCloud ื•ืจืฉืช ืžื ื•ืชื‘ืช ืฉื ื•ืฆืจื” ื‘ืขื‘ืจ ืขื‘ื•ืจ ื”ืืฉื›ื•ืœ (ื‘ืžื”ืœืš ืชื”ืœื™ืš ื”ืคืจื™ืกื”, ืืชื” ืฆืจื™ืš ื’ื™ืฉื” ืœืื™ื ื˜ืจื ื˜ ืžืจืฉืช ื–ื•, ืืœ ืชืฉื›ื— ืœื”ื’ื“ื™ืจ ื—ื•ืžืช ืืฉ/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 โ€” ื”ืžืคืชื—ื•ืช ืฉื™ืฆืจื ื•, ืฉื™ื™ื›ืชื‘ื• ืœืฆืžืชื™ ื”ืืฉื›ื•ืœ
โ€”nodes n โ€” ืžืกืคืจ ืฆืžืชื™ Worker ื‘ืืฉื›ื•ืœ. ืชืžื™ื“ ื™ื”ื™ื” ืžืืกื˜ืจ ืื—ื“, ื–ื• ืžื’ื‘ืœื” ืฉืœ 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

pvc:

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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”