Fix: add some logs for WorkloadSpread managing existing pods (#1976)

Signed-off-by: AiRanthem <zhongtianyun.zty@alibaba-inc.com>
This commit is contained in:
Ai Ranthem 2025-03-28 18:56:06 +08:00 committed by GitHub
parent b7bdfffae0
commit 18ef834d14
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 14 additions and 9 deletions

View File

@ -516,6 +516,7 @@ func (r *ReconcileWorkloadSpread) getSuitableSubsetNameForPod(ws *appsv1alpha1.W
if isNotMatchedWS(injectWS, ws) { if isNotMatchedWS(injectWS, ws) {
// process the pods that were created before workloadSpread // process the pods that were created before workloadSpread
matchedSubset, err := r.getAndUpdateSuitableSubsetName(ws, pod, subsetMissingReplicas) matchedSubset, err := r.getAndUpdateSuitableSubsetName(ws, pod, subsetMissingReplicas)
klog.V(3).InfoS("no subset injected to pod, find a suitable one", "pod", klog.KObj(pod), "workloadSpread", klog.KObj(ws), "matchedSubset", matchedSubset)
if err != nil { if err != nil {
return "", err return "", err
} else if matchedSubset == nil { } else if matchedSubset == nil {
@ -553,6 +554,7 @@ func (r *ReconcileWorkloadSpread) getAndUpdateSuitableSubsetName(ws *appsv1alpha
klog.ErrorS(err, "Unexpected error occurred when matching pod with subset, please check requiredSelectorTerm field of subset in WorkloadSpread", klog.ErrorS(err, "Unexpected error occurred when matching pod with subset, please check requiredSelectorTerm field of subset in WorkloadSpread",
"pod", klog.KObj(pod), "subsetName", subset.Name, "workloadSpread", klog.KObj(ws)) "pod", klog.KObj(pod), "subsetName", subset.Name, "workloadSpread", klog.KObj(ws))
} }
klog.V(4).InfoS("preferred score for subset", "pod", klog.KObj(pod), "subsetName", subset.Name, "workloadSpread", klog.KObj(ws), "preferredScore", preferredScore, "node", node.Name)
// select the most favorite subsets for the pod by subset.PreferredNodeSelectorTerms // select the most favorite subsets for the pod by subset.PreferredNodeSelectorTerms
if matched && preferredScore > maxPreferredScore { if matched && preferredScore > maxPreferredScore {
favoriteSubset = subset favoriteSubset = subset
@ -833,29 +835,33 @@ func (r *ReconcileWorkloadSpread) UpdateWorkloadSpreadStatus(ws *appsv1alpha1.Wo
clone.Status = *status clone.Status = *status
err := r.writeWorkloadSpreadStatus(clone) err := r.writeWorkloadSpreadStatus(clone)
if err == nil { logStatusChanges(ws, status, err)
klog.V(3).InfoS(makeStatusChangedLog(ws, status), "workloadSpread", klog.KObj(ws))
}
return err return err
} }
func makeStatusChangedLog(ws *appsv1alpha1.WorkloadSpread, status *appsv1alpha1.WorkloadSpreadStatus) string { func logStatusChanges(ws *appsv1alpha1.WorkloadSpread, status *appsv1alpha1.WorkloadSpreadStatus, err error) {
if err != nil {
klog.ErrorS(err, "Failed to update WorkloadSpread status", "workloadSpread", klog.KObj(ws), "status", status)
return
}
oldSubsetStatuses := ws.Status.SubsetStatuses oldSubsetStatuses := ws.Status.SubsetStatuses
oldSubsetStatusMap := make(map[string]*appsv1alpha1.WorkloadSpreadSubsetStatus, len(oldSubsetStatuses)) oldSubsetStatusMap := make(map[string]*appsv1alpha1.WorkloadSpreadSubsetStatus, len(oldSubsetStatuses))
for i := range oldSubsetStatuses { for i := range oldSubsetStatuses {
oldSubsetStatusMap[oldSubsetStatuses[i].Name] = &oldSubsetStatuses[i] oldSubsetStatusMap[oldSubsetStatuses[i].Name] = &oldSubsetStatuses[i]
} }
log := fmt.Sprintf("WorkloadSpread (%s/%s) changes Status:", ws.Namespace, ws.Name) var log string
for i, subset := range ws.Spec.Subsets { for i, subset := range ws.Spec.Subsets {
oldStatus, ok := oldSubsetStatusMap[subset.Name] oldStatus, ok := oldSubsetStatusMap[subset.Name]
if !ok { if !ok {
continue oldStatus = &appsv1alpha1.WorkloadSpreadSubsetStatus{
Name: subset.Name,
}
} }
newStatus := status.SubsetStatuses[i] newStatus := status.SubsetStatuses[i]
log += fmt.Sprintf(" (<subset name: %s>", subset.Name) log = fmt.Sprintf(" (<subset name: %s>", subset.Name)
if oldStatus.Replicas != newStatus.Replicas { if oldStatus.Replicas != newStatus.Replicas {
log += fmt.Sprintf(" <Replicas: %d -> %d>", oldStatus.Replicas, newStatus.Replicas) log += fmt.Sprintf(" <Replicas: %d -> %d>", oldStatus.Replicas, newStatus.Replicas)
@ -883,8 +889,7 @@ func makeStatusChangedLog(ws *appsv1alpha1.WorkloadSpread, status *appsv1alpha1.
log += ")" log += ")"
} }
klog.V(3).InfoS("WorkloadSpread status changed", "workloadSpread", klog.KObj(ws), "details", log)
return log
} }
func (r *ReconcileWorkloadSpread) writeWorkloadSpreadStatus(ws *appsv1alpha1.WorkloadSpread) error { func (r *ReconcileWorkloadSpread) writeWorkloadSpreadStatus(ws *appsv1alpha1.WorkloadSpread) error {