You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to update the replicas and a couple env variables for a StatefulSet. This is the code
$statefulSet = $this->kubernetesCluster->getStatefulSetByName($statefulSetName, 'alloy');
$currentReplicas = $statefulSet->getReplicas();
$velocity = (int)$statefulSet->getAnnotations()['velocity'];
$replicasNeeded = $this->calculateTheNeededReplicaPerStatefulSet($velocity, $depth);
// If the current replicas are the same as the one we need, nothing to do.
if ($currentReplicas === $replicasNeeded) {
continue;
}
// We update the starting point for the new replica group
$envPosition = 0;
$envVars = $statefulSet->getAttribute('spec.template.spec.containers.0.env');
foreach ($envVars as $envVar) {
if ($envVar['name'] === 'START_FROM_GLOBAL_POSITION') {
break;
}
$envPosition++;
}
// After trying different options, sleep for one second was what it worked for me to perform multiple
// actions over the same StatefulSet
sleep(2);
$statefulSet
->setAttribute(
"spec.template.spec.containers.0.env.$envPosition",
[
'name' => 'START_FROM_GLOBAL_POSITION',
'value' => "$minGlobalPositionProcessedPerStatefulSets[$statefulSetName]"
]
)
->update();
// We scale the replicas
sleep(2);
$statefulSet->setReplicas($replicasNeeded)->update();
// We update the info about the size of the consumer group
$envPosition = 0;
$envVars = $statefulSet->getAttribute('spec.template.spec.containers.0.env');
foreach ($envVars as $envVar) {
if ($envVar['name'] === 'CONSUMER_SIZE_GROUP') {
break;
}
$envPosition++;
}
sleep(2);
$statefulSet
->setAttribute(
"spec.template.spec.containers.0.env.$envPosition",
['name' => 'CONSUMER_SIZE_GROUP', 'value' => "$replicasNeeded"]
)
->update();
} catch (Throwable $e) {
$this->logger->error($e->getMessage(), [$statefulSetName]);
}
I am using sleeps between updates of those three attributes hoping they will get rid of the error but I still getting some of them:
Client error: `PUT https://kubernetes.default.svc/apis/apps/v1/namespaces/alloy/statefulsets/bulkprocessor?pretty=1` resulted in a `409 Conflict` response:
{
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Failure",
"message": "Operation cannot be f (truncated...)
I also tried $statefulSet->refresh() between updates. I tried as well doing an update of the two env vars and the replicas in the same update but it didn't work, that's why I am doing 3 updates.
Is there a better way to accomplish this?
Thank you
The text was updated successfully, but these errors were encountered:
Hello,
I am trying to update the replicas and a couple env variables for a StatefulSet. This is the code
I am using sleeps between updates of those three attributes hoping they will get rid of the error but I still getting some of them:
I also tried
$statefulSet->refresh()
between updates. I tried as well doing an update of the two env vars and the replicas in the same update but it didn't work, that's why I am doing 3 updates.Is there a better way to accomplish this?
Thank you
The text was updated successfully, but these errors were encountered: