Kubernetes (k8s) ラベルの詳細

Kubernetes (k8s) ラベルの詳細

ポッド コントローラーを使用して作成されたポッドの IP アドレスと名前は、ポッドに障害が発生すると変更されることがわかっています。ポッド アクセスの問題を解決するために、サービスを作成しました。サービスの IP アドレスにアクセスすることでポッドにアクセスできます。ここで問題となるのは、サービスがポッドとどのように関連付けられるかということです。ポッド制御を使用して k8s 上にポッドを作成すると、ポッドに障害が発生した後、対応するポッドは対応するコントローラーによって再起動または再構築されます。ポッドが再構築されると、対応する IP アドレスと名前が変更されるため、IP アドレスと名前でポッドを関連付けることはできません。ではポッドを関連付けるにはどうすればいいのでしょうか? k8s では、ラベルとラベルセレクターのメカニズムを使用して、リソース間の関連付けを実現します。

タグとは何ですか?その機能は何ですか?

いわゆるラベルはキー値データを指します。 k8s 上のあらゆるリソースにラベルを付けることができます。リソースを作成するときに構成リストで指定することも、リソースを作成した後にコマンドを使用してラベルを追加することもできます。ラベルを使用すると、ラベルに応じて対応するリソースを管理できます。リソースには複数のラベルを付けることができ、ラベルは複数のリソースに添付できます。ラベルはリソースを論理的にグループ化するために使用され、同じラベルを持つリソースはグループ化されることがわかります。ラベルの役割は、ユーザー リソース管理を容易にすることです。たとえば、k8s 上で数百のポッドが動作している場合、同じ機能を持つポッドを管理したい場合、類似の機能を持つポッドに同じラベルを添付し、これらのポッドを管理するときに、指定したラベルを持つポッドを直接指定することができます。

1. Kubernetes ラベルとは何ですか?

k8s タグを学習するには、次の側面から学習する必要があります。まず、k8s タグとは何かを知る必要があります。

k8s では、ラベルは k8s オブジェクト (Pod など) に添付されるキーと値のペアです。

タグの例を以下に示します。

 「メタデータ」 : {

「ラベル」 :{

"キー1" : "値1"
"キー2" : "値2"
}
}

タグには主に 2 つの機能があります。

  • 1 つは、タグは、ユーザーにとって意味があり関連性があるものの、コア システムにとって直接意味を持つわけではないオブジェクトの識別プロパティを指定することを目的としています。
  • 2 番目に、タグを使用してオブジェクトのサブセットを整理および選択できます。

ラベルの主な特徴は次のとおりです。

  • 各オブジェクトは、キーと値のタグのセットを定義できます。
  • 各キーは特定のオブジェクトに対して一意である必要があります。
  • タグを使用すると、効率的なクエリと監視操作が可能になり、ユーザー インターフェイスとコマンド ラインの両方に最適です。

2. ラベルデザインの目的

タグを設計する主な目的は、クライアントがこれらのマッピングを保存する必要なく、ユーザーが独自の組織構造をシステム オブジェクトに疎結合方式でマッピングできるようにすることです。

次のようなタグの例がいくつかあります。

リリース バージョンを区別する場合は、以下を指定できます。

  • 「リリース」:「カナリア」
  • 「リリース」:「開発」
  • 「リリース」:「ベータ」
  • 「リリース」:「安定」

実行環境を定義するときに、以下を指定できます。

  • 「環境」:「開発」
  • 「環境」:「QA」
  • 「環境」:「生産」

3. タグ構文

次に、タグの構文を学びましょう。

1. プレフィックス:

  • プレフィックスはオプションです。
  • 指定する場合、プレフィックスは DNS サブドメインである必要があります。つまり、合計 253 文字以内のドット「.」で区切られた一連の DNS ラベルと、それに続くスラッシュ「/」です。
  • プレフィックスを省略すると、タグ キーはユーザー専用であると見なされます。エンドユーザー オブジェクトにラベルを追加する自動化システム コンポーネント (例: kube-scheduler、kube-controller-manager、kube-apiserver、kubctl、またはその他のサードパーティ自動化ツール) では、プレフィックスを指定する必要があります。

2. 氏名:

  • 名前フィールドは必須です
  • 63 文字以下で、先頭と末尾に英数字 "[a-z0-9A-Z]"、ダッシュ "—"、アンダースコア "_"、ドット "." を使用する必要があります。および先頭の英数字

3. まとめ: 有効なタグ値

  • 63 文字以下である必要があります (空でも可)。
  • タグ値が空でない限り、先頭と末尾は英数字「[a-z0-9A-Z]」でなければなりません。
  • ダッシュ「—」、アンダースコア「_」、ドット「.」が含まれます。および先行する英数字

例: これは、環境が qa、アプリが nginx ラベルであるポッド構成ファイルです。

 APIバージョン: v1
種類: ポッド
メタデータ:
名前: ラベル- デモ
ラベル:
環境生産
アプリ: nginx
仕様:
コンテナ:
- 名前: nginx
イメージ: nginx : 1.14.2
ポート:
- コンテナポート: 80

4. ラベル選択演算子

次に、ラベル選択演算子について学びましょう。ラベル選択演算子には 2 種類あります。

  • 1 つは等価要件に基づいています。等価ベースまたは不等価ベースの要件により、タグのキーと値によるフィルタリングが可能になります。許容される演算子は「=」、「=="」、「!="」です。
  • 1 つはセットベースの要件です。セットベースのタグ要件を使用すると、値のセットによってキーをフィルターできます。 「in」、「notin」、「exists」の 3 つの演算子をサポートします。

最後に、API を使用してタグを使用する方法を学びましょう。上記のラベル セレクターは両方とも、REST クライアント経由でリストまたはウォッチ リソースで使用できます。

等しい値の要件に基づいて、次のコマンドを使用してポッドを取得できます。

 Kubectl get pods –l 環境- 本番環境、 = フロントエンド

コレクションの要件に基づいて、次のコマンドを使用してポッドを取得できます。

 Kubectl get pods –l '環境( production )、 ( frontend ) '

5. ラベルの使用

K8S のリソース ラベル

1. 説明

ラベル:

  • リソースフラグ
  • 形式: キー=値
  • 複数のタグを追加または削除できます

ラベル セレクタラベル セレクタ:

  • リソースを選択する場合
 名前= 名前1
名前!= 名前1
( name1name2 ) 内のname
名前が ( name1name2 ) ありません

2. 手順

(1)ヘルプ:

 kubectl ラベル--help

(2)タグ付け:

 ポッド: kubectl ラベルポッド、 busybox アプリ= Busybox
ノード: kubectl ラベルノードk8s - node01 k8s - node02 env = test

(3)表示:

  • ポッドのbusyboxタグを表示します。
 kubectl get pods busybox -- 表示- ラベル
  • デフォルトの名前空間内のすべてのポッド リソースのラベルを表示します。
 kubectl get pods -- show - ラベル
  • 指定された名前空間を表示します。
 kubectl get pods - n kube - system -- show - labels

(4)更新:

ラベルを変更するには、--overwrite パラメータを追加します。

 kubectl get pods - n kube - system -- show - labels

(5)タグでフィルタリング:

  • ラベルを表示せずに、デフォルトの名前空間内のラベル キー app を持つポッドを一覧表示します。
 kubectl get pods -l app
  • ラベルを表示せずに、デフォルトの名前空間でラベル キーが app、値が busybox であるポッドを一覧表示します。
 kubectl ポッドを取得- l app = busybox
  • 複数のフィルター条件:
 kubectl get po - l バージョン!= v1アプリ= nginx

(6)削除:

 ポッド: kubectl ラベルPO ビジーボックスアプリ- - n kube - パブリック
ノード: kubectl ラベルノードk8s - node02 env -

3. 構成

(1) label-nginx.yamlを作成する

 APIバージョン: v1
種類: ポッド
メタデータ:
名前: nginx
名前空間: dev
ラベル:
バージョン: "1.0.0"
環境: "テスト"
仕様:
コンテナ:
- 画像: nginx
imagePullPolicy : IfNotPresent
名前: ポッド
ポート:
- 名前: nginx - ポート
コンテナポート: 80
プロトコル: TCP

(2)作成する

 kubectl 作成- f ラベル- nginx .yaml

(3)削除

 kubectl 削除- f ラベル- nginx .yaml

以上がK8sタグの紹介です。

<<:  弾性スケーリングのための5つの条件と6つの教訓をまとめました

>>:  Kubernetes1.24.3はHelm経由でMetrics-Serverをインストールします

推薦する

launchvps: 米国東海岸の高性能 VPS プロモーション、年間 24 ドルから

launchvps はペンシルバニア州のデータセンターで VPS を宣伝しています。この VPS は...

マイクロソフトとデルが協力してハイブリッドクラウドを再構築

現在、企業ユーザーはパブリッククラウドにますます注目しています。同時に、自社構築のプライベートクラウ...

Weiboマーケティングに良い方法はありますか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス微博マーケティングとは、...

人気のビッグモデルはクラウド コンピューティング市場に何をもたらすのでしょうか?

昨今、大型モデルは間違いなく最もホットなトレンドの一つです。 2022年12月、ChatGPTが突如...

ブラックジューン後のウェブサイト最適化はどこで行うべきでしょうか?

ブラックジューン後、ウェブサイトの最適化はどこへ向かうべきでしょうか?この疑問に悩む人は多いのではな...

ウェブサイトのキーワードランキングを向上させる方法

Baidu がアルゴリズムの更新を続けた結果、多くの SEO 実践者は SEO の終焉が近づいている...

成長の秘密: Didi はどのようにして最も効果的なチャネルと成長方法を発見したのでしょうか?

私は2015年8月にDidiに入社して以来、新しい相乗りオーナーの誘致、シャトルバス利用者の増加、ミ...

個人の映画ウェブサイトを運営する最良の方法は、卓越性と革新性を目指すことです

うまく運営されている個人の映画ウェブサイトは、大量のデータがあるため、確かに多くのトラフィックをもた...

ブランドの越境マーケティングをどのように行うかという 5 つの側面についてお話ししましょう。

月給5,000~50,000のこれらのプロジェクトはあなたの将来です以前、六神花水とRIOが共同で花...

オンラインプロモーションは今役に立つのか?役に立つのか?

オンラインマーケターとして、私は今困惑しています。オンライン情報がたくさんある中で、どうすればオンラ...

個人データのバックアップの一般的なソリューション

パソコン内のデータ、特に記事、写真、ビデオなどの個人的に作成されたデータは、通常、非常に貴重です。ハ...

SEOの開発とソリューションに立ち向かう

私が初めて SEO に触れたのは 2002 年です。SEO に携わる人なら、2003 年の中国の S...

月額29元のNatyunの米国3ネットワークCN2 GIAラインVPSの簡単なレビュー

Natyun は主に米国と香港で VPS サービスを提供しています。米国の VPS は主に Cera...

プロモーション チャネルの大規模なコレクション。必要なものを見つけてください。

1 WeChatは半閉鎖的なサークルです。「良いワインには茂みは不要」。コンテンツがどれだけ優れてい...