整理のためのNamespaceとLabel
分離にはnamespaceを、オブジェクトのグループ化と検索にはlabelとselectorを使って、クラスターのリソースを整理します。
「整理のためのNamespaceとLabel」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
整理する理由
実際のクラスターでは、多くのチームの多数のアプリケーションが実行されます。Namespace と label は、これらすべてのオブジェクトを整理し、検索可能にする Kubernetes 組み込みの機能です。
Namespace とは
Namespace は、クラスター内にある仮想的なクラスターです。リソース名は Namespace 内で一意である必要がありますが、Namespace が異なれば同じ名前を使えます。
デフォルトの Namespace
すべてのクラスターには、いくつかの Namespace があらかじめ用意されています。default(別途指定しない限りオブジェクトが配置される場所)、kube-system(クラスターコンポーネント)、kube-public などです。
kubectl get namespacesNamespace を作成する
チームや環境などを分離するには、新しい Namespace を作成します。
kubectl create namespace team-aNamespace の操作
各コマンドで -n を指定して Namespace を対象にするか、コンテキストのデフォルトを設定してフラグを繰り返し指定しないようにします。
kubectl get pods -n team-aNamespace だけでは完全に分離できません
Namespace は 名前の範囲を限定し、クォータや RBAC を利用できるようにしますが、それだけでネットワークトラフィックが分離されるわけではありません。分離するには NetworkPolicies を追加します。
ラベルとは
ラベルは、オブジェクトに付加するキーと値のペアです。app: web や env: prod のようにユーザーにとって意味のある情報を持たせ、グループ化にも利用できます。
metadata:
labels:
app: web
env: prodkubectl でラベルを追加する
既存のオブジェクトにその場でラベルを付加します。
kubectl label pod nginx tier=frontendラベルで選択する
-l を使うと、ラベルでオブジェクトを検索できます。これにより、グループ全体に対して一度に操作できます。
kubectl get pods -l app=web,env=prodセレクターがリソースをつなぐ
ラベルは人間のためだけのものではありません。Service と Deployment はラベルセレクターを使って、管理対象の Pod を見つけます。この疎結合が Kubernetes の中核です。
selector:
matchLabels:
app: webアノテーションとラベル
アノテーションもキーと値のデータを保存しますが、識別には使わないメタデータ(ビルド情報やツール向けのヒントなど)を対象とし、セレクターからは利用されません。
理解度チェック
ラベルと Namespace の違いは何ですか。
まとめ
これで、クラスターを整理して管理できるようになりました。
- Namespaceは名前の範囲を限定し、クォータや RBAC を利用可能にします。
-nで対象を指定します - ラベルはキーと値のタグです。
-lで検索します - セレクターによって Service や Deployment と Pod が関連付けられます
- アノテーションには識別に使わないメタデータを保存します
これらの基本要素は、1つのアプリから複数チームが利用する大規模なクラスターまで対応できます。
よくある質問
「整理のためのNamespaceとLabel」レッスンは無料ですか?
はい。「整理のためのNamespaceとLabel」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「整理のためのNamespaceとLabel」で何を学びますか?
分離にはnamespaceを、オブジェクトのグループ化と検索にはlabelとselectorを使って、クラスターのリソースを整理します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「整理のためのNamespaceとLabel」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Kubernetesアーキテクチャ
- Pod:最小単位
- kubectlコマンドの基礎
- 整理のためのNamespaceとLabel