CSE: Kubernetes untuk siapa pun di vCloud


Halo semuanya!

Kebetulan tim pengembangan kecil kami, tidak untuk mengatakan bahwa baru-baru ini, dan tentu saja tidak tiba-tiba, telah tumbuh untuk mentransfer beberapa (dan di masa depan, semua) produk ke Kubernetes.

Ada banyak alasan untuk ini, tetapi kisah kami bukan tentang holivar.

Dari dasar infrastruktur, kami tidak punya banyak pilihan. Direktur vCloud dan Direktur vCloud. Kami memilih versi yang lebih baru dan memutuskan untuk memulai.

Sekali lagi, melihat melalui The Hard Way, saya dengan cepat sampai pada kesimpulan bahwa alat untuk mengotomatisasi setidaknya proses dasar, seperti penyebaran dan ukuran, diperlukan kemarin. Perendaman mendalam di Google menyoroti produk seperti VMware Container Service Extension (CSE) - produk sumber terbuka yang memungkinkan Anda untuk mengotomatiskan pembuatan dan ukuran cluster K8 untuk mereka yang ada di vCloud.
Penafian: CSE memiliki keterbatasan, tetapi untuk tujuan kami muncul dengan sempurna. Selain itu, solusinya harus didukung oleh penyedia cloud, tetapi karena bagian server juga open-source, mintalah dari manajer terdekat :)

Instalasi Klien CSE


  1. Untuk memulai, Anda memerlukan akun administrator di organisasi vCloud dan jaringan yang diarahkan terlebih dahulu untuk kluster. Penting: selama proses penyebaran Anda memerlukan akses Internet dari jaringan ini, jangan lupa untuk mengkonfigurasi Firewall / NAT.

    Mengatasi masalah tidak masalah. Dalam contoh ini, ambil 10.0.240.0/24:


    Karena setelah pembuatan cluster itu perlu untuk entah bagaimana mengelola, keberadaan VPN dengan perutean ke jaringan yang dibuat dianjurkan. Kami menggunakan SSL-VPN standar yang dikonfigurasi di Edge Gateway organisasi kami.
  2. Selanjutnya, Anda harus menginstal klien CSE ke tempat kluster k8 akan dikelola. Dalam kasus saya, ini adalah laptop yang berfungsi dan beberapa wadah tersembunyi yang mengarahkan otomatisasi.

    Klien membutuhkan modul Python versi 3.7.3 yang terinstal dan yang lebih tinggi dan modul vcd-cli yang terpasang, jadi kami akan menginstal keduanya.

    pip3 install vcd-cli pip3 install container-service-extension 
  3. Setelah instalasi, periksa versi CSE dan dapatkan yang berikut:

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

    Tanpa diduga, tetapi bisa diperbaiki.
  4. Ternyata, CSE perlu disekrup sebagai modul untuk 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' 
  5. Setelah itu, vcd-cli akan membuat file konfigurasi ~ / .vcd-cli / profiles.yaml
    Pada akhirnya, Anda harus menambahkan yang berikut ini:

     extensions: - container_service_extension.client.cse 
  6. Lalu kita periksa lagi:

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

Fase instalasi klien selesai. Mari kita coba gunakan cluster pertama.

Penyebaran Cluster


CSE memiliki beberapa set parameter penggunaan, yang semuanya dapat dilihat di sini.

  1. Pertama, buat kunci untuk akses tanpa kata sandi ke kluster mendatang. Poin ini penting, karena secara default, entri kata sandi pada node akan dinonaktifkan. Dan, jika Anda tidak menentukan kunci, Anda bisa mendapatkan banyak pekerjaan melalui konsol mesin virtual, yang tidak berarti 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. 
  2. Kami mencoba mulai membuat kluster:

     vcd cse cluster create MyCluster --network k8s_cluster_net --ssh-key ~/.ssh/id_rsa.pub --nodes 3 --enable-nfs 
  3. Jika kami mendapatkan Galat: Sesi telah kedaluwarsa atau pengguna tidak masuk. Harap masuk kembali. - masuk vcd-cli ke vCloud lagi, seperti dijelaskan di atas, dan coba lagi.

    Kali ini, semuanya baik-baik saja, dan tugas membuat cluster sudah 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) 
  4. Ini akan memakan waktu sekitar 20 menit untuk menyelesaikan tugas. Sementara itu, kami akan menganalisis parameter peluncuran utama.
    • --network - jaringan yang kami buat sebelumnya.
    • --ssh-key - kunci yang dibuat oleh kami, yang akan ditulis ke node cluster.
    • --nodes n - Jumlah node Worker dari cluster. Akan selalu ada satu penyihir, ini adalah batasan CSE.
    • --enable-nfs - buat simpul tambahan untuk bola NFS di bawah volume persisten. Sedikit opsi pedal, kami akan kembali sedikit kemudian untuk menyesuaikan fungsinya.

  5. Sementara itu, di vCloud, Anda bisa secara visual mengamati pembuatan cluster.

  6. Setelah tugas membuat cluster selesai, siap untuk digunakan.
  7. Verifikasi penyebaran dengan perintah MyCluster info vcd cse cluster .

  8. Selanjutnya, kita perlu mendapatkan konfigurasi cluster untuk menggunakan kubectl .

     # vcd cse cluster config MyCluster > ./.kube/config 
  9. Dan Anda dapat memeriksa status cluster yang menggunakannya:


Tidak sesederhana itu


Pada titik ini, klaster dapat dianggap operasional secara kondisional, jika tidak untuk cerita dengan volume persisten. Karena kita berada di vCloud, menggunakan Penyedia vSphere akan gagal. Opsi --enable-nfs dirancang untuk memuluskan masalah ini, tetapi tidak berhasil sampai akhir. Penyetelan manual diperlukan.

  1. Untuk memulai, simpul kami perlu membuat disk Independen terpisah di vCloud. Ini memastikan bahwa data kami tidak hilang dengan cluster jika dihapus. Juga, hubungkan drive ke NFS.

     # vcd disk create nfs-shares-1 100g --description 'Kubernetes NFS shares' # vcd vapp attach mycluster nfsd-9604 nfs-shares-1 
  2. Setelah itu, kita pergi melalui ssh (apakah Anda benar-benar membuat kunci?) Ke 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 
  3. Buat direktori untuk data dan pasang bagian baru di sana:

     mkdir /export echo '/dev/sdb1 /export ext4 defaults 0 0' >> /etc/fstab mount -a 
  4. Mari kita membuat lima bagian uji dan membaginya 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 
  5. Setelah semua keajaiban ini, Anda dapat membuat PV dan PVC di kluster kami seperti ini:

    PV

     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 

Tentang ini, kisah menciptakan satu kluster berakhir dan kisah siklus hidupnya dimulai. Sebagai bonus, ada dua perintah CSE lebih berguna yang memungkinkan Anda untuk menghemat sumber daya di kali 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 waktu Anda, jika ada pertanyaan - tanyakan di komentar.

Source: https://habr.com/ru/post/id472752/


All Articles