マルチテナント
マルチクラスタ
Section titled “マルチクラスタ”| 項目 | 説明 |
|---|---|
| メリット | 強力な分離、高い設定自由度 |
| デメリット | 多数のクラスタ管理のための運用オーバーヘッド、リソース効率が低い |
解決アプローチ
Section titled “解決アプローチ”- 単一の巨大なKubernetesクラスタ 複数のテナントアプリケーションが単一のクラスタリソースを共有する。 NamespaceやvClusterなど論理的な分離を行う。 管理が容易で、リソース効率はいい。一方で、クラスタの障害が全テナントに影響する。
- 単一APIを持つ複数Kubernetesクラスタ カスタムコントローラーが実際のワークロードを複数の物理クラスタにスケジューリングする。 クラスタ単位で物理的な分離が可能で、クラスタを追加するだけでスケールアウトできる。一方で、可動部分が増えるため、システム全体が複雑になる。
分離のための機能
Section titled “分離のための機能”- コンピューティングリソースの分離
- Namespace
- Node Affinity
- Resource Quotas
- Limit Ranges
- ユーザー権限の分離
- Role
- RoleBinding
- ClusterRole
- ClusterRoleBinding
- ネットワークの分離
- Network Policies
- ランタイムの分離
- Pod Security Admission
システムを安定させるための機能
Section titled “システムを安定させるための機能”- 優先度制御
- PriorityClass
- レートリミット
- Token Bucket Filter (TBF) 少数の巨大アプリケーションと無数の小規模アプリケーションが混在する場合、巨大アプリケーションがリソースを独占しないようにする。 そのためには、NodeSelectorやTaints/Tolerationsを用いて、巨大アプリケーションと小規模アプリケーションを異なるノードにスケジューリングする。