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 でパブリッシュ サブスクライブ モデルを作成する
UniappにはDingTalk認証ログインがないため、この記事ではDingTalk QRコードログ...
概要連合接続データセットキーワードは、2つのクエリ結果セットを1つに連結し、同一のレコードを除外する...
シンプルな機能: ブラウザの右上隅にあるプラグイン アイコンをクリックすると小さなポップアップ ウィ...
HTML と CSS で実装された登録ページ テンプレート。早速、コードを見てみましょう。更新: ...
マスタースレーブ同期 (マスタースレーブレプリケーションとも呼ばれる) は、マスタースレーブデータの...
なぜこの領域のコンテンツを整理したいのでしょうか。それは、油絵の具とキャンバスを理解する必要があり、...
色のコントラストと調和対照的な状況では、色の相互作用は単一の色によって与えられる感覚とは異なります。...
仮想化1. 環境セントオス7.3 selinuxとファイアウォールを無効にする2. 仮想化環境の構成...
本日、MySQLの圧縮版をインストールする際に問題が発生しました。サービスが起動できず、2、3時間苦...
1. 分業とプロセス<br />Tudou.comでは、プロジェクト開発が中核であり、誰...
これは、ネイティブJSを使用してページングクリックコントロールを実装する必要がある面接の質問です。参...
以下の HTML タグには、基本的に既存のタグがすべて含まれています。数分かけて 1 つずつ参照する...
tomcat を https アクセスに対応させる方法ステップ: (1)キーストアファイルを生成する...
目次概要1. コンポジションAPI 1. ref と reactive の違いは何ですか? 2. 周...
問題: JDBCを使用してMySQLデータベースに接続すると、中国語の文字を挿入すると文字化けした文...