Kubernetes Learning 第10章:Namespace / Label / Annotation ~リソースを整理し、意味づける~

Kubernetesクラスタ内には、PodやService、Deploymentなど多くのリソースが存在します。
これらをただ作り続けると、誰が何を作ったのか、何のためなのか分かりにくくなります。

そこで登場するのが:

  • Namespace(空間で分ける)
  • Label(タグで分類する)
  • Annotation(補足情報をつける)

です。順番に見ていきましょう。


🔹 Namespace:論理的な「グループ分け」

Namespaceは、Kubernetesリソースを論理的に分離する仕組みです。

どんなときに使う?

  • チームごとに環境を分けたいとき(開発/本番など)
  • リソース使用量を制限したいとき(CPU/メモリ)
  • 名前の衝突を防ぎたいとき

例:

kubectl create namespace dev
kubectl get pods --namespace=dev

または省略形:

kubectl get pods -n dev

たとえば同じ名前のServiceが devprod に共存できます。

デフォルトで存在するNamespace

名前説明
default特に指定がないときのNamespace
kube-systemKubernetes本体のコンポーネント用
kube-public全ユーザーが閲覧可能な公開情報
kube-node-leaseノードのハートビート管理に使用される内部用途

🔸 Label:検索や分類のための「タグ付け」

Labelは、リソースに自由なキーバリュー形式のタグを付ける機能です。
これは、PodやServiceを分類したり、セレクタで選ぶときに使います。

例:

metadata:
  labels:
    app: myapp
    tier: frontend

ServiceやDeploymentでは selector を使って、特定のラベルを持つPodだけに通信したり、管理対象にできます:

selector:
  matchLabels:
    app: myapp

kubectlで検索にも使える:

kubectl get pods -l app=myapp

📝 Annotation:マシンではなく「人やツール向けの補足情報」

AnnotationもLabelと同じくキーバリューの形式ですが、検索には使いません。

用途は「詳細な情報のメモ・付加情報の格納」で、以下のようなケースで使います:

  • 誰がデプロイしたか、デプロイツールのバージョン
  • 外部監視ツールやCIツールへのヒント
  • ドキュメントURLやチケット番号

例:

metadata:
  annotations:
    deployed-by: alice
    commit-sha: "abc123"
    documentation-url: "https://docs.example.com/myapp"

🔍 kubectl describe を使うと、Annotationは表示されますが、kubectl get には表示されません。


✅ まとめ:役割の違い

機能主な用途
Namespaceリソースの論理分離(環境・チームなど)dev / prod / staging
Labelリソースの分類・選択(検索・セレクタ)app=myapp, tier=frontend
Annotation補足情報の付与(監視、デプロイ履歴など)deployed-by=alice

💡 実践のヒント

  • NamespaceごとにRBACを設定すると、チーム単位のアクセス制御がしやすくなります
  • Labelをしっかり設計しておくと、監視やトラブルシューティングが非常に楽になります
  • Annotationには、CI/CDパイプラインが自動的に情報を書き込むケースも多いです

Namespace+Labelを使って「チームごとの環境分離構成」を図解

補足説明:

  • Namespace: devNamespace: prod に分かれ、それぞれに Pod や Service が存在しています。
  • 各Podには Label: app=frontendapp=backend が設定されており、Serviceはこれらのラベルで対象を選んでいます。
  • チーム(開発/本番)で Namespace を使って分離し、Label によってさらに役割ごとの分類・選択ができる構成です。

mh

Related Posts

Kubernetes Learning 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

You Missed

Kubernetes Learning 第40章:Kubernetesのアップグレードとバージョン管理 ~安全にバージョンを上げるための基本知識~

  • 投稿者 mh
  • 6月 24, 2025
  • 33 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第13章:ストレージとデータベースの基礎 : オブジェクトストレージ: Cloud Storage(バケット、オブジェクト、ストレージクラス)- あなたの「データ置き場」

  • 投稿者 mh
  • 6月 23, 2025
  • 55 views

Kubernetes Learning 第39章:CRD(Custom Resource Definition)とは?~Kubernetesに“自分専用のリソース”を追加する仕組み~

  • 投稿者 mh
  • 6月 21, 2025
  • 56 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第12章:Cloud CDN(Content Delivery Network):あなたのWebサイトを「世界中のユーザーに超高速で届ける宅配便ネットワーク」

  • 投稿者 mh
  • 6月 20, 2025
  • 74 views

Kubernetes Learning 第38章:Operatorとは? ~Kubernetesに「運用の自動化ロボット」を組み込む仕組み~

  • 投稿者 mh
  • 6月 19, 2025
  • 63 views

Google Cloud Platform エンジニア向け教科書:実践から認定まで : 第11章:Cloud Load Balancing:あなたのGCPリソースを「賢く振り分ける交通整理の達人」

  • 投稿者 mh
  • 6月 18, 2025
  • 76 views