What has to change
Your existing vLLM Deployment must do all of the following:- Mount the engine connection
ConfigMapand pass it to--kv-transfer-config. - Run with
hostIPC: trueso MP-mode shared memory works. - Schedule onto a node that also runs an LMCache engine pod.
- Use a vLLM image that can import the external
lmcachepackage successfully. - On OpenShift, run under a ServiceAccount bound to an SCC that allows
hostIPC.
The minimum patch
Assume the chart created an engine namedtensormesh-operator-default-engine.
That engine creates a same-namespace ConfigMap named:
ConfigMap and pass its JSON contents to
--kv-transfer-config.
The desired steady-state contract is:
kv_connector_module_path yourself. If it does not, add that field explicitly when
you construct --kv-transfer-config for the vLLM pod.
Example Deployment fragment:
Why each change exists
hostIPC: true- required for LMCache MP mode
--kv-transfer-config ...- tells vLLM how to reach the engine service and which connector settings to use
--no-enable-prefix-caching- disables vLLM’s own local prefix cache so LMCache is the cache path being exercised
nodeSelector- ensures the pod lands on a GPU node where an engine pod also exists
Image requirement: external lmcache must be installed
This is the easy point to miss.
For the MP connector path, the safe target state is to point vLLM at the
external lmcache connector module explicitly. That avoids silently using an
older vendored builtin path, but it also means your vLLM build must be new
enough to load that module correctly.
Minimum support expectation:
- supported: vLLM builds that include the explicit external-module selection fix merged on April 7, 2026
- preferred: vLLM builds that include the LMCache MP external-by-default/fallback behavior merged on May 15, 2026
- if your existing build predates those changes, or you are unsure, contact the Tensormesh team before patching the deployment
- use a pinned Tensormesh/LMCache image that already bundles the intended
lmcacheversion - or build your own vLLM image with
lmcacheinstalled explicitly
vllm/vllm-openai:latestwith no LMCache install- mutable tags where the real digest is unknown
- assuming matching YAML tags are enough without checking the running pod image
lmcache package, not to a vendored
fallback inside vLLM.
If the import works but the pod still fails during LMCache registration, check the
vLLM build date or commit next. A working lmcache import is necessary, but for
MP mode it is not sufficient if the vLLM connector-loading behavior is too old.
Namespace rule
The connectionConfigMap is namespaced. A pod can only mount a ConfigMap from
its own namespace.
That means:
- easiest path: run the vLLM Deployment in the same namespace as the engine
- if you must run vLLM elsewhere, you need to copy/replicate the connection
ConfigMapinto that namespace and keep it in sync
OpenShift-specific patch
If your existing Deployment runs on OpenShift,hostIPC: true means the vLLM pod
also needs an SCC that permits it. The chart only handles the engine pod’s
ServiceAccount automatically; it does not magically patch your pre-existing vLLM
Deployment.
Your vLLM pod therefore needs:
hostIPC: true- a
serviceAccountNamebound to a suitable SCC
Other settings that are optional
These are often useful, but they are not the core LMCache wiring:HF_HOME=/tmp/hf- useful on OpenShift because random UIDs need a writable cache path
HF_HUB_DISABLE_TELEMETRY=1- hygiene only
- readiness/liveness tuning
- depends on model size and boot time
What usually breaks
The common failure modes are:- mounting the ConfigMap but forgetting
hostIPC: true - pinning the engine image but leaving the vLLM pod on
latest - updating the Deployment spec but still having an old ReplicaSet pod alive
- running vLLM in a different namespace and trying to mount a cross-namespace ConfigMap
- using OpenShift without a ServiceAccount/SCC that permits
hostIPC - assuming the vLLM image has external
lmcacheinstalled when it does not - using a vLLM build too old to honor
kv_connector_module_pathcorrectly
Verify the patched deployment
After patching and rolling out the Deployment:- call 1 prints a normal completion and the engine logs
Stored N tokens - call 2 sends the exact same payload and the engine logs
Prefetch request completed ... prefix hits=N - call 2 is usually noticeably faster than call 1 for a long enough prompt
Next steps
Install on OpenShift
OpenShift-specific SCC and ServiceAccount requirements.
End-to-end example
Full install plus demo deployment, smoke test, and benchmark.

