Kubernetes のアノテーションコマンド

KubernetesKubernetesBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Kubernetes で Kubernetes リソースにメタデータのアノテーションを追加または変更するために使用される強力なツールである kubectl annotate コマンドを調べます。アノテーションは、キーと値のペアの形式で Kubernetes リソースに任意のメタデータを付加するために使用され、Kubernetes システム自体では使用されないが、外部ツールやプロセスで利用できるリソースに関する追加情報を格納するために使用できます。

この実験全体を通して、簡単な例から始めて、徐々に kubectl annotate コマンドのより複雑なユースケースに向かって進み、さまざまなシナリオでのその汎用性と有用性を示します。

前提条件

  • Kubernetes の概念とコマンドの基本的な理解
  • kubectl がインストールされ、構成された Kubernetes クラスタのセットアップ

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/annotate("Annotate") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-9679{{"Kubernetes のアノテーションコマンド"}} kubernetes/get -.-> lab-9679{{"Kubernetes のアノテーションコマンド"}} kubernetes/annotate -.-> lab-9679{{"Kubernetes のアノテーションコマンド"}} kubernetes/apply -.-> lab-9679{{"Kubernetes のアノテーションコマンド"}} kubernetes/describe -.-> lab-9679{{"Kubernetes のアノテーションコマンド"}} end

Minikube クラスタを起動する

リソースを作成する前に、動作している Kubernetes クラスタが必要です。Minikube は、ローカル マシン上で動作する軽量の Kubernetes 環境です。

  1. 作業ディレクトリに移動する:

    ターミナルを開き、デフォルトのプロジェクト フォルダに移動します。

    cd /home/labex/project
  2. Minikube を起動する:

    Minikube を起動して Kubernetes クラスタを初期化します。

    minikube start
    • このコマンドは、ローカル マシン上に単一ノードの Kubernetes クラスタをセットアップします。
    • Minikube は、システムの性能に応じて数分かかる場合があります。
  3. Minikube が動作していることを確認する:

    Minikube クラスタの状態を確認します。

    minikube status
    • kubeletapiserver などのコンポーネントが Running と表示されていることを確認します。
    • クラスタが動作していない場合は、minikube start を再度実行します。

Minikube の起動に問題がある場合は、必要に応じて minikube delete を使用して環境をリセットします。

kubectl annotate コマンドを調べる

kubectl annotate コマンドは、Kubernetes リソースのアノテーションを更新または削除するために使用されます。アノテーションは、任意の文字列を含むこともできるメタデータを格納するキーと値のペアです。また、構造化された JSON も含むことができます。これらは、ツールや拡張機能がデータを格納するのに役立ちます。

kubectl annotate の利用可能なオプションを表示するには、次のコマンドを実行します。

kubectl annotate -h

次の出力が表示されます。

1つ以上のリソースのアノテーションを更新します。

すべての Kubernetes オブジェクトは、アノテーションとしてオブジェクトに追加データを格納する機能をサポートしています。アノテーションは、ラベルよりも大きくなる可能性があり、構造化された JSON などの任意の文字列を含むキー/値ペアです。ツールやシステム拡張機能は、独自のデータを格納するためにアノテーションを使用する場合があります。

既に存在するアノテーションを設定しようとすると、--overwrite が設定されていない限り失敗します。--resource-version が指定され、サーバー上の現在のリソース バージョンと一致しない場合、コマンドは失敗します。

サポートされているリソースの完全な一覧については、「kubectl api-resources」を使用してください。

例:
  ## ポッド 'foo' に 'description' というアノテーションを設定し、値を'my frontend' に更新します
  ## 同じアノテーションを複数回設定した場合、最後の値のみが適用されます
  kubectl annotate pods foo description='my frontend'

  ## "pod.json" で型と名前によって識別されるポッドを更新します
  kubectl annotate -f pod.json description='my frontend'

  ## ポッド 'foo' に 'description' というアノテーションを設定し、値を'my frontend running nginx' に更新し、既存の値を上書きします
  kubectl annotate --overwrite pods foo description='my frontend running nginx'

  ## 名前空間内のすべてのポッドを更新します
  kubectl annotate pods --all description='my frontend running nginx'

  ## リソースがバージョン1から変更されていない場合のみ、ポッド 'foo' を更新します
  kubectl annotate pods foo description='my frontend running nginx' --resource-version=1

  ## ポッド 'foo' を更新して、存在する場合は 'description' という名前のアノテーションを削除します
  ## --overwrite フラグは必要ありません
  kubectl annotate pods foo description-

単一のキーと値のペアでポッドにアノテーションを付ける

このステップでは、kubectl annotate コマンドを使用して、単一のキーと値のペアでポッドにアノテーションを付ける簡単な例から始めます。

  1. /home/labex/project ディレクトリに pod.yaml という名前のファイルを作成し、以下の内容を記述します。
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: nginx
      image: nginx

以下のコマンドでポッドを作成します。

kubectl apply -f pod.yaml
  1. kubectl annotate コマンドを使用して、ポッドにアノテーションを追加します。
kubectl annotate pod my-pod my-annotation-key=my-annotation-value
  1. ポッドにアノテーションが追加されたことを確認します。
kubectl describe pod my-pod | grep Annotations

出力に、値 my-annotation-value を持つアノテーション my-annotation-key が表示されるはずです。

複数のキーと値のペアでポッドにアノテーションを付ける

このステップでは、kubectl annotate コマンドを使用してポッドに複数のアノテーションを追加する方法を調べます。

  1. kubectl annotate コマンドを使用して、ポッドに複数のアノテーションを追加します。
kubectl annotate pod my-pod my-annotation-key-1=my-annotation-value-1 my-annotation-key-2=my-annotation-value-2
  1. ポッドにアノテーションが追加されたことを確認します。
kubectl describe pod my-pod | grep my-annotation-key

出力に、それぞれの対応する値を持つ my-annotation-key-1my-annotation-key-2 の両方のアノテーションが表示されるはずです。

既存のアノテーションを更新する

このステップでは、kubectl annotate コマンドを使用して、既存のポッドのアノテーションを更新する方法を学びます。

  1. kubectl annotate コマンドを使用して、ポッドの既存のアノテーションの値を更新します。
kubectl annotate pod my-pod my-annotation-key-1=new-value --overwrite=true
  1. ポッドのアノテーションが更新されたことを確認します。
kubectl describe pod my-pod | grep my-annotation-key-1

出力に my-annotation-key-1 の更新された値が表示されるはずです。

アノテーションを削除する

このステップでは、kubectl annotate コマンドを使用してポッドからアノテーションを削除する方法を見ていきます。

  1. --overwrite フラグ付きで kubectl annotate コマンドを使用して、ポッドからアノテーションを削除します。
kubectl annotate pod my-pod my-annotation-key-2- ## 末尾のダッシュに注意
  1. ポッドからアノテーションが削除されたことを確認します。
kubectl describe pod my-pod | grep my-annotation-key-2

出力に my-annotation-key-2 のアノテーションが表示されないはずです。

異なるリソースにアノテーションを付ける

このステップでは、kubectl annotate コマンドを使用して、Deployment などの異なるリソースにアノテーションを付ける方法を調べます。

  1. /home/labex/project ディレクトリに deployment.yaml という名前のファイルを作成し、以下の内容を記述します。
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: nginx
          image: nginx

以下のコマンドでデプロイメントを作成します。

kubectl apply -f deployment.yaml
  1. kubectl annotate コマンドを使用して、デプロイメントにアノテーションを追加します。
kubectl annotate deployment my-deployment my-annotation-key=my-annotation-value
  1. デプロイメントにアノテーションが追加されたことを確認します。
kubectl describe deployment my-deployment

出力に、値 my-annotation-value を持つアノテーション my-annotation-key が表示されるはずです。

まとめ

この実験では、Kubernetes リソースにアノテーションを追加、更新、削除するための kubectl annotate コマンドの使い方を学びました。まず、単一のキーと値のペア、および複数のキーと値のペアでポッドにアノテーションを付ける単純な例から始め、既存のアノテーションを更新したり、Deployment のような異なるリソースにアノテーションを付けるような高度なユースケースを調べました。アノテーションは、Kubernetes リソースに追加のメタデータを付加し、外部ツールやプロセスに有用な情報を提供する強力なツールになる可能性があります。