Kubernetes コントローラーとラベルの簡単な分析

Kubernetes コントローラーとラベルの簡単な分析

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の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • K8Sの5つのコントローラーの紹介と使用
  • Pandas 時系列リサンプリング法におけるクローズドとラベルの役割の詳細な説明
  • Kubernetes の特殊属性ラベルの威力

<<:  CSSメディアクエリのアスペクト比を小さくする方法

>>:  JS でパブリッシュ サブスクライブ モデルを作成する

推薦する

Apache ab を使用して HTTP パフォーマンス テストを実行する

MacにはApache環境が付属していますターミナルを開き、sudo apachectl -v と入...

Vue3におけるキーの役割と動作原理についての簡単な説明

このキー属性の機能は何ですか?まずは公式の説明を見てみましょう。 kekey 属性は主に、新しいノー...

jsは画像切り取り機能を実現する

この記事の例では、画像の切り取りを実現するためのjsの具体的なコードを参考までに共有しています。具体...

MYSQL パフォーマンス アナライザー EXPLAIN 使用例分析

この記事では、例を使用して MYSQL パフォーマンス アナライザー EXPLAIN の使用方法を説...

docker を使用してコード サーバーをデプロイする方法

画像をプルする # docker pull codercom/code-server # Docke...

jQuery はシャッター効果を実現します (li 配置を使用)

この記事では、ブラインド効果を実現するためのjQueryの具体的なコードを参考までに紹介します。具体...

一般的なMySQLコマンドの概要

mysqlrootパスワードの設定と変更初めて MySQL データベースに入ります。 !環境変数にm...

CSSスクロールバーのスタイルをカスタマイズする方法の詳細な説明

この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...

MySQL フラッシュリストとダーティページフラッシュメカニズム

1. レビューMySQL の起動後にバッファ プールが初期化されます。バッファ プールは N 個の空...

Vue Element UIの使用時に遭遇した問題をまとめる

目次1. DateTimePickerの日付選択範囲は現在時刻とそれ以前です2. DateTimeP...

MySQL 4.1/5.0/5.1/5.5/5.6の主な違い

バージョン間でのコマンドの違い: innodb ステータスを表示\G mysql-5.1 エンジン ...

html+css3で実装されたログインインターフェース

成果を達成するまずHTMLを使って基本的なフレームワークを構築します <本文> <...

mysqlはルートユーザーと一般ユーザーを作成し、機能を変更および削除します。

方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...

jQueryは居住地を選択するためのドロップダウンボックスを実装します

居住地を選択するためのドロップダウンボックスをjQueryで実装するための具体的なコードは参考までに...

Tomcatのデフォルトプログラム公開パスの使用と変更についての説明

tomcat7 のデフォルトのプログラム公開パスは tomcat/webapps/ROOT/ です。...