KubeNode:AlibabaCloudネイティブコンテナインフラストラクチャの運用と保守の実践

アリババノードの運用と保守の課題

アリババのシナリオでは、ノードの運用と保守が直面する課題は、主にこれらの側面から生じます:規模、複雑さ、および安定性。

1つ目は大規模です。18年ぶりのクラスターの設立以来、数百のASIクラスターと数十万のノードがオンラインで実行されており、そのうちの1つのクラスター内のノード数は最大で10,000を超える可能性があります。さらに、有名なTaobao、Tmallなど、Alibaba Groupの何万もの異なるアプリケーションが実行されており、コンテナーインスタンスの総数は数百万のスケールです。ASIは、Alibaba ServerlessInfrastructureであるAlibabaServerlessInfrastructureを指します。ASIの概念には、クラスターとノードの管理プレーンとコントロールプレーンの両方が含まれます。各ASIクラスターは、Aliyunの標準OpenAPIを呼び出して作成されたACKホスティングバージョンのクラスターです。さらに、スケジューラーを開発し、多くのアドオンを開発してデプロイし、機能を強化し、パフォーマンスを最適化し、グループのさまざまなグループを接続しました。システムを構築し、フルノードホスティングを実現します。基盤となるコンテナインフラストラクチャを気にするアプリケーション開発および運用担当者は必要ありません。

第二に、環境は非常に複雑です。現在、IaaSレイヤーは、x86サーバーやローカライズされたARMモデルなど、多くの異種モデルを実行しています。同時に、新しいコンピューティングおよびAIビジネスにサービスを提供するために、GPUおよびFPGAモデルもあります。オンラインカーネルバージョンもたくさんあります。4.19は昨年大規模にオンラインになり始めたカーネルバージョンでした。同時に、3.10 /4.9カーネルバージョンのノードの問題も引き続きサポートする必要があります。異なるカーネルバージョンの場合も、大規模なローテーション操作および保守機能が必要です。現在、数万のオンラインアプリケーションには、淘宝網、Tmall、Cainiao、Gaode、Ele.me、コアラ、ヘマなどのさまざまなサービスが含まれています。同時に、オンラインアプリケーションと一緒に混合された安全なコンテナサービスを実行しています。ビッグデータ、オフラインコンピューティング、リアルタイムコンピューティング、検索などのタイプはすべて、オンラインビジネスと同じホスト環境で実行されています。

最後に、安定性には高い要件がありますオンラインビジネスの特徴は、遅延やジッターに非常に敏感であるということです。単一ノードのジッター、改ざん、ダウンタイム、その他の障害は、淘宝網でのユーザーの注文や支払いに影響を与え、ユーザーからの苦情や苦情を引き起こす可能性があるため、全体的な安定性要件は非常に高く、単一ノードの障害を処理する際に高い適時性と有効性が必要です。

KubeNode:クラウドネイティブノードの運用および保守ベースの概要

KubeNodeは、クラウドネイティブ方式に基づいてノードを管理および運用するためにAlibabaによって開発された基本プロジェクトです。従来の手続き型の運用および保守方式と比較して、KubeNodeはCRDをK8および対応するオペレーターのセットに拡張し、オペレーターの完全なセットを提供できます。ノードライフサイクルとノードコンポーネントのライフサイクル管理は、宣言的で最終的な状態指向の方法により、K8sでアプリケーションを管理するのと同じくらい簡単になり、ノードの高度な一貫性と自己修復を実現します。能力。

上の図の右側は、KubeNodeの単純化されたアーキテクチャであり、全体としてこれらの部分で構成されています。

センターには、ノードとノードコンポーネントの管理を担当するマシンオペレーターと、ノード障害の自己修復と修復を担当する救済オペレーターがいます。ノード側にはKubeノードエージェントがあります。このスタンドアロンエージェントコンポーネントは、ウォッチセンターのMachineOperatorとRemedyOperatorによって生成されたCRDオブジェクトインスタンスを担当し、ノードコンポーネントのインストールや障害の自己修復タスクの実行。

アリババはKubeNodeと協力して、スタンドアロンの障害検出にNPDを使用し、統合されたリスク管理のためにKube Defender(Aliの自己開発コンポーネント)に接続します。もちろん、NPDのコミュニティバージョンによって提供される障害検出項目は比較的限られています。Alibabaはコミュニティに基づいて拡張し、Alibabaの長年のノードおよびコンテナの運用と保守の慣行と組み合わせて、多くのノード障害検出項目を追加しました。単一のマシンの障害を検出する機能が大幅に強化されました。

1.KubeNodeとコミュニティプロジェクトの関係

  • http://github.com/kube-node  :関係ありません。プロジェクトは2018年の初めに中止されました。
  • ClusterAPI:KubeNodeは、ClusterAPIノードの最終状態の補足として使用できます。

機能比較:

これは、Alibabaの自社開発のKubeNodeプロジェクトとコミュニティプロジェクトの関係についての説明です。kube-nodeという名前を見ると、少し馴染みがあるかもしれません。githubhttp://github.com/kube-nodeに同じ名前のプロジェクトがあり ますが、実際、このプロジェクトはすでに2018年の初めにありました。停止したので、同じ名前で、2つは関連していません。

さらに、コミュニティのClusterAPIは、K8sクラスターとノードを作成および管理するためのプロジェクトです。2つのプロジェクト間の関係の比較を次に示します。

  • クラスターの作成:ClusterAPIはクラスターの作成を担当し、KubeNodeはこの機能を提供しません。
  • ノードの作成:ClusterAPIとKubeNodeの両方でノードを作成できます。
  • ノードコンポーネントの管理と最終状態のメンテナンス:ClusterAPIは対応する機能を提供しません。KubeNodeはノードコンポーネントを管理し、最終状態を維持できます。
  • ノード障害の自己修復:ClusterAPIは主に、ノードの状態に基づいてノードを再構築する自己修復機能を提供します。KubeNodeは、ノード上のさまざまなハードウェアおよびソフトウェアの障害を自己修復および修復できる、より豊富なノードコンポーネントの自己修復機能を提供します。

一般に、KubeNodeはClusterAPIと連携できます。これはClusterAPIの優れた補足です。

ここで説明するノードコンポーネントは、ノードで実行されているkubeletおよびDockerソフトウェアを指します。Aliは内部でPouchをコンテナランタイムとして使用します。スケジューリングに必要なこれらのコンポーネントであるkubelet、Pouchに加えて、分散コンテナの保管、収集の監視、安全なコンテナ、および障害検出のためのコンポーネントが12以上あります。

通常、kubeletをインストールしてアップグレードします。Dockerは、Ansibleのような1回限りのプロセス指向のアクションによって実行されます。長時間実行されるプロセスでは、ソフトウェアバージョンが誤って変更されたり、バグが発生して機能しなくなったりすることがよくあります。同時に、Alibabaでのこれらのコンポーネントの反復速度は非常に速く、リリースが必要になることがよくあります。 1、2週間以内にフラット化されたバージョン。コンポーネントの高速反復、安全なアップグレード、一貫性のあるバージョンのニーズを満たすために、AlibabaはKubeNodeを独自に開発し、K8s CRDを介してノードとノードコンポーネントを記述し、バージョンの一貫性を確保するためにエンドステート指向の管理を実行します。構成一貫性と動作状態の正確さ。

2.KubeNode-機械オペレーター

上の図は、標準のオペレーター設計であるMachine Operatorのアーキテクチャーです。つまり、CRDの拡張セットと中央コントローラーです。
CRD定義には、ノードに関連するMachineとMachineSet、およびノー​​ドコンポーネントに関連するMachineComponentとMachineComponentSetが含まれます。

中央コントローラーには、Machine Controller、MachineSet Controller、MachineComponentSet Controllerが含まれます。これらはそれぞれ、ノードの作成とインポート、およびノー​​ドコンポーネントのインストールとアップグレードを制御するために使用されます。

インフラプロバイダーは拡張可能であり、さまざまなクラウドベンダーに接続できます。現在、Alibaba Cloudにのみ接続しますが、対応するプロバイダーを実装することで、AWSやAzureなどのさまざまなクラウドベンダーに接続することもできます。

単一マシン上のKubeNodeは、CRDリソースの監視を担当します。新しいオブジェクトインスタンスが見つかると、ノードコンポーネントがインストールおよびアップグレードされ、各コンポーネントが正常に実行されているかどうかが定期的にチェックされ、コンポーネントの実行ステータスが報告されます。 。

1)ユースケース:ノードのインポート

KubeNodeに基づいた既存のノードのインポートプロセスを共有しましょう。

最初に、ユーザーはマルチクラスター管理システム内の既存のノードのインポート操作を送信します。次に、システムは最初に証明書を発行し、KubeNodeエージェントをインストールします。エージェントが正常に実行および開始された後、3番目のステップで送信します。マシンCRD、次に次に、マシンコントローラーはステータスをインポートフェーズに変更し、ノードの準備ができた後、ラベル/汚染をマシンからノードに同期します。5番目のステップはMachineComponentSetです。これは、マシンの情報に従ってインストールするノードコンポーネントを決定し、それをマシンに同期します。最後に、Kube Node Agentは、MachineとMachineComponentの情報を監視して、ノードコンポーネントのインストールを完了し、すべてのコンポーネントが正常に実行された後、ノードのインポート操作が完了します。全体のプロセスは、ユーザーがデプロイメントを送信し、最終的にビジネスポッドを開始するプロセスと似ています。

ノードコンポーネントの最終状態の一貫性には、主にソフトウェアバージョン、ソフトウェア構成、および動作状態の正確性と一貫性が含まれます。

2)ユースケース:コンポーネントのアップグレード

次のコンポーネントのアップグレードプロセスをここで紹介します。これは主に、MachineComponentSetコントローラーによって提供されるバッチアップグレード機能に依存しています。

最初に、ユーザーはマルチクラスター管理システムでコンポーネントのアップグレード操作を送信し、次にバッチごとの循環アップグレードプロセスに入ります。最初にMachineComponentSetを更新し、次にバッチでアップグレードするマシンの数を更新します。 MachineComponentSetコントローラーは、上記のコンポーネントの対応するノード数のバージョン情報を計算して更新します。次に、Kube Node Agentはコンポーネントへの変更を監視し、新しいバージョンのインストールを実行し、ステータスが正常であることを確認してから、コンポーネントのステータスが正常であることを報告します。このバッチのすべてのコンポーネントが正常にアップグレードされたら、アップグレード操作の次のバッチを開始できます。

上記の単一クラスターおよび単一コンポーネントのアップグレードプロセスは比較的単純ですが、10を超えるオンラインコンポーネントと数百のクラスターの場合、すべてのクラスターでバージョンレベリング作業を完了するのはそれほど簡単ではありません。ASIOpsクラスターの統合操作を使用します。運用のためのメンテナンスプラットフォーム。ASIOpsシステムでは、数百のクラスターが限られた数のリリースパイプラインに構成され、各リリースパイプラインはテスト->プレリリース->フォーマルの順序で配置されます。通常のリリースプロセスでは、リリースパイプラインを選択し、事前に設定されたクラスターシーケンスに従ってリリースします。各クラスター内では、1/5/10/50/100 / ...リリースの順序で自動的に実行されます。バッチリリースが完了すると、ヘルスインスペクションがトリガーされます。問題がある場合は自動リリースが一時停止されます。問題がない場合は、観察期間が終了すると次のバッチが自動的にリリースされます。このようにして、コンポーネントの新しいバージョンをリリースするプロセスが安全かつ効率的に完了します。

3.KubeNode-救済オペレーター

次に、障害の自己修復の標準オペレーターでもあるKubeNodeのRemedyオペレーターを共有します。

Remedy Operatorは、CRDと対応するコントローラーのセットで構成されています。CRDの定義には、NodeRemedierとRemedyOperationJobが含まれ、コントローラーにはRemedy Controller、RemedyJob Controllerが含まれ、障害自己修復ルールを備えた登録センターもあります。スタンドアロン側にはNPDとKube NodeAgentがあります。

Host Doctorは、中央側にある独立した障害診断システムであり、クラウドベンダーと接続して、アクティブな運用および保守イベントを取得し、ノード上の障害状態に変換します。Alibaba Cloudパブリッククラウドでは、ECSが配置されている物理マシンまたは計画されているO&M操作のハードウェア障害が標準のOpenAPIの形式で取得されます。ドッキング後、ノードの問題を事前に検出し、ノードを事前に自動的に移行できます。失敗を避けるためのビジネス。

ユースケース:圧縮機の自己修復

ここでは、典型的な自己修復プロセスを、圧縮機の自己修復の場合とともに紹介します。

まず、マルチクラスター管理システムASIキャプテンでCRDによって記述された自己修復ルールを構成します。これらのルールは動的に柔軟に追加でき、対応する修復操作をノード条件ごとに構成できます。

次に、ノードのNPDは、さまざまなタイプの障害が発生したかどうかを定期的にチェックします。カーネルログに「タスクxxxが120秒以上ブロックされました」という異常なログが見つかると、ノードのラミングマシンを特定して提供します。ノードに障害状態を報告し、Remedy Controllerウォッチが変更されると、自己修復修復プロセスがトリガーされます。最初に、Kube Defenderリスクコントロールセンターインターフェイスが呼び出され、現在の自己修復操作が許可されているかどうかが判断されます。が実行され、通過後にRemedyOperationJob自己修復タスクが生成され、Kube NodeAgentウォッチがジョブ後に自己修復操作を実行するようになります。

自己修復プロセス全体が外部のサードパーティシステムに依存していないことがわかります。障害検出はNPDを介して行われ、RemedyOperatorは自己修復修復を実行します。自己修復修復プロセス全体はクラウドで完了します。 -ネイティブな方法で、可能な限り迅速に数分で実行できます。障害が検出され、修復されます。同時に、NPD検出ルールの強化により、処理される障害の範囲は、ハードウェア障害、OSカーネル障害からコンポーネント障害までのフルリンク修復をカバーします。すべての自己修復操作がKubeDefender統合リスク制御センターに接続され、分、時間、および日レベルで自己修復修復フロー制御を実行して、リージョン/ゾーンレベルのネットワーク切断の発生を防止することを強調する価値があります。大規模なioハング、または他の大規模なソフトウェアバグの場合、リージョン全体のすべてのノードの自己回復をトリガーし、より深刻な二次障害を引き起こします。

KubeNodeデータシステム

KubeNodeデータシステムの構築は、SLOの全体的な測定と改善において非常に重要な役割を果たします。

ノード側では、NPDが障害を検出してイベントセンターに報告します。同時に、walleはスタンドアロン側のインジケーター収集コンポーネントであり、CPUなどの一般的なインジケーターを含むノードやコンテナーのさまざまなインジケーター情報を収集します。 /メモリ/ IO /ネットワーク、およびカーネル、セキュリティコンテナなどの他の多くのインジケータ。中央側のPromethes(Alibaba Cloudパブリッククラウド上のARMS製品)は、すべてのノードのメトリックを収集して保存します。また、拡張されたKube State Metricsデータを収集して、MachineOperatorとRemedyOperatorの主要なインジケーター情報を取得します。これらのデータの取得に基づいて、上位層はユーザーと向き合い、市場の監視、障害アラーム、およびフルリンク診断の機能を構成します。

データシステムの構築を通じて、リソース使用率の分析と統計を作成し、リアルタイムの監視とアラームを提供し、障害分析と統計を実行し、KubeNodeノードとノードコンポーネントの全体的なカバレッジ、整合性率を分析することもできます。 、nodeノードの自己修復効率とフルリンク診断機能を提供します。ノードのトラブルシューティング時に、ノードの履歴で発生したすべてのイベントを表示できるため、ユーザーは原因をすばやく特定できます。

今後の見通し

現在、KubeNodeはAlibaba GroupのすべてのASIクラスターをカバーしています。次に、Alibaba Groupの「UnifiedResource Pool」プロジェクトにより、KubeNodeは、より広範囲でより多くのシナリオをカバーし、クラウドネイティブのコンテナー基盤を構築するように推進されます。施設の運用と保守アーキテクチャはより大きな価値を発揮します。

著者について

アリババクラウドの技術専門家である周濤は、2017年にアリババに入社しました。過去数年間、アリババの数十万のクラスターノード管理および制御システムの研究開発を担当し、ダブルイレブンのプロモーションに参加しました。年。2018年末に開始されたグループクラウドプロジェクトにより、マネージドノードはクラウド下の物理マシンからAlibaba Cloudパブリッククラウド上のShenlongベアメタルサーバーまでカバーされ、包括的なクラウドを実現するためのDouble11プロモーションをサポートしました-トランザクションコアシステムのネイティブ変換。

元のリンク

この記事はAlibabaCloudのオリジナルのコンテンツであり、許可なく複製することはできません。

おすすめ

転載: blog.csdn.net/weixin_43970890/article/details/114687951