@@ -262,8 +262,6 @@ to ensure that a PersistentVolume cannot be reused across different namespaces.
262
262
263
263
### Sandboxing containers
264
264
265
- {{% thirdparty-content %}}
266
-
267
265
Kubernetes pods are composed of one or more containers that execute on worker nodes.
268
266
Containers utilize OS-level virtualization and hence offer a weaker isolation boundary than
269
267
virtual machines that utilize hardware-based virtualization.
@@ -286,14 +284,7 @@ workloads running in a shared cluster. Running workloads in a sandbox environmen
286
284
insulate the host from container escapes, where an attacker exploits a vulnerability to gain
287
285
access to the host system and all the processes/files running on that host.
288
286
289
- Virtual machines and userspace kernels are two popular approaches to sandboxing. The following
290
- sandboxing implementations are available:
291
-
292
- * [ gVisor] ( https://gvisor.dev/ ) intercepts syscalls from containers and runs them through a
293
- userspace kernel, written in Go, with limited access to the underlying host.
294
- * [ Kata Containers] ( https://katacontainers.io/ ) provide a secure container runtime that allows you to run
295
- containers in a VM. The hardware virtualization available in Kata offers an added layer of
296
- security for containers running untrusted code.
287
+ Virtual machines and userspace kernels are two popular approaches to sandboxing.
297
288
298
289
### Node Isolation
299
290
@@ -320,8 +311,7 @@ corresponding toleration can run on them. A mutating webhook could then be used
320
311
add tolerations and node affinities to pods deployed into tenant namespaces so that they run on a
321
312
specific set of nodes designated for that tenant.
322
313
323
- Node isolation can be implemented using an [ pod node selectors] ( /docs/concepts/scheduling-eviction/assign-pod-node/ )
324
- or a [ Virtual Kubelet] ( https://github.com/virtual-kubelet ) .
314
+ Node isolation can be implemented using [ pod node selectors] ( /docs/concepts/scheduling-eviction/assign-pod-node/ ) .
325
315
326
316
## Additional Considerations
327
317
@@ -411,8 +401,6 @@ Specifically, the Operator should:
411
401
412
402
## Implementations
413
403
414
- {{% thirdparty-content %}}
415
-
416
404
There are two primary ways to share a Kubernetes cluster for multi-tenancy: using Namespaces
417
405
(that is, a Namespace per tenant) or by virtualizing the control plane (that is, virtual control
418
406
plane per tenant).
@@ -456,27 +444,6 @@ resources between them. This could include managing namespace labels, namespace
456
444
delegated access, and shared resource quotas across related namespaces. These capabilities can
457
445
be useful in both multi-team and multi-customer scenarios.
458
446
459
- Some third-party projects that provide capabilities like this and aid in managing namespaced resources are
460
- listed below.
461
-
462
- {{% thirdparty-content %}}
463
-
464
- #### Multi-team tenancy
465
-
466
- * [ Capsule] ( https://github.com/clastix/capsule )
467
- * [ Multi Tenant Operator] ( https://docs.stakater.com/mto/ )
468
-
469
- #### Multi-customer tenancy
470
-
471
- * [ Kubeplus] ( https://github.com/cloud-ark/kubeplus )
472
-
473
- #### Policy engines
474
-
475
- Policy engines provide features to validate and generate tenant configurations:
476
-
477
- * [ Kyverno] ( https://kyverno.io/ )
478
- * [ OPA/Gatekeeper] ( https://github.com/open-policy-agent/gatekeeper )
479
-
480
447
### Virtual control plane per tenant
481
448
482
449
Another form of control-plane isolation is to use Kubernetes extensions to provide each tenant a
@@ -508,11 +475,3 @@ The improved isolation comes at the cost of running and maintaining an individu
508
475
plane per tenant. In addition, per-tenant control planes do not solve isolation problems in the
509
476
data plane, such as node-level noisy neighbors or security threats. These must still be addressed
510
477
separately.
511
-
512
- The Kubernetes [ Cluster API - Nested (CAPN)] ( https://github.com/kubernetes-sigs/cluster-api-provider-nested/tree/main/virtualcluster )
513
- project provides an implementation of virtual control planes.
514
-
515
- #### Other implementations
516
-
517
- * [ Kamaji] ( https://github.com/clastix/kamaji )
518
- * [ vcluster] ( https://github.com/loft-sh/vcluster )
0 commit comments