Namespaceとは?
同一の物理クラスター上で複数の仮想クラスターの動作をサポートします。(クラスターを分離して複数のユーザーでクラスターを分割する手法とも言えます。)
仮想クラスターとは?
実際には同じマシン上で動いているかもしれないが、仮想的に環境が分けられている状態のことです。
ユースケース
数十人規模で開発するアプリケーションの場合はチームごとにNamespaceを切り分けたりして使ったりします。
例
1 2 3 4 5 6 7 8 9 10 11 |
初期Namespace default kube-system 特定の目的 monitoring frontend backend チーム 環境 production development |
初期Namespace
default
デフォルトのNamespace。指定しない場合はこの下にObjectが作成されます。
kube-system
Kubernetesのシステムによって作成されたオブジェクトのためのNamespace
- kube-proxy
- coredns
- metrics-server
- kube-state-metrics
- node-exporter
kube-public
認証されていないユーザーを含むすべてのユーザーが読み取り可能
kube-node-lease
LeaseオブジェクトのためのNamespace
Namespaceの設定
リソース関連の設定(Resource Quotas、Limit Ranges)などがあります。
Namespaceを切り分けるメリット
制限をつけれる。
Pod、コンテナのリソース範囲設定
設定ミスの防止
- Pod、コンテナにメモリやストレージの上限下限を設定
- コンテナーにデフォルトのメモリ、CPU設定
Namespace全体の総リソース制限
特定のNamespaceだけリソースを使いすぎないようにする。
- Namespace内のメモリ、CPU合計の上限
- PodなどObject数の上限
権限(RBAC)管理
チームごとに特定Namespaceへの権限不可。各チームごとに権限を分割してセキュリティ向上に活用できます。
- 特定のNamespace内のリソースに限って権限を付与
Namespaceの作成
コマンドで作成
1 |
kubectl create/delete namespace [namespace名] |
yamlから作成
1 |
kubectl apply -f ファイル名.yaml |
確認
1 |
kubectl get ns |
この記事へのコメントはありません。