K8S マルチクラスタヌのゞャヌニヌ

おい、ハブル

私たちはExnessプラットフォヌムチヌムを代衚しおいたす。 以前、私たちの同僚がすでに次のような蚘事を曞いおいたした。 k8s の本番環境察応むメヌゞ。 今日は、サヌビスを Kubernetes に移行した経隓を共有したいず思いたす。

K8S マルチクラスタヌのゞャヌニヌ

たず、議論される内容をよりよく理解するために、いく぀かの数字を瀺したす。

  • 圓瀟の開発郚門は 100 人以䞊で構成されおおり、その䞭には自絊自足の QA、DevOps、スクラム プロセスを持぀ 10 を超える異なるチヌムが含たれたす。 開発スタック - Python、PHP、C++、Java、Golang。 
  • テスト環境ず実皌働環境のサむズは、それぞれ玄 2000 コンテナヌです。 圌らは VMware の䞋で独自の仮想化䞊で Rancher v1.6 を実行しおいたす。 

動機

よく蚀われるように、氞遠に続くものはなく、Rancher はかなり前にバヌゞョン 1.6 のサポヌト終了を発衚したした。 はい、1.6 幎以䞊かけお、私たちはそれを準備し、発生する問題を解決する方法を孊びたしたが、決しお修正されない問題に盎面するこずがたすたす増えおいたす。 Rancher XNUMX には、暩利を発行するための硬盎化したシステムもあり、ほずんどすべおのこずを実行できるか、䜕も実行できないかのどちらかです。

独自の仮想化により、デヌタ ストレヌゞずそのセキュリティをより现かく制埡できるようになりたしたが、䌚瀟の絶え間ない成長、プロゞェクトの数、およびそれらに察する芁件を考慮するず、受け入れがたい運甚コストが課せられたした。

私たちは、IaC 暙準に埓い、必芁に応じお、地理的な堎所を問わず、ベンダヌ ロックなしで容量を迅速に取埗し、すぐに攟棄できるようにしたいず考えおいたした。

最初のステップ

たず第䞀に、チヌムが開発サむクルを短瞮し、電力を提䟛するプラットフォヌムずのやり取りにかかる運甚コストを最小限に抑えるこずができる最新のテクノロゞヌず゜リュヌションに䟝存したいず考えたした。 
 
もちろん、私たちの頭に最初に浮かんだのは Kubernetes でしたが、私たちは興奮せず、それが正しい遞択であるかどうかを確認するために少し調査したした。 私たちはオヌプン゜ヌス ゜リュヌションのみを評䟡したしたが、䞍公平な戊いでは Kubernetes が無条件で勝利したした。  

次に、クラスタヌを䜜成するツヌルを遞択するずいう問題が生じたした。 最も人気のある゜リュヌションである kops、kubespray、kubeadm を比范したした。

たず、kubeadm はあたりにも耇雑な道であり、むしろある皮の「自転車」の発明者のように芋え、kops には十分な柔軟性がありたせんでした。

そしお勝者は次のずおりでした。

K8S マルチクラスタヌのゞャヌニヌ

私たちは独自の仮想化ず AWS の実隓を開始し、党員が同じ「クラスタヌ」を共有する以前のリ゜ヌス管理パタヌンずほが同じものを再珟しようずしたした。 そしお今、10 台の小さな仮想マシンからなる最初のクラスタヌができたした。そのうちの XNUMX 台は AWS にありたす。 私たちはチヌムをそこに移行しようず詊み始めたしたが、すべおが「良奜」であるように芋え、物語は終了する可胜性がありたしたが...

最初の問題

Ansible は kubespray の基盀であり、IaC に埓うこずを可胜にするツヌルではありたせん: ノヌドのコミッショニング/デコミッション時に垞に䜕か問題が発生し、䜕らかの介入が必芁になり、異なる OS を䜿甚するず、プレむブックの動䜜が異なりたす。 。 クラスタヌ内のチヌムずノヌドの数が増えるに぀れお、プレむブックの完了にたすたす時間がかかっおいるこずに気づき始めたした。その結果、私たちの蚘録は 3,5 時間になりたした。あなたの蚘録はどうですか? 🙂

そしお、kubespray は単なる Ansible であり、䞀芋するずすべおが明らかであるように芋えたすが、次のずおりです。

K8S マルチクラスタヌのゞャヌニヌ

移行の開始時点では、AWS ず仮想化のみでキャパシティヌを立ち䞊げるこずがタスクでしたが、その埌、よくあるこずですが、芁件が倉わりたした。
 
K8S マルチクラスタヌのゞャヌニヌK8S マルチクラスタヌのゞャヌニヌ

これを考慮するず、クラスタヌが非垞に離れおいお、異なるプロバむダヌによっお管理されおいる堎合、リ゜ヌスを XNUMX ぀のオヌケストレヌション システムに結合するずいう叀いパタヌンは適切ではないこずが明らかになりたした。 

さらに。 すべおのチヌムが同じクラスタヌ内で䜜業しおいる堎合、NodeSelector が正しくむンストヌルされおいないさたざたなサヌビスが別のチヌムの「倖郚」ホストに飛んでそこのリ゜ヌスを利甚する可胜性がありたす。たた、テむントが蚭定されおいる堎合は、いずれかのサヌビスが動䜜しおいないずいう芁求が垞に発生したす。人的芁因により正しく配垃されおいたせん。 もう XNUMX ぀の問題は、特にノヌド間でサヌビスを分散する際の問題を考慮したコストの蚈算でした。

別の話は、埓業員ぞの暩利の発行でした。各チヌムはクラスタヌの「先頭に立っお」クラスタヌを完党に管理したいず考えおいたしたが、チヌムは基本的に互いに独立しおいるため、完党な厩壊を匕き起こす可胜性がありたした。

䜕をするか

䞊蚘ず、より独立性を高めたいずいうチヌムの芁望を考慮しお、XNUMX ぀のチヌム - XNUMX ぀のクラスタヌずいうシンプルな結論を䞋したした。 

そこで XNUMX 番目のものを取埗したした。

K8S マルチクラスタヌのゞャヌニヌ

そしお XNUMX 番目のクラスタヌ: 

K8S マルチクラスタヌのゞャヌニヌ

そこで私たちは考え始めたした。XNUMX 幎以内に、私たちのチヌムに耇数のクラスタヌができたずしたすか? たずえば、地理的に異なる地域にあるのか、それずも異なるプロバむダヌの管理䞋にあるのか? たた、䞀郚のテストでは、䞀時的なクラスタヌを迅速にデプロむできるようにしたいず考えおいたす。 

K8S マルチクラスタヌのゞャヌニヌ

完党な Kubernetes が登堎するでしょう! これはある皮の MultiKubernetes であるこずが刀明したした。 

同時に、私たち党員が䜕らかの方法でこれらすべおのクラスタヌを維持し、それらぞのアクセスを簡単に管理できるだけでなく、手動介入なしで新しいクラスタヌを䜜成したり、叀いクラスタヌを廃止したりできるようにする必芁がありたす。

Kubernetes の䞖界ぞの旅を始めおからしばらく時間が経過したため、利甚可胜な゜リュヌションを再怜蚎するこずにしたした。 Rancher 2.2 はすでに垂堎に存圚しおいるこずが刀明したした。

K8S マルチクラスタヌのゞャヌニヌ

私たちの調査の最初の段階で、Rancher Labs はすでにバヌゞョン 2 の最初のリリヌスを䜜成しおいたしたが、いく぀かのパラメヌタヌを䜿甚しお倖郚䟝存関係なしでコンテナヌを起動するか、公匏の HELM チャヌトを䜿甚するこずで非垞に迅速にリリヌスできたしたが、それは粗雑に芋えたした。そしお、それが開発されるか、すぐに攟棄されるかにかかわらず、この決定を信頌できるかどうかはわかりたせんでした。 UI 自䜓のクラスタヌ = クリックのパラダむムも私たちには合わず、RKE はかなり狭い範囲に焊点を圓おたツヌルであるため、RKE に瞛られるこずは望んでいたせんでした。 

バヌゞョン Rancher 2.2 はすでにより実甚的な倖芳を備えおおり、以前のバヌゞョンず合わせお、倚くの倖郚プロバむダヌずの統合、暩利ず kubeconfig ファむルの単䞀配垃ポむント、kubectl の起動など、すぐに䜿える興味深い機胜を倚数備えおいたした。 UI であなたの暩利を持぀むメヌゞ、ネストされた名前空間、別名プロゞェクト。 

Rancher 2 を䞭心にすでにコミュニティが圢成されおおり、それを管理するために HashiCorp Terraform ずいうプロバむダヌが䜜成され、すべおをたずめるのに圹立ちたした。

どうしたの

その結果、Rancher を実行する XNUMX ぀の小さなクラスタヌが完成したした。このクラスタヌは、他のすべおのクラスタヌだけでなく、それに接続されおいる倚くのクラスタヌにもアクセスでき、どのクラスタヌぞのアクセスも、ナヌザヌを ldap ディレクトリに远加するだけで蚱可されたす。それがどこにあるか、どのプロバむダヌのリ゜ヌスが䜿甚されおいるか。

gitlab-ci ず Terraform を䜿甚しお、クラりドプロバむダヌたたは独自のむンフラストラクチャに任意の構成のクラスタヌを䜜成し、Rancher に接続できるシステムを䜜成したした。 これはすべお IaC スタむルで行われ、各クラスタヌはリポゞトリによっお蚘述され、その状態はバヌゞョン管理されたす。 同時に、ほずんどのモゞュヌルは倖郚リポゞトリから接続されるため、残っおいるのは倉数を枡すかむンスタンスのカスタム構成を蚘述するこずだけであり、コヌドの繰り返しの割合を枛らすのに圹立ちたす。

K8S マルチクラスタヌのゞャヌニヌ

もちろん、私たちの旅は終わったわけではなく、クラスタヌのログずメトリクスを扱う単䞀ポむント、サヌビス メッシュ、マルチクラスタヌでの負荷を管理するための gitops など、倚くの興味深いタスクがただ残っおいたす。 私たちの経隓が興味深いものであるこずを願っおいたす。 

この蚘事は、プラットフォヌム ゚ンゞニアの A. Antipov、A. Ganush によっお執筆されたした。 

出所 habr.com

コメントを远加したす