CSE: Kubernetes untuk mereka dalam vCloud

CSE: Kubernetes untuk mereka dalam vCloud
Hello!

Kebetulan pasukan kecil kami, bukan untuk mengatakan bahawa baru-baru ini, dan pastinya tidak secara tiba-tiba, telah berkembang untuk memindahkan beberapa (dan pada masa hadapan semua) produk ke Kubernetes.

Terdapat banyak sebab untuk ini, tetapi cerita kami bukan tentang holivar.

Kami mempunyai sedikit pilihan mengenai pangkalan infrastruktur. Pengarah vCloud dan Pengarah vCloud. Kami memilih yang lebih baharu dan memutuskan untuk bermula.

Sekali lagi, melihat melalui "The Hard Way," saya dengan cepat membuat kesimpulan bahawa alat untuk mengautomasikan sekurang-kurangnya proses asas, seperti penggunaan dan saiz, diperlukan semalam. Penyelaman mendalam ke dalam Google telah mendedahkan produk seperti VMware Container Service Extension (CSE) - produk sumber terbuka yang membolehkan anda mengautomasikan penciptaan dan saiz gugusan k8s untuk mereka dalam vCloud.

Penafian: CSE mempunyai hadnya, tetapi untuk tujuan kami ia adalah sempurna. Selain itu, penyelesaian itu mesti disokong oleh pembekal awan, tetapi memandangkan bahagian pelayan juga merupakan sumber terbuka, minta pengurus terdekat anda untuk menyediakannya :)

Untuk mula menggunakannya, anda memerlukan akaun pentadbir dalam organisasi vCloud dan rangkaian laluan yang dibuat sebelum ini untuk kluster (semasa proses penempatan, anda memerlukan akses Internet daripada rangkaian ini, jangan lupa untuk mengkonfigurasi Firewall/NAT). Menangani tidak penting. Dalam contoh ini, mari kita ambil 10.0.240.0/24

CSE: Kubernetes untuk mereka dalam vCloud

Memandangkan selepas penciptaan, kluster perlu diuruskan entah bagaimana, adalah disyorkan untuk mempunyai VPN dengan penghalaan ke rangkaian yang dibuat. Kami menggunakan VPN SSL standard yang dikonfigurasikan pada Edge Gateway organisasi kami.

Seterusnya, anda perlu memasang klien CSE di mana kluster k8s akan diuruskan. Dalam kes saya, ini ialah komputer riba yang berfungsi dan beberapa bekas yang tersembunyi dengan baik yang memacu automasi.

Pelanggan memerlukan Python versi 3.7.3 dan lebih tinggi dipasang dan modul dipasang vcd-cli, jadi mari pasang kedua-duanya.

pip3 install vcd-cli

pip3 install container-service-extension

Selepas pemasangan, kami menyemak versi CSE dan mendapatkan yang berikut:

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

Tidak dijangka, tetapi boleh diperbaiki. Ternyata, CSE perlu dilampirkan sebagai modul kepada vcd-cli.
Untuk melakukan ini, anda mesti log masuk vcd-cli ke organisasi kami dahulu:

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

Selepas ini, vcd-cli akan mencipta fail konfigurasi ~/.vcd-cli/profiles.yaml
Pada akhirnya anda perlu menambah yang berikut:

extensions:
  - container_service_extension.client.cse

Kemudian kita semak semula:

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

Fasa pemasangan pelanggan telah selesai. Mari cuba gunakan kluster pertama.
CSE mempunyai beberapa set parameter penggunaan, kesemuanya boleh dilihat здСсь.

Mula-mula, mari buat kunci untuk akses tanpa kata laluan kepada gugusan masa hadapan. Perkara ini penting, kerana secara lalai, log masuk kata laluan ke nod akan dilumpuhkan, dan jika anda tidak menetapkan kekunci, anda boleh mendapatkan banyak kerja melalui konsol mesin maya, yang tidak mudah.

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

Mari cuba mula membuat kluster:

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

Jika kita mendapat ralat Ralat: Sesi telah tamat tempoh atau pengguna tidak log masuk. Sila log masuk semula. β€” sekali lagi log masuk vcd-cli ke vCloud seperti yang diterangkan di atas dan cuba lagi.

Kali ini semuanya baik-baik saja dan tugas untuk mencipta kluster telah bermula.

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

Ia akan mengambil masa kira-kira 20 minit untuk menyelesaikan tugas; sementara itu, mari lihat parameter pelancaran asas.

β€”rangkaian β€” rangkaian yang kami buat sebelum ini.
β€”ssh-key β€” kunci yang kami cipta, yang akan ditulis pada nod kelompok
β€”nod n β€” Bilangan nod Pekerja dalam kelompok. Akan sentiasa ada satu induk, ini adalah had CSE
β€”enable-nfs β€” buat nod tambahan untuk saham NFS di bawah volum berterusan. Ini sedikit pilihan pedal; kita akan kembali menala apa yang dilakukannya sedikit kemudian.

Sementara itu, dalam vCloud anda boleh memantau secara visual penciptaan kluster
CSE: Kubernetes untuk mereka dalam vCloud

Sebaik sahaja tugas mencipta kluster selesai, ia sedia untuk digunakan.

Mari kita semak ketepatan penggunaan dengan arahan vcd cse maklumat kluster MyCluster

CSE: Kubernetes untuk mereka dalam vCloud

Seterusnya kita perlu mendapatkan konfigurasi kluster untuk digunakan kubectl

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

Dan anda boleh menyemak status kluster menggunakannya:

CSE: Kubernetes untuk mereka dalam vCloud

Pada ketika ini, kluster boleh dianggap berfungsi secara bersyarat, jika bukan untuk cerita dengan volum yang berterusan. Memandangkan kami berada dalam vCloud, kami tidak akan dapat menggunakan vSphere Provider. Pilihan --dayakan-nfs direka untuk melancarkan gangguan ini, tetapi ia tidak berjaya sepenuhnya. Pelarasan manual diperlukan.

Untuk bermula, nod kami perlu mencipta cakera Bebas yang berasingan dalam vCloud. Ini menjamin bahawa data kami tidak akan hilang bersama-sama dengan kluster jika ia dipadamkan. Juga, sambungkan cakera ke NFS

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

Selepas itu, kami pergi melalui ssh (anda benar-benar mencipta kunci?) ke nod NFS kami dan akhirnya menyambung cakera:

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

Buat direktori untuk data dan lekapkan partition baru di sana:

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

Mari buat lima partition ujian dan kongsikannya untuk kluster:

>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

Selepas semua keajaiban ini, kami boleh mencipta PV dan PVC dalam kluster kami seperti ini:
Wartawan:

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

Di sinilah berakhirnya kisah penciptaan satu gugusan dan bermulalah kisah kitaran hayatnya. Sebagai bonus, terdapat dua lagi perintah CSE berguna yang membolehkan anda kadangkala menyimpan sumber atau tidak:

#Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ кластСра Π΄ΠΎ 8 Π²ΠΎΡ€ΠΊΠ΅Ρ€ Π½ΠΎΠ΄
>cse cluster resize MyCluster --network k8s_cluster_net --nodes 8

#Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½ΠΎΠ΄Ρ‹ ΠΈΠ· кластСра с ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ
>vcd cse node delete MyCluster node-1a2v node-6685 --yes

Terima kasih semua untuk masa anda, jika anda mempunyai sebarang pertanyaan, tanya dalam komen.

Sumber: www.habr.com

Tambah komen