Skip to content

Commit b2c7252

Browse files
Nakshatra SharmaNakshatra Sharma
authored andcommitted
feat: Add native topology-aware deletion priority support
Implements native topology awareness in GameServer Controller. - Adds logic to SyncPodToGs to query pods on the same node - Calculates priority based on pod density - Enabled via annotation 'game.kruise.io/topology-aware-deletion' Fixes #198
1 parent 25626ff commit b2c7252

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

pkg/controllers/gameserver/gameserver_manager.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,35 @@ func (manager GameServerManager) SyncPodToGs(ctx context.Context, gss *gameKruis
301301
// sync Service Qualities
302302
sqConditions := syncServiceQualities(gss.Spec.ServiceQualities, pod.Status.Conditions, gs, manager.eventRecorder)
303303

304+
// Topology-aware Deletion Priority (Native Support)
305+
if val, ok := gs.GetAnnotations()["game.kruise.io/topology-aware-deletion"]; ok && val == "true" && pod.Spec.NodeName != "" {
306+
podList := &corev1.PodList{}
307+
opts := []client.ListOption{
308+
client.InNamespace(pod.Namespace),
309+
client.MatchingFields{"spec.nodeName": pod.Spec.NodeName},
310+
}
311+
if err := manager.client.List(ctx, podList, opts...); err == nil {
312+
podCount := len(podList.Items)
313+
ownerMap := make(map[types.UID]bool)
314+
for _, p := range podList.Items {
315+
for _, owner := range p.OwnerReferences {
316+
ownerMap[owner.UID] = true
317+
}
318+
}
319+
// Priority = 100 - (pods * 10) - (owners * 5)
320+
priority := 100 - (podCount * 10) - (len(ownerMap) * 5)
321+
if priority < 0 {
322+
priority = 0
323+
}
324+
priorityStr := strconv.Itoa(priority)
325+
if podDeletePriority.String() != priorityStr {
326+
podDeletePriority = intstr.FromString(priorityStr)
327+
}
328+
329+
}
330+
}
331+
332+
304333
// sync Metadata from Gss
305334
if isNeedToSyncMetadata(gss, gs) {
306335
gsMetadata := syncMetadataFromGss(gss)

0 commit comments

Comments
 (0)