in controllers/dsworker_controller.go [203:236]
func (r *DSWorkerReconciler) ensureScaled(ctx context.Context, cluster *dsv1alpha1.DSWorker) (bool, error) {
// Get current members in this cluster
ms, err := r.podMemberSet(ctx, cluster)
if err != nil {
return true, err
}
workerLogger.Info("before scale", "podMemberSet", len(ms), "replicas", cluster.Spec.Replicas)
// Scale up
if len(ms) < cluster.Spec.Replicas {
err = r.createMember(ctx, cluster)
if err != nil {
r.recorder.Event(cluster, corev1.EventTypeWarning, "cannot create the new ds-dsworker pod", "the ds-dsworker pod had been created failed")
return true, err
}
return true, err
}
// Scale down
if len(ms) > cluster.Spec.Replicas {
pod := &corev1.Pod{}
member := ms.PickOne()
pod.SetName(member.Name)
pod.SetNamespace(member.Namespace)
err = r.deleteMember(ctx, pod, cluster)
if err != nil {
return true, err
}
return true, err
}
return false, nil
}