To get the pods, the Pod template must have the statefulset-name label set. This way, the labelSelector API parameter is issued and you may retrieve the associated pods:
metadata:
name: [here it goes the statefulset name]
spec:
template:
metadata:
labels:
statefulset-name: [here it goes the statefulset name]
You can retrieve the pods as resources controlled by the Stateful Set by issuing ->getPods():
foreach ($sts->getPods() as $pod) {
// $pod->logs()
}
Custom Pod Labels
If you cannot declare the statefulset-name label or simply want to use something else, you may call selectPods from the resource:
use RenokiCo\PhpK8s\Kinds\K8sStatefulSet;
K8sStatefulSet::selectPods(function (K8sStatefulSet $sts) {
// $sts is the current StatefulSet
return [
'some-label' => 'some-label-value',
'some-other-label' => "{$sts->getName()}-custom-name",
];
});
Scaling
The Scaling API is available via a K8sScale resource:
$scaler = $sts->scaler();
$scaler->setReplicas(3)->update(); // autoscale the Stateful Set to 3 replicas
Shorthand, you can use scale() directly from the Stateful Set: