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 でパブリッシュ サブスクライブ モデルを作成する
MacにはApache環境が付属していますターミナルを開き、sudo apachectl -v と入...
このキー属性の機能は何ですか?まずは公式の説明を見てみましょう。 kekey 属性は主に、新しいノー...
この記事の例では、画像の切り取りを実現するためのjsの具体的なコードを参考までに共有しています。具体...
この記事では、例を使用して MYSQL パフォーマンス アナライザー EXPLAIN の使用方法を説...
画像をプルする # docker pull codercom/code-server # Docke...
この記事では、ブラインド効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具体...
mysqlrootパスワードの設定と変更初めて MySQL データベースに入ります。 !環境変数にm...
この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...
1. レビューMySQL の起動後にバッファ プールが初期化されます。バッファ プールは N 個の空...
目次1. DateTimePickerの日付選択範囲は現在時刻とそれ以前です2. DateTimeP...
バージョン間でのコマンドの違い: innodb ステータスを表示\G mysql-5.1 エンジン ...
成果を達成するまずHTMLを使って基本的なフレームワークを構築します <本文> <...
方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...
居住地を選択するためのドロップダウンボックスをjQueryで実装するための具体的なコードは参考までに...
tomcat7 のデフォルトのプログラム公開パスは tomcat/webapps/ROOT/ です。...