CSE: Kubernetes untuk mereka yang menggunakan vCloud

CSE: Kubernetes untuk mereka yang menggunakan vCloud
Hello!

Kebetulan tim kecil kami, belum lagi baru-baru ini, dan tentunya tidak secara tiba-tiba, telah berkembang dengan memindahkan beberapa (dan di masa depan semua) produk ke Kubernetes.

Ada banyak alasan untuk ini, tapi cerita kami bukan tentang holivar.

Kami tidak punya banyak pilihan mengenai basis infrastruktur. Direktur vCloud dan Direktur vCloud. Kami memilih yang lebih baru dan memutuskan untuk memulai.

Sekali lagi, melihat “The Hard Way,” saya dengan cepat sampai pada kesimpulan bahwa alat untuk mengotomatisasi setidaknya proses dasar, seperti penerapan dan ukuran, diperlukan kemarin. Penelusuran mendalam ke Google mengungkap produk seperti VMware Container Service Extension (CSE) - produk sumber terbuka yang memungkinkan Anda mengotomatiskan pembuatan dan ukuran kluster k8s untuk kluster yang menggunakan vCloud.

Penafian: CSE memiliki keterbatasan, namun untuk tujuan kami, CSE sempurna. Selain itu, solusinya harus didukung oleh penyedia cloud, tetapi karena bagian server juga bersifat open-source, mintalah manajer terdekat Anda untuk menyediakannya :)

Untuk mulai menggunakannya, Anda memerlukan akun administrator di organisasi vCloud dan jaringan rute yang dibuat sebelumnya untuk cluster (selama proses penerapan, Anda memerlukan akses Internet dari jaringan ini, jangan lupa untuk mengkonfigurasi Firewall/NAT). Mengatasi tidak masalah. Dalam contoh ini, mari kita ambil 10.0.240.0/24

CSE: Kubernetes untuk mereka yang menggunakan vCloud

Karena setelah pembuatan, cluster perlu dikelola, disarankan untuk memiliki VPN dengan perutean ke jaringan yang dibuat. Kami menggunakan SSL VPN standar yang dikonfigurasi di Edge Gateway organisasi kami.

Selanjutnya, Anda perlu menginstal klien CSE tempat cluster k8s akan dikelola. Dalam kasus saya, ini adalah laptop yang berfungsi dan beberapa wadah tersembunyi yang mendorong otomatisasi.

Klien memerlukan Python versi 3.7.3 dan lebih tinggi diinstal dan modul diinstal vcd-cli, jadi mari kita instal keduanya.

pip3 install vcd-cli

pip3 install container-service-extension

Setelah instalasi, kami memeriksa versi CSE dan mendapatkan yang berikut:

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

Tak terduga, tapi bisa diperbaiki. Ternyata, CSE perlu dilampirkan sebagai modul ke vcd-cli.
Untuk melakukan ini, Anda harus terlebih dahulu masuk vcd-cli ke organisasi kami:

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

Setelah ini, vcd-cli akan membuat file konfigurasi ~/.vcd-cli/profiles.yaml
Pada akhirnya Anda perlu menambahkan yang berikut ini:

extensions:
  - container_service_extension.client.cse

Kemudian kita periksa lagi:

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

Tahap instalasi klien selesai. Mari kita coba menerapkan cluster pertama.
CSE memiliki beberapa set parameter penggunaan, semuanya dapat dilihat di sini.

Pertama, mari buat kunci untuk akses tanpa kata sandi ke cluster masa depan. Poin ini penting, karena secara default, login kata sandi ke node akan dinonaktifkan, dan jika Anda tidak menyetel kuncinya, Anda bisa mendapatkan banyak pekerjaan melalui konsol mesin virtual, yang tidak nyaman.

# 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 kita coba mulai membuat cluster:

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

Jika kita mendapatkan kesalahan Kesalahan: Sesi telah kedaluwarsa atau pengguna belum masuk. Silakan login ulang. — masuk lagi vcd-cli ke vCloud seperti dijelaskan di atas dan coba lagi.

Kali ini semuanya baik-baik saja dan tugas pembuatan cluster telah dimulai.

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

Diperlukan waktu sekitar 20 menit untuk menyelesaikan tugas; sementara itu, mari kita lihat parameter peluncuran dasar.

—network — jaringan yang kita buat sebelumnya.
—ssh-key — kunci yang kita buat, yang akan ditulis ke node cluster
—nodes n — Jumlah node Pekerja di cluster. Akan selalu ada satu master, ini adalah batasan CSE
—enable-nfs — membuat node tambahan untuk pembagian NFS dalam volume persisten. Ini sedikit pilihan pedal; kita akan kembali menyetel fungsinya nanti.

Sedangkan di vCloud Anda dapat memantau pembuatan cluster secara visual
CSE: Kubernetes untuk mereka yang menggunakan vCloud

Setelah tugas pembuatan cluster selesai, cluster siap digunakan.

Mari kita periksa kebenaran penerapan dengan perintah vcd cse info cluster MyCluster

CSE: Kubernetes untuk mereka yang menggunakan vCloud

Selanjutnya kita perlu mendapatkan konfigurasi cluster untuk digunakan kubectl

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

Dan Anda dapat memeriksa status cluster menggunakannya:

CSE: Kubernetes untuk mereka yang menggunakan vCloud

Pada titik ini, cluster dapat dianggap berfungsi secara kondisional jika bukan karena cerita dengan volume yang persisten. Karena kami menggunakan vCloud, kami tidak dapat menggunakan Penyedia vSphere. Pilihan --aktifkan-nfs dirancang untuk mengatasi gangguan ini, tetapi tidak berhasil sepenuhnya. Penyesuaian manual diperlukan.

Untuk memulai, node kita perlu membuat disk Independen terpisah di vCloud. Ini menjamin data kita tidak akan hilang bersama cluster jika dihapus. Juga, sambungkan disk ke NFS

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

Setelah itu, kita pergi melalui ssh (Anda benar-benar membuat kuncinya?) ke node NFS kami dan akhirnya menghubungkan 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

Buat direktori untuk data dan pasang partisi baru di sana:

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

Mari buat lima partisi pengujian dan bagikan untuk cluster:

>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

Setelah semua keajaiban ini, kita dapat membuat PV dan PVC di cluster kita seperti ini:
Reporter:

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 kisah terciptanya satu cluster berakhir dan kisah siklus hidupnya dimulai. Sebagai bonus, ada dua perintah CSE berguna yang terkadang memungkinkan Anda menghemat sumber daya 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 atas waktunya, jika ada pertanyaan, tanyakan di komentar.

Sumber: www.habr.com

Tambah komentar