Pengembaraan Kubernetes Dailymotion: mencipta infrastruktur di awan + di premis

Pengembaraan Kubernetes Dailymotion: mencipta infrastruktur di awan + di premis

Catatan. terjemah: Dailymotion ialah salah satu perkhidmatan pengehosan video terbesar di dunia dan oleh itu pengguna Kubernetes yang terkenal. Dalam bahan ini, arkitek sistem David Donchez berkongsi hasil penciptaan platform pengeluaran syarikat berdasarkan K8, yang bermula dengan pemasangan awan dalam GKE dan berakhir sebagai penyelesaian hibrid, yang membolehkan masa tindak balas yang lebih baik dan penjimatan kos infrastruktur.

Memutuskan untuk Membina Semula API Teras Dailymotion tiga tahun lalu, kami ingin membangunkan cara yang lebih cekap untuk mengehoskan aplikasi dan menjadikannya lebih mudah proses dalam pembangunan dan pengeluaran. Untuk tujuan ini, kami memutuskan untuk menggunakan platform orkestrasi kontena dan secara semula jadi memilih Kubernetes.

Mengapakah berbaloi membina platform anda sendiri berdasarkan Kubernetes?

API peringkat pengeluaran dalam masa yang singkat menggunakan Google Cloud

Musim panas 2016

Tiga tahun lalu, sejurus selepas Dailymotion dibeli oleh Vivendi, pasukan kejuruteraan kami menumpukan pada satu matlamat global: untuk mencipta produk Dailymotion yang baharu sepenuhnya.

Berdasarkan analisis kami terhadap bekas, penyelesaian orkestrasi dan pengalaman masa lalu kami, kami yakin bahawa Kubernetes ialah pilihan yang tepat. Sesetengah pembangun sudah mempunyai pemahaman tentang konsep asas dan tahu cara menggunakannya, yang merupakan kelebihan besar untuk transformasi infrastruktur.

Dari perspektif infrastruktur, sistem yang berkuasa dan fleksibel diperlukan untuk mengehoskan jenis aplikasi asli awan yang baharu. Kami memilih untuk kekal di awan pada permulaan perjalanan kami supaya kami dapat membina platform di premis yang paling teguh yang mungkin dengan ketenangan fikiran. Kami memutuskan untuk menggunakan aplikasi kami menggunakan Enjin Google Kubernetes, walaupun kami tahu bahawa lambat laun kami akan berpindah ke pusat data kami sendiri dan menggunakan strategi hibrid.

Mengapa anda memilih GKE?

Kami membuat pilihan ini terutamanya atas sebab teknikal. Di samping itu, adalah perlu untuk menyediakan infrastruktur dengan cepat yang memenuhi keperluan perniagaan syarikat. Kami mempunyai beberapa keperluan untuk aplikasi pengehosan, seperti pengedaran geografi, skalabiliti dan toleransi kesalahan.

Pengembaraan Kubernetes Dailymotion: mencipta infrastruktur di awan + di premis
Kelompok GKE dalam Dailymotion

Memandangkan Dailymotion ialah platform video yang tersedia di seluruh dunia, kami benar-benar ingin meningkatkan kualiti perkhidmatan dengan mengurangkan masa menunggu (pendaman). Terdahulu API kami hanya tersedia di Paris, yang tidak optimum. Saya mahu boleh menjadi tuan rumah aplikasi bukan sahaja di Eropah, tetapi juga di Asia dan Amerika Syarikat.

Kepekaan terhadap kependaman ini bermakna kerja serius perlu dilakukan pada seni bina rangkaian platform. Walaupun kebanyakan perkhidmatan awan memaksa anda untuk membuat rangkaian anda sendiri di setiap wilayah dan kemudian menyambungkannya melalui VPN atau sejenis perkhidmatan terurus, Google Cloud membenarkan anda membuat rangkaian tunggal yang boleh dialihkan sepenuhnya meliputi semua wilayah Google. Ini adalah kelebihan besar dari segi operasi dan kecekapan sistem.

Selain itu, perkhidmatan rangkaian dan pengimbang beban daripada Google Cloud melakukan kerja yang sangat baik. Mereka hanya membenarkan anda menggunakan alamat IP awam yang sewenang-wenangnya dari setiap rantau, dan protokol BGP yang indah menjaga yang lain (iaitu mengalihkan pengguna ke kluster terdekat). Jelas sekali, sekiranya berlaku kegagalan, trafik secara automatik akan pergi ke kawasan lain tanpa campur tangan manusia.

Pengembaraan Kubernetes Dailymotion: mencipta infrastruktur di awan + di premis
Memantau Google Load Balancing

Platform kami juga banyak menggunakan GPU. Google Cloud membolehkan anda menggunakannya dengan sangat berkesan secara langsung dalam kelompok Kubernetes.

Pada masa itu, pasukan infrastruktur tertumpu terutamanya pada timbunan warisan yang digunakan pada pelayan fizikal. Itulah sebabnya menggunakan perkhidmatan terurus (termasuk pakar Kubernetes) memenuhi keperluan kami dan membenarkan kami melatih pasukan untuk bekerja dengan kluster tempatan.

Hasilnya, kami dapat mula menerima trafik pengeluaran pada infrastruktur Google Cloud hanya 6 bulan selepas permulaan kerja.

Walau bagaimanapun, walaupun terdapat beberapa kelebihan, bekerja dengan pembekal awan dikaitkan dengan kos tertentu, yang boleh meningkat bergantung pada beban. Itulah sebabnya kami menganalisis dengan teliti setiap perkhidmatan terurus yang kami gunakan, dengan harapan dapat melaksanakannya di premis pada masa hadapan. Malah, pelaksanaan kluster tempatan bermula pada penghujung 2016 dan strategi hibrid dimulakan pada masa yang sama.

Pelancaran platform orkestrasi kontena tempatan Dailymotion

Musim luruh 2016

Dalam keadaan apabila keseluruhan timbunan sedia untuk pengeluaran, dan berfungsi pada API diteruskan, sudah tiba masanya untuk menumpukan perhatian kepada kelompok serantau.

Pada masa itu, pengguna menonton lebih daripada 3 bilion video setiap bulan. Sudah tentu, kami telah mempunyai Rangkaian Penyampaian Kandungan kami sendiri yang luas selama bertahun-tahun. Kami ingin memanfaatkan keadaan ini dan menggunakan kluster Kubernetes di pusat data sedia ada.

Infrastruktur Dailymotion terdiri daripada lebih daripada 2,5 ribu pelayan di enam pusat data. Kesemuanya dikonfigurasikan menggunakan Saltstack. Kami mula menyediakan semua resipi yang diperlukan untuk mencipta nod induk dan pekerja, serta kluster etcd.

Pengembaraan Kubernetes Dailymotion: mencipta infrastruktur di awan + di premis

Bahagian rangkaian

Rangkaian kami dihalakan sepenuhnya. Setiap pelayan mengiklankan IPnya pada rangkaian menggunakan Exabgp. Kami membandingkan beberapa pemalam rangkaian dan satu-satunya pemalam yang memenuhi semua keperluan (disebabkan oleh pendekatan L3 yang digunakan) ialah Calico. Ia sangat sesuai dengan model infrastruktur rangkaian sedia ada.

Memandangkan kami ingin menggunakan semua elemen infrastruktur yang tersedia, perkara pertama yang perlu kami lakukan ialah memikirkan utiliti rangkaian tempatan kami (digunakan pada semua pelayan): gunakannya untuk mengiklankan julat alamat IP pada rangkaian dengan nod Kubernetes. Kami membenarkan Calico memberikan alamat IP kepada pod, tetapi tidak dan masih tidak menggunakannya untuk sesi BGP pada peralatan rangkaian. Malah, penghalaan dikendalikan oleh Exabgp, yang mengiklankan subnet yang digunakan oleh Calico. Ini membolehkan kami mencapai mana-mana pod dari rangkaian dalaman (dan khususnya dari pengimbang beban).

Cara kami menguruskan trafik kemasukan

Untuk mengubah hala permintaan masuk ke perkhidmatan yang diingini, telah diputuskan untuk menggunakan Pengawal Ingress kerana penyepaduannya dengan sumber kemasukan Kubernetes.

Tiga tahun lalu, nginx-ingress-controller ialah pengawal yang paling matang: Nginx telah wujud sejak sekian lama dan terkenal dengan kestabilan dan prestasinya.

Dalam sistem kami, kami memutuskan untuk meletakkan pengawal pada pelayan bilah 10-Gigabit khusus. Setiap pengawal disambungkan ke titik akhir kube-apiserver bagi kluster yang sepadan. Pelayan ini juga menggunakan Exabgp untuk mengiklankan alamat IP awam atau peribadi. Topologi rangkaian kami membolehkan kami menggunakan BGP daripada pengawal ini untuk menghalakan semua trafik terus ke pod tanpa menggunakan perkhidmatan seperti NodePort. Pendekatan ini membantu mengelakkan trafik mendatar antara nod dan meningkatkan kecekapan.

Pengembaraan Kubernetes Dailymotion: mencipta infrastruktur di awan + di premis
Pergerakan trafik dari Internet ke pod

Kini setelah kami memahami platform hibrid kami, kami boleh menyelidiki lebih mendalam proses migrasi trafik itu sendiri.

Penghijrahan trafik daripada Google Cloud kepada infrastruktur Dailymotion

Musim luruh 2018

Selepas hampir dua tahun membina, menguji dan menala, kami akhirnya mempunyai timbunan Kubernetes penuh yang bersedia untuk menerima sedikit trafik.

Pengembaraan Kubernetes Dailymotion: mencipta infrastruktur di awan + di premis

Strategi laluan semasa agak mudah, tetapi mencukupi untuk memenuhi keperluan. Selain IP awam (di Google Cloud dan Dailymotion), AWS Route 53 digunakan untuk menetapkan dasar dan mengubah hala pengguna ke gugusan pilihan kami.

Pengembaraan Kubernetes Dailymotion: mencipta infrastruktur di awan + di premis
Contoh dasar penghalaan menggunakan Laluan 53

Dengan Google Cloud ini mudah kerana kami berkongsi satu IP merentas semua kluster dan pengguna diubah hala ke kluster GKE terdekat. Untuk kluster kami teknologinya berbeza, kerana IP mereka berbeza.

Semasa penghijrahan, kami berusaha untuk mengubah hala permintaan serantau kepada kelompok yang sesuai dan menilai faedah pendekatan ini.

Oleh kerana gugusan GKE kami dikonfigurasikan untuk menskalakan auto menggunakan Metrik Tersuai, ia naik/turun berdasarkan trafik masuk.

Dalam mod biasa, semua trafik serantau dihalakan ke gugusan tempatan, dan GKE berfungsi sebagai simpanan sekiranya berlaku masalah (pemeriksaan kesihatan dijalankan melalui Laluan 53).

...

Pada masa hadapan, kami mahu mengautomasikan sepenuhnya dasar penghalaan untuk mencapai strategi hibrid autonomi yang terus meningkatkan kebolehcapaian untuk pengguna. Tambahan pula, kos awan telah dikurangkan dengan ketara dan masa tindak balas API telah pun dikurangkan. Kami mempercayai platform awan yang terhasil dan bersedia untuk mengubah hala lebih banyak trafik kepadanya jika perlu.

PS daripada penterjemah

Anda mungkin juga berminat dengan siaran Dailymotion terbaru tentang Kubernetes. Ia didedikasikan untuk penggunaan aplikasi dengan Helm pada banyak kluster Kubernetes dan telah diterbitkan kira-kira sebulan yang lalu.

Baca juga di blog kami:

Sumber: www.habr.com

Tambah komen