Summary
During an automatic GKE node-pool upgrade, an operator-managed Restate cluster using node-local NVMe for RESTATE_BASE_DIR became unrecoverable and lost its in-flight invocations.
Could you clarify whether node-local NVMe is a supported persistence option for RestateCluster, or whether the complete Restate base directory should always remain on the operator-managed PVC?
Configuration
- Restate Operator
3.0.1
- Restate Server
1.7.2
- Regional GKE cluster in
us-east1
- 5 Restate nodes, replication factor 3
- Each node ran
worker, log-server, and metadata-server
- Partition snapshots in object storage
- Operator-generated PDB with
maxUnavailable: 1
RESTATE_BASE_DIR pointed to an emptyDir backed by node-local NVMe
- The operator's durable PVCs still existed, but were not used as the base directory
- GKE node-pool
management.autoUpgrade: true
- GKE upgrade strategy:
BLUE_GREEN, batch_percentage: 1.0, no soak duration
Failure sequence
When GKE replaced the first node, its NVMe store was empty. The StatefulSet recreated the pod under the same stable name, and Restate exited with:
Node cannot start a log-server on N5, it has detected that it has lost its data.
storage-state is `data-loss`
The failed pod reduced PDB allowed disruptions to zero. GKE honored the PDB during its drain timeout, then force-evicted the rest of the blue-green batch. The cluster subsequently required manual recovery.
Our understanding is that a wiped Restate node needs a new node name, followed by catch-up and removal of the failed node. A StatefulSet normally recreates the ordinal with the same name.
Questions
- Is the complete
RESTATE_BASE_DIR supported on ephemeral node-local NVMe when using the Restate operator?
- Does the operator support, or plan to support, replacing a wiped node with a fresh Restate node identity and waiting for it to catch up before the next disruption?
- Can log-server and metadata-server identity remain on a durable PVC while only disposable partition/cache data uses NVMe?
- If not, should we keep the entire base directory on a durable, provisioned-IOPS PVC?
- For GKE, what node-pool upgrade configuration do you recommend? Would
SURGE with maxSurge=1 and maxUnavailable=0 be preferred over our blue-green 100% batch, in addition to the operator PDB?
Summary
During an automatic GKE node-pool upgrade, an operator-managed Restate cluster using node-local NVMe for
RESTATE_BASE_DIRbecame unrecoverable and lost its in-flight invocations.Could you clarify whether node-local NVMe is a supported persistence option for
RestateCluster, or whether the complete Restate base directory should always remain on the operator-managed PVC?Configuration
3.0.11.7.2us-east1worker,log-server, andmetadata-servermaxUnavailable: 1RESTATE_BASE_DIRpointed to anemptyDirbacked by node-local NVMemanagement.autoUpgrade: trueBLUE_GREEN,batch_percentage: 1.0, no soak durationFailure sequence
When GKE replaced the first node, its NVMe store was empty. The StatefulSet recreated the pod under the same stable name, and Restate exited with:
The failed pod reduced PDB allowed disruptions to zero. GKE honored the PDB during its drain timeout, then force-evicted the rest of the blue-green batch. The cluster subsequently required manual recovery.
Our understanding is that a wiped Restate node needs a new node name, followed by catch-up and removal of the failed node. A StatefulSet normally recreates the ordinal with the same name.
Questions
RESTATE_BASE_DIRsupported on ephemeral node-local NVMe when using the Restate operator?SURGEwithmaxSurge=1andmaxUnavailable=0be preferred over our blue-green 100% batch, in addition to the operator PDB?