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

推薦する

テンセントは自らの過失によりWeChatアカウントを禁止した。誰のためなのか?

WeChatの現在の状況では、WeChatが行うあらゆる行動やジェスチャーがあらゆる階層から注目を集...

キーワードの選択は重要

キーワードは、SEO 最適化を行う際に最も基本的なものです。 したがって、SEO作業を行う際には、キ...

簡単な分析: 新規サイトの早期最適化のための準備作業と重要なポイント

会社が新しいウェブサイトを引き継ぐとき、私たちは何をすべきでしょうか? どのように始めるべきでしょう...

本当に成功するSEO担当者は、ウェブサイトに対してグローバルな視点を持たなければなりません。

まず、グローバルな視点とは何かを説明しましょう。私の考えでは、グローバルな視点は 3 つの側面に分か...

vpscheap-年間18ドル/256Mメモリ/10g SSD/無制限トラフィック

vpscheap.net のシカゴ データ センター VPS は、おそらく 34% 割引プロモーショ...

シンガポールで仕事を見つけるための重要なスキルとして、IoT、5G、クラウドコンピューティングが挙げられている

シンガポールでは、モノのインターネット(IoT)、5G、クラウドコンピューティング、人工知能が、今後...

調査と市場:世界のIaaS関連収益は2025年に429億ドルに達する

12月31日、市場調査会社Research and Marketsが発表した最新のレポートによると、...

一般的な IaaS セキュリティ問題とその軽減方法

IaaS プラットフォームのセキュリティを保護することは、顧客とプロバイダーの共通の責任であるため、...

ポスト80年代世代の副社長への道:スタートアップ企業で9年間勤務

1980年代生まれの人たちは、職場ではまだ新人だといつも思っていませんか?かつては「頼りない」とレッ...

#ニュース# Namesilo が買収され、今後の上場にいくつかの変更が加えられる予定です

さて、3月8日のニュースです。Brisio Innovations Inc が有名なドメイン名会社 ...

SEO を学ぶ前に初心者が知っておくべき基本的な Web 知識は何ですか?

SEO は非常に戦略的な仕事です。ユーザー エクスペリエンス、コンテンツの構築、外部リンクの公開など...

Hawkhost - すべてのドメイン/ドメイン名/仮想ホスト/半仮想ホスト/VPS/更新時も同じ価格が60%オフ [/07/25]

Hawkhostの7月末のプロモーションがこちらです。ドメイン名登録、仮想ホスト、リセラーホスト、セ...

ウェブサイトの最適化 + オンラインストアの最適化 + モバイルの最適化 Yimake SEOコース3つの剣を組み合わせた

ウェブサイト最適化+オンラインストア最適化+モバイル最適化 Yimake SEOコースの3つの剣を組...

SaaS は終わりました。ソフトウェアの次は何でしょう?

[[228228]]前世紀の前半には、多くの電気機器が伝統的な手動機器に取って代わり、人々に多大な富...