🎯 レッスンの目的
Kubernetes クラスターのリソース分割メカニズムとしての名前空間を理解します。名前空間ごとにリソースを制御するためにリソース クォータと LimitRanges を設定する方法。マルチテナントのベスト プラクティス
1.ネームスペースとは何ですか?
Namespace は、Kubernetes リソースの name スコープ (スコープ) を提供します。 nginx という名前の 2 つのデプロイメントは、競合することなく 2 つの異なる名前空間に存在できます。
許可される名前空間:
- 分離: 個別の環境 (開発、ステージング、本番) またはチーム (チーム A、チーム B)
- リソース割り当て: 名前空間ごとのリソース制限
- RBAC スコープ: 名前空間ごとの権限
- ネットワーク ポリシー: ネームスペース間のトラフィックの制御
2.デフォルトの名前空間
- default: 指定されていない場合のデフォルトの名前空間
- kube-system: Kubernetes コントロール プレーンのコンポーネント (CoreDNS、kube-proxy、metrics-server)
- kube-public: 認証されていないユーザーも含めて、すべてのユーザーが読み取り可能です。クラスター情報 が含まれています
- kube-node-lease: ノード ハートビート リース — ノード障害検出のパフォーマンスを向上
3.ネームスペースの作成と管理
___コードブロック_1___4.名前空間の操作
___コードブロック_2___5.リソース割り当て
ResourceQuota は、名前空間で許可されるリソースの合計を制限します。
___コードブロック_3___ ___コードブロック_4___6.制限範囲
LimitRange は、名前空間内のコンテナごとのデフォルトのリクエスト/制限と最小/最大を設定します。コンテナーがリソースを宣言していない場合、LimitRange は自動的にデフォルトを適用します。
___コードブロック_5___7.名前空間ごとの RBAC
___コードブロック_6___8.名前空間を越えたコミュニケーション
___コードブロック_7___9.名前空間のスコープとクラスターのスコープ
すべてのリソースに名前空間があるわけではありません:
- 名前空間: ポッド、デプロイメント、サービス、ConfigMap、シークレット、PVC、ロール、RoleBindings
- クラスタースコープ: ノード、Persistent Volume、ClusterRole、ClusterRoleBinding、Namespace、StorageClasses
10.ベスト プラクティス マルチテナント
- チームおよび環境ごとの名前空間:
team-a-prod、__HTMLTAG_155___team-a-staging__HTMLTAG_156___、チーム-B-製品 - _ResourceQuota を常に設定: 1 つのチームがすべてのクラスター リソースを占有することを防ぎます
- Use LimitRange: コンテナに常にリソース制限があることを確認
- 一貫性ラベル:
チーム、__HTMLTAG_173___環境、__HTMLTAG_175___アプリ - _階層型名前空間コントローラー (HNC): 名前空間をツリーに編成し、親からポリシーを継承
概要
- Namespace = 名前のスコープとリソースの分離
- 4 つのデフォルトの名前空間:default、kube-system、kube-public、kube-node-lease
- ResourceQuota: 名前空間ごとの合計リソースを制限__HTMLTAG_191___
- LimitRange: コンテナごとのデフォルトと最小/最大__HTMLTAG_193___
- _ベスト プラクティス: 環境ごとのチームごとの名前空間 + ResourceQuota + LimitRange