共有ノードを使用する
本機能は現状では SR1 のみでの提供となっています。 また、提供される共有ノードの数には上限があり、利用状況によっては利用できない可能性があります。 共有ノードの利用状況の可視化は今後の提供を予定しています。
PFCP では、複数の組織で共有されるノードを提供しています。共有ノードは、組織に割り当てられた専有ノードとは異なり複数の組織で共有されます。
利用できるノード
以下を共有ノードとして提供しています。
- MN-Server 2(
preferred.jp/mncore2
)
利用方法
Pod に専用の PriorityClass を指定することで、自動的に共有ノードにスケジューリングされます。PriorityClass は Pod の優先度を指定するための機能ですが、ここではどのタイプのノードに Pod をスケジューリングするかの制御にも利用されます。
そのため、利用者自身によるノード選択(nodeSelector
の記述)は不要です。
以下は Pod を共有ノードで利用する例です。
apiVersion: v1
kind: Pod
metadata:
name: shared
spec:
priorityClassName: shared-standard # or shared-best-effort
...(省略)...
共有ノードを使用するための PriorityClass は以下の通りです。
shared-standard
: 共有ノード用の PriorityClass のなかでもっとも優先度が高くプリエンプトされない(追い出されない)shared-best-effort
:shared-standard
PriorityClass の Pod にプリエンプトされる
Pod の優先度とプリエンプションの詳細は Kubernetes 公式ドキュメントを参照ください。
共有ノードで各組織が利用できる MN-Core 2 の数は PriorityClass それぞれで上限が設定されています。以下のコマンドで利用可能な MN-Core 2 の数を確認できます。
kubectl -n org-<組織名> get hrq shared-standard shared-best-effort -o yaml
制約事項
- 永続ストレージのファイルストレージ(StorageClass
standard-rwx-<組織名>
)が使用できません- RWO の永続ストレージは利用可能です。
- 1 つの MN-Core 2 で要求できる最大リソース量には制限があります。1 Pod で 2 つの MN-Core 2 を要求する場合では上限値は 2 倍になります。各リソースの 1 つの MN-Core 2 あたりの上限値は以下の通りです。
リソース 1つの MN-Core 2 あたりの上限値 CPU 7000m Memory 125Gi Ephemeral Storage 80Gi
セキュリティ
共有ノードは専有ノードとは異なり、複数の組織のワークロードが同じノード上でカーネルを共有します。 組織間のセキュリティ境界についてより強固な分離が必要な場合は、専有ノードの利用を推奨します。
追加のセキュリティ対策
共有ノードでは Linux の User Namespaces を用いて、ホストから Pod 内のコンテナの UID/GID を強制的に分離します。 この技術を用いることで脆弱性等によりコンテナからホストに侵入された場合でも、ホスト内の root ユーザ、つまり UID が 0 のユーザとしてホストを操作できないため、リスクが低減されます。 Linux の User Namespaces は過去の多くのコンテナに関する CVE を防ぐことが知られています1。 詳細は Kubernetes 公式の User Namespaces のドキュメントをご参照ください。