効果的かつ確実に大規模なクラスタを管理Kubernetes

著者|アリゴールドのドレスシニアテクニカルエンジニア倉砂漠 #はじめは、コンテナの配置の分野で上に出てくる、その先進的なデザインコンセプトと優れた技術アーキテクチャをKubernetes。ますます多くの企業が生産環境Kubernetesの練習に展開し始め、アリババとアリゴールドのドレスKubernetesは広く、本番環境で使用されてきました。Kubernetesは、学生の大多数の出現が大幅にしきい値コンテナアプリケーションの配備が、生産レベルの高可用性クラスタまだKubernetes非常に困難な作業と維持管理を軽減、複雑な分散システムの運用・保守を、開発することができます。この記事は、ゴールドのドレスは、クラスタ管理システムのコアコンポーネントを効果的かつ確実に大規模Kubernetesクラスタを管理する方法である、との意志の詳細アリを共有します。 #[](Https://developer.alipay.com/article/9184?from=lyj#1)システム概要Kubernetesクラスタ管理システムは、完全なクラスタノードのアップグレードや仕事を作成するために便利なクラスタのライフサイクル管理機能を持っている必要があります管理。大規模なシナリオでは、クラスタの変更制御を直接クラスタの安定性に関係し、管理システムの監視、グレー、ロールバック機能は、重要なシステム設計の一つです。また、超大規模なクラスタ、順序内のノードの数は、通常表示され10K、ノードのハードウェア障害、異常なコンポーネントやその他の問題に到達しました。大規模なクラスタ管理システムの初期の設計におけるこれらの異常なシーンの完全なアカウントを取る必要があり、そのシーンからこれらの例外から回復することができるようになります。 このような背景をもとに##デザインパターンは、我々は最終状態のため、クラスタ管理システムを設計しました。クラスタ・システムのタイミングの現在の状態を検出し、矛盾、オペレータは一連の動作を開始し、クラスタが目標駆動状態に達したときに、目標状態と一致するか否かを判定する。共通制御理論設計基準負のフィードバックループ制御システムを閉じ、システムが効果的に干渉ノードは、ハードウェアとソフトウェアの障害に対応する、このシナリオでは、外部の干渉に耐えることができ、ループシステムを閉じました。![ファイル](https://img2018.cnblogs.com/blog/1411156/201908/1411156-20190830112950348-62877794.jpg)## [](https://developer.alipay.com/article/9184?from= 上記#3)アーキテクチャ![ファイル](https://img2018.cnblogs.com/blog/1411156/201908/1411156-20190830112950631-1659168133.jpg)lyj、クラスタエレメントKubernetesクラスタはのために高度に利用可能ですNトラフィック管理マスターノードクラスタ。ビジネスサービスクラスタは、生産事業Kubernetesクラスタです。SigmaBossは便利なインターフェイスと、制御変更プロセスをユーザーに提供するために、クラスタ管理ポータルです。
クラスタオペレータ元のクラスタの展開は、クラスタを作成、削除するために、ビジネスのクラスタを提供し、更新機能、ビジネスクラスタマスターノードまたはコンポーネントの例外は、自動的に隔離し、修復します最終状態設計のためのクラスタ・オペレータは、確実にするためにそのビジネスクラスタマスターノード安定した最終状態。このプログラムは、私たちは、KUBEプログラムにKUBEと呼ばKOKプログラムと呼ばれる、Kubernetes管理Kubernetesを使用しています。
ビジネスクラスタノードは、追加、削除、アップグレード、およびトラブルシューティング機能、機械オペレータを展開し、ノード障害の自己修復コンポーネントは、ビジネスの作業ノードクラスタを管理するために使用されます。最終状態を保持している単一ノードマシンオペレータを提供する能力、クラスタ構成された階調変化の大きさとSigmaBossをロールバックする能力。 #[](Https://developer.alipay.com/article/9184?from=lyj#4)コアコンポーネント K8S CRDベース## [](https://developer.alipay.com/article/9184?from=lyj#5)最終状態保持クラスタ、各クラスタエレメントクラスタにサービスを記述するためにクラスタCRD最終状態を定義しますビジネスクラスタは、クラスタリソースに対応して、作成、削除、作成、削除、および更新するために、ビジネスのクラスタを実現するために、対応するクラスタリソースを更新します。クラスタ・オペレータ業務・ドライブ・アセンブリは、クラスタのクラスタマスターリソース記述の最終状態に到達し、クラスタリソースを監視します。
中央にClusterPackageVersion CRDに維持ビジネスマスターコンポーネントバージョンクラスタ、ClusterPackageVersionリソースレコードマスター(例えば:API-サーバ、コントローラマネージャコンポーネント 、スケジューラ、オペレータなど)画像の、デフォルトの情報パラメータを開始します。ユニークClusterPackageVersionに関連付けられているクラスタリソースは、部品事業クラスタマスターのリリースとロールバックを完了するために、クラスタCRD記録ClusterPackageVersionバージョンを変更します。 ## [](https://developer.alipay.com/article/9184?from=lyj#6)最終状態ノード管理タスクを保持Kubernetesノードクラスタ作業である: - ノード構成システム、カーネルパッチ管理 - ドッカーそのようなインストール、アップグレード、アンAS / kubelet成分 - 最終状態とノード状態管理スケジュール(例えば、鍵配備は、開口DaemonSetスケジューリングを許可する前に完了) - にサービスクラスタマシンCRDで定義された上記自己修復ノード管理タスクを達成するため最終状態で説明ノードを作業、各ノードは、管理ノードを変更することにより、作業リソースマシン、マシンのリソースに対応します。以下に示すように機械CRDはスペック説明した構成要素は、部品実装作業ノードの現在の動作状態のそれぞれに記録ノード名とバージョン、ステータスをインストールする必要があり、定義されています。加えて、機械CRDはまた、この分岐は、後で詳細に説明するが、他のノード管理オペレータと協働するために、プラグイン端状態管理機能を提供します。MachinePackageVersion CRDによって行われた作業に![ファイル](https://img2018.cnblogs.com/blog/1411156/201908/1411156-20190830112950965-429669031.jpg)コンポーネントのバージョン管理ノード。各構成要素、構成及び設置方法のMachinePackageVersion保守情報RPMバージョン。マシンのリソースを実装するために複数の部品を実装する、異なるN MachinePackageVersionに関連付けられています。マシン、MachinePackageVersion CRD最終状態ノードコントローラマシンオペレータの設計と実装に基づきます。機械オペレータは、マシンのリソースを見て、MachinePackageVersion、最終ノードの状態と連続ガードの最終状態に駆動ノード上で実行された操作やメンテナンス作業を解釈します。 ## [](https://developer.alipay.com/article/9184?from=lyj#7)最終状態管理ノードもはや部品等の管理ノードにインストールドッカー/ kubeletに限定ビジネス要求として、私たちは、そのような彼らはスケジューリングのニーズを開くことができ、そしてそのような要求はますますなる前DaemonSetの配備が完了したログ収集を待っているとして実装する必要があります。機械オペレータ管理によって統一最終状態は、システムの機械オペレータおよびカップリングの他の構成要素、およびスケーラビリティを高めるためにバインドされている場合に影響を受けることになります。したがって、我々は、マシンオペレータと他のノードのオペレーションおよびメンテナンス演算子を調整する最終状態ノードを管理するためのメカニズムのセットを設計しました。記録ノードは、スケジュールリスト条件チェックする必要があるかもしれません:以下:! [ファイル](https://img2018.cnblogs.com/blog/1411156/201908/1411156-20190830112951284-627124307.jpg)総量ReadinessGatesを示すように設計
条件ConfigMapました: ConfigMap演算子最終状態ステータス報告の各ノードの動作および保守
アソシエーションを:検出に関連した1演算子外部ノード操作及びメンテナンスや状態条件ConfigMapための対応するサブ最終状態にデータを報告する。1.機械オペレータは、タグによって関連付けられているすべての子ノードを取得しますConfigMap状態、最終状態、および終了状態は、ノードが最終状態がスケジュールに入っていない達していないかどうかをノードがチェック、記録リスト1.機械オペレータ条件ReadinessGates総量に応じて条件マシンの状態を同期させます ##ノード障害のセルフヒーリング我々はすべてのクラスタ内のノードのサイズの増加に伴い、故障物理マシンのハードウェアの一定の確率があることを知って速やかに行に修復されていない場合、クラスタノードは、通常失敗し、物理マシンのリソースのこの部分は、アイドル状態になります。この問題を解決するために、我々は、障害検出、隔離、閉ループ自己修復システム修復のセットを設計しました。以下に示すように、故障検出の態様は、報告およびエージェントはリアルタイム及び故障検出の信頼性を確保する結合活性の検出システムの形態をとる監視(エージェントは、より良好なリアルタイムの報告、アクティブ検出監視システムは、エージェントを報告異常をカバーなくてもよいですシーン)。障害情報は、統一されたイベントの中心部に格納され、コンポーネントまたはシステムクラスタの故障が心配はイベントセンターイベントがこれらのエラーメッセージを取得購読することができます。!、流れを維持するためのハードウェア:[ファイル](https://img2018.cnblogs.com/blog/1411156/201908/1411156-20190830112951772-1556384542.jpg)ノード故障自己修復システムは、以下のような障害の種類に応じて異なる保守手順を作成しますシステムプロセスを再インストールします。修復プロセスの優先度はPAASやMigrateControllerに通知するように移行するラベルの付いたポッドノードは、ポッド移行し、次いで、これらの事前操作を完了、失敗したノード(ノードスケジューリング一時停止)を単離されます後は、ノード(ハー​​ドウェアの保守、重機の操作を回復しようとしますシステムは、等)、スケジュールを再度開きます正常に修復ノード、長期的には、自動的に、手動介入によって処理ノードの調査を復元されません。![ファイル](https://img2018.cnblogs.com/blog/1411156/201908/1411156-20190830112952091-945279333.jpg)## [](https://developer.alipay.com/article/9184?from=原子基準マシン・オペレータは、システムの設計と実装グレースケール変化のとクラスタ寸法をロールバックする能力に提供するリスク防止能力の#9)lyj。本当の変化は、以下のアーキテクチャ図を開始する際に加えて、さらなる変更のリスクを軽減するために、オペレータは、リスクアセスメントを実施します。![ファイル](HTTPS://img2018.cnblogs。COM /ブログ/ 1411156/201908 / 1411156-20190830112952641-128298192.jpg)ハイリスクの変更操作(例:削除されたノード、システムを再インストール)アクセスユニファイドセンターを制限し、センターは、業務の種類ごとの電流制限制限政策を維持トリガー制限した場合、ヒューズが変更されます。変更プロセスが正常で評価するために、我々は、コンポーネントが最も珍しい見つけることができますが、各コンポーネントのヘルスチェック、健康チェックのため、変更前と変更後になりますが、すべての例外のシーンをカバーすることはできません。例外は、インジケータ、自動ヒューズの変更が発生した場合、イベント、監視システムの中心から:(ポッド成功率を作成するなど)そのため、リスク評価プロセスは、システムがクラスタのビジネス指標を取得します。 #[](Https://developer.alipay.com/article/9184?from=lyj#10)まとめこの記事および使用オペレータのためのコア設計段階アリゴールドのドレスKubernetesクラスタ管理システム、コアコンポーネントの多数を共有します最終状態のデザインパターン。将来的には、クラスタサイズが変更を監視することができ、そして灰色がロールバックできるように、モデルの顔に無人の変化をどのように最終状態を探るために、最終状態のデザインパターンのためにオペレータに切り替えられた変更しようとします。

おすすめ

転載: www.cnblogs.com/alisystemsoftware/p/11434085.html