この記事では、Kubernetes のアフィニティ スケジューリングとアンチアフィニティ スケジューリングを中心に、理論と実践を組み合わせて理解を深めます。 まず、一言でまとめると、「アフィニティ スケジューリングは親しいガールフレンドのようなもので、あなたが行くところに私も行きます」ということです。アンチアフィニティ スケジューリングは、決して一緒に遊ぼうとしない 2 人の不機嫌な子供のようなものです。詳しい説明と実際の例については以下を参照してください。 10 分かけて最後まで見れば、必ず何かが得られるでしょう。 1. ポッドをスケジュールする主な方法指定されたノードにポッドをスケジュールするには、主に 4 つの方法があります。
2. アフィニティ スケジューリングが必要な理由は何ですか?nodeName スケジューリング、nodeSelector スケジューリング、taints および tolerances スケジューリングがあるのに、なぜアフィニティ-アンチアフィニティ スケジューリングが必要なのでしょうか? より柔軟で複雑なスケジュール方法を実現します。たとえば、シナリオによっては、2 つの Pod を 1 つのノードにスケジュールしたり、分離と高可用性のために 2 つの Pod を異なるノードに分離したり、指定したノードに Pod をスケジュールしたりすることがあります。 3. アフィニティスケジューリングの前提条件(重要)ラベルは K8S において非常に重要な概念です。シナリオが何であっても、選択とフィルタリングに関連する限り、ラベル フィールドは基本的にマッチングに使用されます。 アフィニティおよびアンチアフィニティ スケジューリングの場合、フィルタリング基準では引き続きノード ラベル フィールドが使用されます。 Node アフィニティ スケジューリングであっても Pod アフィニティ スケジューリングであっても、スケジュールされる対象は Pod です。これらはすべて、アフィニティ ルールに基づいて特定のノードにスケジュールされるポッド、または他のポッドに続いて特定のノードにスケジュールされるポッドを指します (たとえば、ポッド 1 はポッド 2 に続き、ポッド 2 はノード B にスケジュールされ、その後ポッド 1 もノード B にスケジュールされます)。 ノード アフィニティ スケジューリングとポッド アフィニティ スケジューリングの構成は、どちらもオーケストレーション ポッドの yaml ファイルに記述されます。スケジュールされている対象が Pod であるためです。 ノード アフィニティ スケジューリングは、ポッドとノード間の密接な関係を指します。 ポッド アフィニティ スケジューリングは、ポッド間の密接な関係を指します。
ノードアフィニティスケジューリングの図は次のとおりです。 Pod アフィニティ呼び出しと Pod アンチアフィニティ呼び出しは似ています。 4. アフィニティスケジューリングの具体的な概念中国語で「親近感」は近さを意味し、親近感のスケジュールを説明するのに非常に適しています。 アフィニティ スケジューリング: ノード (またはポッド) とポッドが仲良しな友達のような関係です。ポッドは、「ノード (ポッド) がこのラベルを満たしている限り、それは私の良き友人です。友人がいるところならどこへでも行きます。」と言います。 アンチアフィニティ スケジューリング: 2 つのポッドが 2 人の怒った子供たちで、互いに対立しているようなものです。一方が東に行く場合、もう一方は東以外のどの方向にも行くことができます。彼らは同じ場所に行くことはありません。 1. これら3つのスケジュール関係を覚えておくアフィニティ スケジューリングとアンチアフィニティ スケジューリングの関係には、次の 3 種類があります。
2. この2つの親和性表現を覚えておくノード アフィニティまたはポッド アフィニティに関係なく、アフィニティを表現する方法は 2 つあります。
これら 2 つのフィールドも比較的長いです。これらを分解して、RequiredDuringSchedulingIgnoredDuringExecution を RequiredDuringScheduling と IgnoredDuringExecution に分割してみましょう。
3. 式中の演算子アフィニティ式では、次のオプションの演算子を使用する必要があります。
これらの演算子には特定のノードを除外する機能はありませんが、これらのラベルを使用することで除外機能を隠蔽することができます。 4. スコープトポロジキー多くの場所で、topologyKey はトポロジ構築として説明されており、非常に混乱を招きます。実際、それは範囲の概念です。 topologyKey がラベル キーで構成されている場合、このキーに対応するラベルを持つすべてのノードは同じスコープ内にあります。 5. 実際の戦闘理論的な知識は説明されましたが、次のステップは実践を通して理解を深めることです。手順に従って練習することができます。 1.ノード名のスケジューリングたとえば、nodeNameがk8s-worker-2であるノードにPodをスケジュールするには
2.ノードセレクタのスケジューリングたとえば、ラベル「special-app」="specialwebapp" を持つノードに Pod をスケジュールするとします。 ノード情報を表示します。 Pod の yaml オーケストレーション ファイル: Pod がどのマシンにスケジュールされているかを確認します。 3.ノードアフィニティスケジューリングノード アフィニティ スケジューリングは、ノードとポッドの関係を指します。 (1)ハードアフィニティ Pod-Node のハード アフィニティ yaml ファイルを定義します: pod_node_required_affinity.yaml。ファイルの内容は次のとおりです。 k8s-worker-3 ノードにラベルを追加します。 k8s-worker-3 ノードのラベルを確認します。 上記の yaml を実行して Pod をデプロイすると、Pod が k8s-worker-3 ノードにスケジュールされていることがわかります。 (2)ソフトアフィニティ ソフト アフィニティ スケジューリングでは、主に複数のルールを追加し、各ルールに重みを設定します。 yaml ファイルは次のとおりです。 以前の Pod を削除し、k8s-worker-3 ノードの以前のラベルを削除してから、k8s-worker-2 ノードにラベル app2=backend を追加します。 上記のソフト アフィニティ yaml ファイルをデプロイすると、Pod が k8s-worker-2 ノードにスケジュールされていることがわかります。 4. ポッドアフィニティスケジューリングポッド アフィニティ スケジューリングは、ポッド間の関係を指します。 (1)ハードアフィニティ たとえば、Pod1 が Pod2 に続き、Pod2 がノード B にスケジュールされている場合、Pod1 もノード B にスケジュールされます。 ここで 2 つのポッドを準備します。 Pod1 は上記の例を使用して、Node ハード アフィニティを使用して Pod1 を k8s-worker-3 ノードにスケジュールします。次に、Pod2 をデプロイして Pod1 に追従させると、k8s-worker-3 ノードにもスケジュールされます。 次のように、Pod2 の yaml オーケストレーション ファイル pod_pod_required_affinity.yaml を準備します。 Pod2 は Pod1 に続き、k8s-worker-3 ノードにもスケジュールされていることがわかります。 (2)ソフトアフィニティ ソフト アフィニティはハード アフィニティに似ていますが、重みが追加されています。自分で試してみることもできます。 5. ポッドアンチアフィニティスケジューリング(1)反親和性ハード親和性 上記の例に従って、次のように Pod3 の YAML オーケストレーション ファイルを準備します。 Pod アンチアフィニティを使用して、Pod3 と Pod1 が一緒にデプロイされるのを防ぎます。デプロイが完了したら、結果を確認すると、反アフィニティにより Pod3 が k8s-worker-2 ノードにスケジュールされていることがわかります。 (2)反親和性ソフト親和性 アンチアフィニティのソフト アフィニティは、追加の重みがあることを除いて、ハード アフィニティに似ています。自分で試してみることもできます。 VI.結論この記事では主に、Kubernetes のアフィニティ スケジューリングとアンチアフィニティ スケジューリングについて簡単に説明します。この記事を読んだ後、次の 3 つの点を覚えておく必要があります。
|
<<: Kubernetesコンテナの動作原理を1つの記事で理解する
>>: OpenTelemetry に基づく Kubernetes フルリンク監視を 1 つの記事で理解する
マルチクラウドの台頭により、新たな管理上の課題が生じています。クラウド サービス プロバイダー (C...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスブランド部門では、トップ...
Pacificrack では、3 つの安価な VPS を年間 8.88 ドル (61 元) という低...
【世界技術総合レポート】経済観察報は20日午後、深セン市市場監督管理局が行政処罰審問案の「通知」を提...
誰もが人気のある単語で上位にランクインすることを好み、望んでいますが、多くの場合、これらのキーワード...
少し前、私は突然とても落ち込んでしまい、「検索エンジンがなければ世界はどうなるだろう」と考えていまし...
実際、法的意識の弱さと遊び心により、インターネット企業のセキュリティに携わる技術スタッフやセキュリテ...
webdevfish は 2011 年に設立された登録企業です。独自のサーバーを所有しています。一般...
公式サイト: https://bwh89.net 2004年に設立されたカナダの会社で、ハイエンドで...
多くの人のウェブサイトのコレクションが突然減少し、スナップショットが後退しました。これは、ウェブサイ...
Angel は、パラメータ サーバーの概念に基づいた分散型機械学習フレームワークであり、機械学習アル...
2005年に設立されたネパールの電子商取引会社Thuloは、傘下に10のブランドを持っています。同社...
いよいよ、初心者セラー向け SEO 入門ガイドの 3 番目のレッスンです。この章では、SEO 戦略と...
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますインターネ...
sharktech(シャークデータセンター)VPSを購入した兄弟は、VPS移転のニュースを受け取って...