01 k8sの一般的なコントローラー以前、Pod は k8s クラスター内の最小のスケジューリング単位であることを学びました。Pod は、一時停止コンテナ + アプリケーション コンテナで構成されます。 k8s では、1 つのリソース オブジェクトが別のリソース オブジェクトを管理することがよくあります。このタイプのリソース オブジェクトを「コントローラー」と呼びます。 コントローラーの種類とその機能について簡単に見てみましょう。実際、各コントローラーには独自の特徴があります。後で 1 つずつ分析します。今は、一般的なアイデアを持っているだけで十分です。 RCコントローラーこれは、特定のポッドのレプリカの数がいつでも特定の期待値を満たすという、予想されるシナリオを定義します。たとえば、MySQL の 1 マスター 2 スレーブ構造では、常に 2 つのスレーブ データベースが存在することが想定されます。それでも不十分な場合は、スレーブ データベースを拡張する必要があります。 その定義には、次の 3 つの主要なパラメータが必要です。 1. 予想されるポッド数 2. ポッドラベル(タイプ識別子) 3. 新しいポッド用のポッドテンプレートを作成する その一般的な構造は次のとおりです。 APIバージョン: vl 種類: レプリケーションコントローラ メタデータ: 名前: rc-mysql-slave 仕様: レプリカ: 2 # 期待値 セレクタ: # タグ アプリ: mysql テンプレート: # テンプレート xxx: xxx 上記のテキストを比較すると、RC の基本的な YAML ファイル テンプレートがわかります。 RC が定義され、k8s マスターに送信されると、コントローラー マネージャーは現在存続しているターゲット Pod を検査し、現在存続している Pod が予想される Pod と等しいことを確認します。予想される Pod の数より多い場合は削除され、少ない場合は作成されます。 デプロイメント コントローラーこれは、k8s バージョン 1.2 で導入された新しい概念です。このコントローラーは、RC コントローラーと 90% 類似しています。RC との違いは、現在の Pod の「デプロイメントの進行状況」をいつでも取得できることです。 yaml ファイルの定義は次のとおりです。 apiバージョン: extensions/vlbetal 種類: デプロイメント メタデータ: 名前: dep-mysql-slave 仕様: レプリカ: 2 セレクタ: xxx:xxxx テンプレート: xxx:xxxx Deployment を使用すると、RC が使用されるほぼすべてのシナリオを Deployment に置き換えることができます。 ステートフルセットコントローラこのコントローラーは特定の Pod の期待値も生成しますが、生成する Pod がステートフルであるという点で RC や Deployment とは異なります。 RC と Deployment によって生成される Pod では、1 マスター 2 スレーブ アーキテクチャの MySQL の 2 つのスレーブ ライブラリと同様に、予想される数の Pod のみを生成する必要があります。彼らには秩序や重さの概念がありません。 Statefulset コントローラーによって制御される Pod は、生成順序または重みにおいて一定の論理関係を持ちます。たとえば、MySQL マスタースレーブアーキテクチャでは、最初にマスターノードを生成し、次にスレーブノードを生成する必要があります。この場合、statefulset を使用する方が適切です。 よく使用されるコントローラーの種類は他にもいくつかありますが、これについては次回詳しく説明します。ここでは、「コントローラー」の概念だけを知っておく必要があります。 02 ラベルのコンセプト前回の記事では、k8s の Pod の yaml ファイル内のいくつかの重要なフィールドについて説明しました。今日は、Pod の別の属性である Label について見ていきます。 ラベルはラベルを意味し、その形式もキーと値の形式です。Pod、Node、RC などを含むがこれらに限定されない、k8s クラスター内のオブジェクトに添付できます。リソース オブジェクトとラベル間のバインディング関係は、1 対 1 または多対 1 にすることができます。異なるラベルを使用して、リソースをグループで管理できます。 リソースにラベルを付けた後、次のようにラベル セレクターを使用してスケジュールするリソースを選択できます。 apiバージョン: vl 種類: ポッド メタデータ: 名前: myweb ラベル: アプリ: MySQL 上記の例では Pod を定義しており、そのラベルは app=mysql です。 次に、「コントローラー」を定義し、コントローラー内のラベル セレクターを使用して app=mysql の Pod を選択し、次のようにこの Pod のコピーを 2 つクラスター内に保持します。 apiバージョン: vl 種類: レプリケーションコントローラ メタデータ: 名前: myweb 仕様: レプリカ:2 セレクタ: アプリ: MySQL テンプレート: xxxx さん Selector の新しいバージョンでは、主に次のパラメータに基づいて、より詳細なフィルタリング条件を指定することもできます。 apiバージョン: vl 種類: レプリケーションコントローラ メタデータ: 名前: myweb 仕様: レプリカ:1 セレクタ: マッチラベル: アプリ: myweb 一致表現: - {キー: aaa、パラメータ: In、値: [mysql-slave]} - {キー: bbb、演算子: Notin、値: [mysql-master)} テンプレート: xxxx さん 1 つのパラメータは matchLabels であり、その後にキーと値の形式で複数のラベル条件を続けることができます。 もう 1 つのパラメータは matchExpression で、配列を指定して条件演算と組み合わせることができます。上記の例では、aaa パラメータを持つポッドは mysql-slave にありますが、bbb パラメータは mysql-master にないことを意味します。 これら2つのパラメータが同時に出現した場合、それらは自動的にAND演算され、その共通部分がポッドをフィルタリングするための最終的なフィルタ条件として使用されます。 タグを使用すると、「コントローラ」が制御対象オブジェクトを選択する際の柔軟性と利便性が向上することがわかります。 上記はKubernetesコントローラーとラベルの詳細についての簡単な分析です。Kubernetesコントローラーとラベルの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: JS でパブリッシュ サブスクライブ モデルを作成する
1. Dockerのインストールと設定 #CentOS をインストールし、Docker パッケージを...
この記事では、Docker を使用して Centos6 に Redis マスター/スレーブ データベ...
VMware Workstation 14 ProにCentOS 7.0をインストールする具体的な方...
MySQL データベース管理ソフトウェアには、エンタープライズ エディションとコミュニティ エディシ...
新しく作成された Web サイトの場合は、ASP.NET MVC5 を例に挙げます。セッションを処理...
MGR (MySQL グループ レプリケーション) は、バージョン 5.7 で追加された新しい機能...
Openlayers は、WebGIS クライアント向けのモジュール式で高性能かつ機能豊富な Jav...
HTML メタビューポート属性の説明ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウ...
簡単に言えば、MySQL ワーム レプリケーションは、クエリされたデータを指定されたデータ テーブル...
序文前回はLinearLayoutについて説明しました。今回はFrameLayoutの使い方を説明し...
** Linuxにmysql-8.0.20をインストールする**環境の紹介オペレーティングシステム:...
この記事の例では、Androidの9グリッド画像を表示するための具体的なコードを参考までに共有してい...
同僚から助けを求められました。バックエンド システムへのログインは成功したものの、システムには正常に...
ユーザーを作成します: 'oukele' によって識別されるユーザー 'ou...
1. 単一マシン環境の構築# 1.1 ダウンロードZookeeper の対応するバージョンをダウンロ...