Kubernetesの初期Namespace

Kubernetes(k8s)クラスターをセットアップすると、初期状態でいくつかの**Namespace(名前空間)**が自動的に作成されます。Namespaceは、クラスター内のリソースを論理的に分離するための仮想的な区画であり、チームやプロジェクト、環境ごとにリソースを整理・管理するのに役立ちます。

初期状態で作成される主要なNamespaceは以下の4つです。

1. kube-system

  • 用途: KubernetesクラスターのシステムコンポーネントアドオンがデプロイされるNamespaceです。
  • 内容: kube-apiserver, kube-controller-manager, kube-scheduler, etcd などのコアコンポーネントのPodや、DNSサービス(CoreDNS)、Kubernetes DashboardなどのアドオンがこのNamespaceに配置されます。
  • 注意: 通常、ユーザーがこのNamespace内のリソースを直接操作することは推奨されません。

2. kube-public

  • 用途: 全てのユーザーが読み取り可能なリソースを配置するためのNamespaceです。
  • 内容: 主にクラスター情報や、クラスター全体で共有されるConfigMapなどが配置されます。例えば、クラスターの発見(discovery)に必要な情報などが含まれることがあります。
  • 注意: このNamespaceに機密情報やユーザー固有のデータを配置すべきではありません。

3. kube-node-lease

  • 用途: 各ノードのハートビート情報(ノードが正常に動作していることを示す信号)を保存するためのNamespaceです。
  • 内容: 各ノードに対応するLeaseオブジェクトが格納されます。これにより、大規模なクラスターにおけるノードのヘルスチェックのパフォーマンスが向上します。
  • 注意: 通常、ユーザーがこのNamespace内のリソースを直接操作することはありません。

4. default

  • 用途: Namespaceを明示的に指定せずにリソースを作成した場合に、デフォルトでデプロイされるNamespaceです。
  • 内容: ユーザーが作成するアプリケーションのPod、Service、Deploymentなどのリソースが、特に指定がなければこのNamespaceに配置されます。
  • 注意: 小規模なクラスターや学習目的では default Namespaceを使用することも多いですが、本番環境や複数のアプリケーションを運用する環境では、リソースの衝突や管理の複雑化を避けるため、カスタムのNamespaceを適切に作成して利用することが推奨されます。

これらの初期Namespaceを理解することは、Kubernetesクラスターの基本的な動作と管理を把握する上で重要です。

参考