Volcengine Kubernetes Engine
Node | Trigger condition | Core capabilities |
Node | Trigger condition | Core capabilities |
No entries contain mountPath. | Based on predefined PVs in the template, SandboxClaim dynamically replaces the PV and subdirectory (subPath) when claiming the sandbox instance. mountPath is fixed in the template. | |
All entries contain mountPath. | There is no need to predefine PVs in the template. SandboxClaim dynamically specifies mountPath when claiming the sandbox instance and supports adding new PVs and volumeMount. |
Item | Sidecar solution | Hidecar solution (adopted by VCI) |
Item | Sidecar solution | Hidecar solution (adopted by VCI) |
Visibility | Visible to kubectl, and exec commands can be used to enter the container. | Completely invisible to the Virtual Kubelet and end users. The exec cannot be used. |
Attack surface | The privileged container is exposed to users, resulting in a relatively large attack surface. | Privileged add-ons are hidden from users, significantly reducing the attack surface. |
Credential security | Credentials such as AK/SK are transmitted after Base64 encoding, and business containers can probe the Sidecar process to some extent. | Hidercar independently manages storage credentials, and business containers cannot access its process and filesystem. |
Dimension | Pre-mounting | Dynamic mounting |
Dimension | Pre-mounting | Dynamic mounting |
mountPath | Fixed in the template and cannot be modified. | Dynamically specified. It can be any absolute path inside the container. |
New PV | Adding new PVs is not supported. Replacing the PVs already declared in the templates is the only supported method. | Supports adding new PVs and volumeMount to runtime. |
subPath | Supported | Supported |
Mounting add-on form | VCI Sidecar container (non-privileged, exits after completion). | Hidercar shadow container (privileged, but invisible to users). |
Supported storage type | EFS | TOS |
Execution chain | Replace the endpoint with a gRPC direct connection, making a short chain. | CSI mounting + bidirectional propagation + symbolic link. The chain is relatively long. |
Multi-container support | Supports multiple containers declared in the template. | Currently only supports a single primary container. |
Risk dimensions | Pre-mounting | Dynamic mounting |
Risk dimensions | Pre-mounting | Dynamic mounting |
Container escape risk | No risk. The Sidecar runs in non-privileged and non-root mode, actively drops all capabilities (capabilities.drop=ALL), and has no host directory exposure risk. | Hidercar runs in privileged mode and uses bidirectional mount propagation. The bottom layer still has privileged operation capability, but Hidercar is completely invisible to end users and cannot execute exec commands. End users cannot directly access the target container or its host's directory, thus significantly reducing the attack surface on the service side. The risk mainly comes from potential vulnerabilities in the container runtime itself. We recommend pairing this with runtime security monitoring. |
Cross-tenant data isolation | Strong isolation. The mount point is specified by the platform control plane, and business containers cannot determine the mount target. | The system performs path traversal validation on subPath. Storage credentials are independently managed by Hidercar and cannot be accessed by business containers. We recommend pairing this with storage directory-level permissions (such as ObjectSet/access point policy) to achieve minimal privilege isolation. |
Mount point reliability | Relatively high reliability. The mount point is established when the container starts, and the Sidecar exits after completing the replacement, with no subsequent dependency. | Mounting depends on the continuous operation of the CSI add-on and the symbolic link mechanism. The current version does not support using dynamic mounting together with container in-place updates and writable layer persistence at the same time. After the container restarts, a new Sandbox needs to be created. |
Performance overhead | Low overhead. Uses gRPC to directly replace the endpoint, enabling a single operation to be completed in milliseconds. | Relatively high overhead. It needs to execute the CSI mounting process (including FUSE file system mounting), which takes longer. In addition, the warm pool also needs to run Hidercar and Init containers. |
Fault impact scope | Mounting failure only affects the current sandbox claim. After the sandbox instance is automatically cleaned up, a cold start is applied. | Mounting failure automatically cleans up the Sandbox instance and leads to a cold start to downgrade. Hidercar is invisible to users, avoiding fault spread caused by user misoperations or malicious access. tip When the dynamic mounting mode uses the Hidercar solution, users cannot access privileged add-ons, making it significantly more secure than the visible Sidecar solution. However, the permission granularity of storage credentials (AK/SK) is still the security baseline. We recommend limiting credential permissions to specific mount points or directory levels, avoiding using over-privileged credentials, and pairing this with runtime security monitoring (such as detection of abnormal system calls for mounting) for in-depth defense. |
Application scenarios | Recommended solution |
Application scenarios | Recommended solution |
The mount directory can be determined at the SandboxTemplate stage. It is only necessary to switch to a different PV or subdirectory when SandboxClaim claims the sandbox instance. | By using the pre-mounting mode, performance and security are excellent. |
Multiple tenants share the same storage instance, and different tenant directories are isolated through subPath. | Use the pre-mounting mode + subPath mode. One PV serves multiple subdirectories, eliminating the need to create a PV for each tenant. |
Multi-cloud deployment. Existing business pod annotations contain mountPath and cannot be modified in the short term. | Use the dynamic mounting mode. Compatible with the Kruise protocol. Hidercar ensures security. |
The mount directory can only be determined when the sandbox is running and cannot be declared in advance in SandboxTemplate. | Use the dynamic mounting mode. |
The new PV not declared in the SandboxTemplate needs to be added when the sandbox is running. | Use the dynamic mounting mode. |