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

推薦する

「リベートウェブサイトは信頼できるか」でトップになる方法

リベート ネットワーク モデルがウェブマスターの間で人気がある主な理由は 2 つあります。1 つはバ...

テクノロジーフロンティア | Kingsoft Cloud の 2020 年第 3 四半期のパブリック クラウド製品のアップデート

先週、2020年第3四半期の財務報告を発表しましたが、業績は上昇傾向にあります。この満足のいく成長の...

オンラインマーケティングには、独立したモールを選択するか、ショッピング プラットフォームを選択するのが良いでしょうか?

これは昨日、Qiyi Network カスタマー サービスで顧客から寄せられた質問です。彼はオンライ...

AWSの隠れたメリットを知らない人もいるかもしれません

私の周りの人から、AWS の EC2 ホストは安定していて使いやすいが、その価格は中国の他のいくつか...

激しい競争の中で、新しいウェブサイトを目立たせるにはどうすればよいでしょうか?

激しい競争の中で、新しいウェブサイトを目立たせるにはどうすればよいでしょうか? SEO 業界が年々難...

pq.hostingはどうですか?スウェーデンのVPSレビュー、データ共有

pq.hostingはどうですか? pq.hosting スウェーデン VPS はいかがでしょうか?...

最初のレビュー: host1plus Chicago KVM VPS レビュー

以下は、host1plus のクラウド サーバーの最初のレビューです。まず説明させてください。hos...

基礎から応用まで、人工知能の饗宴について語りましょう

[51CTO.comからのオリジナル記事] IT業界の編集者として、私は当然あらゆるスマート製品に興...

ユーラシアクラウド:618イベント前売り、米国CN2 GIAクラウドのみ56.8元/四半期、チャットGPTのロック解除

ユーラシアクラウドは618イベントを先行して開始し、米国CN2 GIA、米国AS9929、米国AS4...

Kafka を使用したデジタル ツイン IoT アーキテクチャの実装

[51CTO.com クイック翻訳] デジタルツインは、現実の特定の事柄(プロセスやサービスを含む)...

Zookeeper を廃止した後、Kafka はトピックとコンシューマー グループをどのように保存しますか?

筆者の会社で現在使用している Kafka のバージョンは 2.2.1 であるため、Kafka カーネ...

ブロックチェーンを中心としたクラウドコンピューティングの再考

ブロックチェーンは、今日の高度に集中化されたクラウド コンピューティング業界において、重要な破壊的技...

TurnkeyInternet - 月額 1.48 ドルのプレミアム Web ホスティング

turnkeyinternet、現在仮想ホスティングの半額プロモーションが行われています。Host ...

Android マーケットのプロモーション チャネルの裏話と落とし穴を避けるためのヒント!

今日皆さんにシェアしたいのは、Android マーケットです。なぜこの話をするのでしょうか? 1 年...