Kubernetes process launch configuration
This document applies to Deephaven deployments on Kubernetes. For traditional bare-metal or VM-based installations, see Java process launch configuration.
Deephaven on Kubernetes uses containerized deployments where processes run as pods managed by Kubernetes. Configuration is primarily handled through Helm values, ConfigMaps, and environment variables rather than direct file system access.
This document discusses:
- The various processes in a Kubernetes Deephaven deployment and how they're deployed as pods.
- Configuration methods using Helm values, environment variables, and ConfigMaps.
- How to modify process launch parameters such as memory, JVM arguments, and environment variables.
- Classpath and custom libraries in containerized environments.
- Differences from traditional installations.
Processes
In a Kubernetes deployment, Deephaven processes run as containerized pods. The following deployments are created:
Core services
-
Deephaven infrastructure services: Multiple deployments run core services:
configuration-server- Configuration Server provides configuration to other components.authserver- Authentication Server handles user authentication.controller- Persistent Query Controller manages PQ scheduling and execution.webapi- Web API Service serves the web IDE.las- Log Aggregator Service combines binary log entries from multiple processes.
-
etcd StatefulSet: Runs the etcd cluster (typically 3 or 5 replicas for high availability).
-
query-server deployment: Runs Remote Query Dispatchers that create worker pods for queries and Code Studios.
-
merge-server deployment: Runs dispatchers for privileged workers that can write to historical data.
-
dis deployment: Data Import Server handles data ingestion from external sources.
Worker pods
- Worker pods: Dynamically created by dispatchers for Persistent Queries and Code Studios. Each worker runs in its own isolated pod.
Command line utilities
Command line tools like dhconfig and dhctl are accessed by executing commands inside the management shell pod:
Configuration methods
Kubernetes deployments use different configuration approaches than traditional installations.
Helm values
The primary method for configuring Deephaven on Kubernetes is through Helm values files. Create a values override file to customize your deployment:
Apply the configuration:
Environment variables
Environment variables are set through Helm values in the userEnv section. These are injected into pod containers at startup:
Worker volumes and secrets
For complex configurations requiring additional volumes, use workerExtraVolumes to mount pre-existing PersistentVolumeClaims to worker pods:
For secrets, use workerExtraSecrets:
Deephaven properties
Deephaven properties files are still used in Kubernetes deployments but are managed through the configuration service. Modify properties using dhconfig within the management shell:
See How do I run commands on the command line for more details.
Modifying launch parameters
Memory configuration
Configure memory limits and requests for each deployment type:
See Kubernetes configuration settings for detailed memory configuration guidance.
JVM arguments
Add JVM arguments for specific services using the process.<service>.jvmArgsUser Helm value:
For worker-specific JVM arguments, configure them in the Persistent Query or Code Studio UI when creating the session.
Service-specific configuration
Configure individual deployments:
Classpath and custom libraries
In Kubernetes deployments, the default classpath includes /customer/deployed/java_lib/ and /customer/deployed/plugin/. Custom libraries are typically added through custom container images.
For details on adding custom libraries, see Kubernetes installation. For general classpath information, see Java process launch configuration.
Differences from traditional installations
| Aspect | Traditional Installation | Kubernetes Installation |
|---|---|---|
| Process management | dh_monit, systemd | Kubernetes deployments, StatefulSets |
| Configuration files | Direct file system access in /etc/sysconfig | Helm values, ConfigMaps, exec into pods |
| Worker creation | Local process spawning | Pod creation via Kubernetes API |
| Custom libraries | File system directories (CUSTOMER_JAR_DIR) | Custom container images |
| Log access | Direct file access in /var/log/deephaven | kubectl logs, log aggregator services |
| Service restart | dh_monit restart <service> | kubectl rollout restart deployment/<name> |
| Scaling | Add physical/virtual machines | Scale deployments: kubectl scale or Helm |
| Updates | Installer scripts | Helm upgrade with new image versions |
Accessing logs
View logs for pods:
Restarting services
Restart deployments to pick up configuration changes:
Scaling services
Scale deployments horizontally:
Troubleshooting
For Kubernetes-specific troubleshooting, see Troubleshooting Kubernetes.
Common debugging steps:
Related documentation
- Kubernetes installation
- Kubernetes configuration settings
- Troubleshooting Kubernetes
- Java process launch configuration (for traditional installations)
- Configuration overview