KlusterKit: Toolkit open source untuk menyederhanakan penyebaran Kubernetes dan bekerja di lingkungan lokal yang terisolasi secara fisik

Hari ini, kami dengan senang hati mengumumkan bahwa Platform9 membuka kode sumber untuk Klusterkit, kit tiga alat, di bawah lisensi Apache v2.0 di GitHub.
Pelanggan kami meluncurkan perangkat lunak di pusat data pribadi, yang seringkali tidak terhubung ke Internet (untuk alasan keamanan atau karena alasan lain). Perusahaan-perusahaan besar ini ingin mengambil keuntungan dari Kubernetes dan memodernisasi aplikasi mereka dan pada saat yang sama meluncurkannya ke pusat data yang berbeda, yang seringkali tidak memiliki koneksi dengan dunia luar. Dan di sini Klusterkit datang untuk menyelamatkan, yang menyederhanakan pengiriman dan pengelolaan kluster K8 di lingkungan yang terisolasi secara fisik.
Klusterkit mencakup tiga alat independen yang dapat digunakan bersama atau secara terpisah untuk mengelola siklus hidup kluster produksi Kubernetes:
- etcdadm , CLI untuk etc cluster management yang disederhanakan
- nodeadm , sebuah administrasi CLI node yang melengkapi kubeadm dan menyebarkan dependensi yang dibutuhkan oleh kubeadm.
- cctl , alat manajemen siklus hidup klaster yang menerima API Cluster dari komunitas Kubernetes dan menggunakan nodeadm dan etcdadm untuk dengan mudah memasok dan memelihara kluster Kubernet yang sangat tersedia di lingkungan lokal dan bahkan secara fisik terisolasi.
Bersama-sama, ketiga alat ini melakukan tugas-tugas berikut:
- Kemudahan pengiriman dan pengelolaan cluster dlld ketersediaan tinggi dan panel kontrol Kubernetes di lingkungan lokal yang terisolasi secara fisik melalui Cluster API.
- Kembalikan panel kontrol kluster setelah kegagalan menggunakan cadangan etcd.
- Pengemasan semua artefak yang diperlukan untuk mengirimkan Kubernetes di lingkungan yang terisolasi secara fisik.
Fitur Klusterkit
- Dukungan banyak penyihir (K8s HA cluster).
- Pasokan dan manajemen cluster aman dll
- Bekerja di lingkungan yang terisolasi secara fisik.
- Mendukung pembaruan berurutan dan rollback.
- Flannel (vxlan) sebagai CNI untuk backend; berencana untuk mendukung CNI lainnya.
- Mencadangkan dan memulihkan cluster dll setelah kehilangan kuorum.
- Melindungi panel kontrol dari kehabisan memori dan waktu CPU.
Arsitektur Solusi Klusterkit

Untuk toleransi kesalahan dan kesederhanaan, Klusterkit menggunakan file cctl-state.yaml tunggal untuk menyimpan metadata cluster Kubernetes. Melalui cctl CLI, Anda dapat mengelola siklus hidup kluster Kubernet pada mesin apa pun yang memiliki file status ini. Ini bisa berupa laptop operator atau komputer lain yang merupakan bagian dari cluster Kubernetes.
Cctl mengimplementasikan dan memanggil dari antarmuka hulu cluster-api sebagai pustaka operasi CRUD pada cluster. Ia menggunakan ssh-provider , sebuah penyedia api-api cluster-api open-source dari Platform9, yang pada gilirannya memanggil etcdadm dan nodeadm untuk melakukan operasi pada cluster.
Cara menggunakan Klusterkit dan komponennya:
1 - Salah satu dari tiga alat ini dapat dengan mudah dipasang dengan perintah go get:
go get -u github.com/platform9/cctl go get -u github.com/platform9/nodeadm go get -u github.com/kubernetes-sigs/etcdadm
2 - Kemudian file-file yang dapat dieksekusi ini dapat dikemas dan disalin ke mesin target di mana cluster Kubernetes yang sangat mudah diakses harus dijalankan. Masukkan file nodeadm dan etcdadm ke dalam direktori versi:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm// cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//
3 - Jika perlu, mengatur cluster Kubernetes secara lokal, dalam lingkungan yang terisolasi secara fisik, dependensi yang diperlukan dapat dengan mudah diunduh sebelumnya di komputer dengan akses Internet menggunakan perintah unduh nodeadm dan etcdadm. Kemudian elemen yang diunduh (mis. Kubelet dan file unit kubelet untuk systemd, file yang dapat dieksekusi CNI, file kubeadm, semua gambar kontainer, termasuk Kubernetes, gambar yang disimpan dan file systemd, gambar kontainer dlld dan file konfigurasi yang sesuai) dapat dengan mudah disalin ke host terisolasi secara fisik bersama dengan cctl, nodeadm dan etcdadm (Lihat wiki untuk detailnya).
4 - Ketika semuanya sudah ada, Anda bisa membuat cluster Kubernetes pertama dengan beberapa perintah:
- Pertama buat kredensial untuk cluster.
$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa
- Lalu buat objek cluster. –Membantu mencantumkan opsi yang didukung.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24
- Akhirnya, buat mesin pertama di cluster.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master
Baca dokumentasi lebih lanjut tentang GitHub .