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
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
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
Sebaik sahaja tugas mencipta kluster selesai, ia sedia untuk digunakan.
Mari kita semak ketepatan penggunaan dengan arahan vcd cse maklumat kluster MyCluster
Seterusnya kita perlu mendapatkan konfigurasi kluster untuk digunakan kubectl
# vcd cse cluster config MyCluster > ./.kube/config
Dan anda boleh menyemak status kluster menggunakannya:
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