San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
DevSecOps

KubernetesのNamespace

これまでのシリーズでは、Pods、Placements、Servicesなど、さまざまなKubeオブジェクトを構造なしでクラスタへ配置してきました。このまま継続すると、これらのアイテムは急増して複雑になりがちです。そこで、今からその影響を緩和する方法として、Kube NAMESPACEをお伝えします。Kube NAMESPACEはK8sアイテムを整理・分類して運用やプロジェクト管理をスムーズにする仮想的なクラスタとして機能します。

Kubernetes Namespaceとは?

複数のチームやプロジェクトが同じ K8sクラスタ を共有する場合は、Namespaceを使ってクラスタを仮想的なサブクラスタに分割すると便利です。クラスタ内には任意の数のNamespaceを作れますが、それぞれ論理的に独立しつつデータを共有できます。Namespaceを入れ子にすることはできません。

K8sのリソースはシステム全体のデフォルトスキーマか、ユーザーが作成したNamespaceのいずれかに属します。Podや永続的なストレージボリュームより下位のリソースは存在せず、クラスタ内のすべてのNamespaceから常に利用できます。

Kubernetes Namespaceを使う理由

K8s Namespaceには、次のように多くの使い道があります。

  • チームやプロジェクトごとに独立した仮想クラスタを用意でき、互いに干渉しません。
  • 特定のNamespaceに対するユーザーやプロセスのアクセスを制限し、ロールベースのアクセス制御を強化できます。
  • 事前に設定された制限内で、複数のチームやユーザーがクラスタのリソースを共有できます。
  • コンテナにより、開発からテスト、デプロイなどアプリのライフサイクル全体を単一クラスタで処理できますが、どの段階も相互に干渉しません。

KubernetesのデフォルトNamespace

標準の設定として、KubernetesはNamespaceを作成し、3つの機能を提供します。具体的には以下があります。

  • default: 名前のとおり、Kubernetes操作でデフォルト参照されるNamespaceで、すべてのKubernetesリソースが格納されます。追加のスキーマが作成されない限り、このNamespaceがクラスタ全体で使われます。
  • kube-system: Kubernetesのコンポーネント用であり、一般的な利用は推奨されません。
  • kube-public: 公開用リソース向けです。通常の利用は想定されていません。

複数のKubernetes Namespaceはいつ使う?

小規模なチームや企業であれば、default Namespaceだけでも十分な場合があります。開発者やユーザーを厳密に分ける必要がない場合には特にそうです。しかし複数のNamespaceを導入すると、さまざまな利点が得られます。

  • 分離: 大規模または成長中のチームでは、Namespaceを使うことで複数のプロジェクトやマイクロサービスを分離できます。同じリソース名を使っても衝突せず、あるNamespaceでの操作は他に影響を与えません。
  • 整理: 開発・テスト・本番など全てを同じクラスタで運用する場合でも、Namespaceを分ければ新機能や実験用の環境を本番データから切り離せます。これにより本番環境を開発者や検証者の変更から守れます。
  • 認可: Kube RBACを使えば、権限や機能をまとめたロールを設定し、特定のNamespace内のリソースだけを操作可能にできます。必要な範囲のユーザーだけが使えるように管理できます。
  • データ管理: ポリシーを使ってCPUやストレージの利用量の上限を設定できます。特定のNamespaceばかりがリソースを独占するのを防ぎ、他のNamespaceとの公平性を保てます。
  • 効率: Namespaceを複数に分割すると、K8s APIがアクセス対象を絞り込めるため、検索による負荷が減ります。その結果レイテンシが下がり、スループットが上がるので、同じクラスタを共有する他のアプリにも好影響があります。

Namespaceに関係する基本的なKubectlコマンド

  1. 作成と削除

新しいNamespaceを作成するには、次のコードを入力します。

Namespace creation with kubectl

これらの識別子を作る方法は、ほかのK8sリソースと同様にYAMLファイルでも行えます。

newspace.yaml:

kind: Namespaceapi
Version: v1
metadata:
name: 
newspacelabels:
name: newspacekubectl apply -f newspace.yaml

そして “kubectl delete namespaces” コマンドで、Namespaceを削除できます。

削除処理は非同期で進行するため、Kubernetes delete namespace実行後に、完全に削除されるまでは「terminating」と表示されることがあります。

  1. Namespace内でのリソース作成、一覧表示、および削除

現在使用中のコンテキストとは異なるNamespaceでコマンドを実行する際は、--namespaceフラグを使ってそのNamespaceを明示的に指定できます。

  • まず、test Namespace内に新しいアプリを作成します。
  • Kubernetes namespaceのYAMLファイルのmetadataセクションで、デプロイや関連データ、PodをどのNamespaceに配置するか指定できます。
  • test Namespace内のPodをすべて取得するには、$ kubectl get pods --namespace=test を実行します。
  • すべてのNamespaceのChaincode Podを一覧表示するには、$ kubectl get pods --all-namespaces を実行します。
  1. NamespaceとResource Quotas

Resource QuotaをNamespaceに設定すれば、クラスタのリソースが期待どおりの形で割り振られます。選んだNamespaceに、リソースの上限として働くオブジェクトを定義できます。例えば、以下のマニフェストはdemoが使うCPUを制限する例です。

Quotaが作成されると、demo Namespace内で生成されるすべてのPodに上記の要求や制限が適用されます。demo NamespaceのPodが一定数を超えると、新たにPodを作れなくなります。

Benefits of Kubernetes Namespaces

Namespaceの作成と管理は手間がかかることもありますが、多くの利点をもたらします。以下に例を挙げます。

  1. 効率と最適化

Namespaceを使う最大のメリットは、作業が効率化しやすいことです。チームがそれぞれの作業に専念し、必要時だけ連携すればよいので、全体の管理が容易になり柔軟性も高まります。

  1. シンプルなリソース割り当て

KubernetesはNamespaceを設定することで、コンテナやPodへのリソース割り当てを簡単にします。オペレーターは必要なリソース量を正確に把握し、不足があればすぐ補えます。また、マイクロサービスの終了時にはリソースを再割り当てする仕組みも備わっています。

  1. トラブル対応

システムに問題や異常が発生した場合、どのNamespaceが原因かを即座に特定できるため、オペレーターはすばやく正確に問題を把握・緩和・解決できます。

  1. より柔軟な拡張性

必要に応じて運用者やクラスタ管理者がリソースを容易に拡張または縮小できます。Namespaceを仮想的な環境として扱うことで、リソースが不足したときに追加Namespaceを用意し、既存の稼働にほぼ影響なくシステムをスケールできます。

FAQ

最新情報を購読

学習目標
最新情報を
購読
購読する
関連トピック