Baru-baru ini, saya telah mengerjakan konten PaaS, dan saya baru saja berhubungan dengan Kubernetes, yang melibatkan jangkauan jaringan, yaitu komunikasi antara kontainer lintas host. Jadi serangkaian komponen open source telah muncul, seperti flanel, calico, weave, dll. Di sini terutama Calico dan Fannel.
Prinsip flanel
Flannel, sebuah proyek yang dikembangkan oleh CoreOS, mungkin merupakan plugin CNI yang paling langsung dan populer. Ini adalah salah satu contoh arsitektur jaringan yang paling matang dalam sistem orkestrasi kontainer dan dirancang untuk memungkinkan jaringan antar-kontainer dan antar-host yang lebih baik. Dengan munculnya konsep CNI, plugin Flannel CNI adalah pengenalan awal.
Flanel relatif mudah dipasang dan dikonfigurasi dibandingkan dengan opsi lain. Ini dikemas sebagai FlannelD biner tunggal, dan banyak alat penyebaran kluster Kubernetes umum dan banyak distribusi Kubernetes dapat menginstal Flannel secara default. Flannel dapat menggunakan kluster etcd yang ada dari kluster Kubernetes untuk menyimpan informasi statusnya menggunakan API, sehingga tidak memerlukan penyimpanan data khusus.
Flannel mengonfigurasi jaringan overlay IPv4 Layer 3. Ini menciptakan jaringan internal besar yang menjangkau setiap simpul di kluster. Dalam jaringan Overlay ini, setiap node memiliki subnet yang digunakan untuk menetapkan alamat IP secara internal. Saat mengonfigurasi pod, antarmuka jembatan Docker pada setiap simpul menetapkan alamat ke setiap kontainer baru. Pod di host yang sama dapat berkomunikasi menggunakan jembatan Docker, sedangkan pod pada host yang berbeda menggunakan flanneld untuk merangkum lalu lintas mereka dalam paket UDP sehingga dapat dirutekan ke tujuan yang sesuai.
Flanel memiliki beberapa jenis backend yang dapat digunakan untuk enkapsulasi dan perutean. Pendekatan default dan yang direkomendasikan adalah menggunakan VXLAN karena VXLAN berkinerja lebih baik dan membutuhkan lebih sedikit intervensi manual.
Arsitektur calico
Belacu mencakup komponen penting berikut: Felix, etcd, BGP Client, dan BGP Route Reflector. Berikut ini adalah penjelasan dari masing-masing komponen tersebut.
Felix: Terutama bertanggung jawab untuk konfigurasi perutean, konfigurasi dan pengiriman aturan ACLS, itu ada di setiap node.
etcd: Penyimpanan nilai kunci terdistribusi, terutama bertanggung jawab atas konsistensi metadata jaringan, memastikan keakuratan status jaringan Calico, dapat dibagikan dengan kubernetes;
BGPClient (BIRD) terutama bertanggung jawab untuk mendistribusikan informasi perutean yang ditulis oleh Felix ke kernel ke jaringan Calico saat ini untuk memastikan efektivitas komunikasi antar beban kerja.
BGPRoute Reflector (BIRD) digunakan dalam penyebaran skala besar, meninggalkan mode mesh untuk menghubungkan semua node, dan menggunakan satu atau lebih Reflektor BGPRoute untuk menyelesaikan perutean dan distribusi terpusat.
Prinsip belacu
Seperti yang ditunjukkan pada diagram berikut, proses digambarkan dari kontainer sumber melalui host sumber, melalui perutean pusat data, dan akhirnya ke host tujuan dan akhirnya ditetapkan ke kontainer tujuan.
Kontras
Dari prinsip di atas, dapat dilihat bahwa flanel melakukan operasi pembongkaran paket berdasarkan penerusan perutean, yang membuang-buang sumber daya komputasi CPU. Bagan di bawah ini membandingkan kinerja berbagai komponen jaringan open source yang ditemukan secara online. Dapat dilihat bahwa dari segi bandwidth dan latensi jaringan, kinerja Calico dan host serupa.
|