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をインストールします

推薦する

HTML5 は WAP ウェブページに破壊的な変化をもたらす: NetEase Weibo の実用的開発

HTML5 は、国内外のインターネット開発チームからますます支持されています。海外では、Google...

フルGCとマイナーGCの違いが分からない

[[317199]]この記事では、主に JVM のさまざまな GC を紹介し、誰もがこれらの概念を明...

地域医療業界のウェブサイト運営について語る

近年の民間医療産業の急成長により、医療産業はあらゆる産業の中で最も利益率が高く、儲かる産業であると誰...

コンテナと VM の違いは何ですか?存在しない

ハイパーバイザー テクノロジーは、クラウド コンピューティングの誕生以来、その基礎の 1 つとなって...

インターネット マーケティング: 「大きくて完全」 vs. 「小さくて美しい」

オンラインマーケティングといえば、多くの人がすぐに SEO、SEM、EDM などの言葉を思い浮かべま...

クラウド移行時に企業が注意すべき問題は何ですか?

インターネット技術の継続的な発展に伴い、クラウド コンピューティングやその他の関連技術を導入する企業...

Kvmla - 旧正月用に100元ゲットして無料トップアップ、日本、シンガポール、香港のVPSが20%オフ、Windows内蔵

国内老舗商人KVMLAのDingyou Yearプロモーションが始まりました:[1]日本VPS、香港...

ブランドマーケティング予算が電子商取引に偏っているのはなぜでしょうか?

この記事では、なぜますます多くの企業のマーケティング予算が徐々に e コマース プラットフォームに移...

検索エンジンがJSを識別できないことを利用してブラックハットSEOを行うことについての簡単な説明

最近、Fuqing SEO では、主にスパイダーが JS ファイルを適切に識別できないという事実を利...

現在の状況で医療ウェブサイトはどのようにして Baidu でのランキングを最適化できるでしょうか?

検索エンジンのアルゴリズムが更新されて以来、多くの業界のウェブサイト、特に医療ウェブサイトはさまざま...

これらのブランドマーケティングの取り組みは無駄です | 4つの否定的な事例を共有

数日前、広告のスローガンを書いていたとき、 Li Jiaoshouのコピーライティングチュートリアル...

無料のオープンソースクラウドファイル共有プラットフォームトップ10

[51CTO.com クイック翻訳] クラウドファイル共有とは、ユーザーにサーバー上のストレージスペ...

タオバオは、WeChatショッピングが店頭から撤去されたことに対し、阿Q紛争の「偶然の被害者」であると述べた。

[TechWeb Report] 8月5日、アリババがWeChatのデータインターフェースを削除した...

ウェブサイトのランキングが下がったときは落ち着いて理由を調べましょう

最適化を行う際に最も期待するのは、キーワードの順位が急上昇することです。サイトから追い出される以外に...