Skip to content

Commit 51dff7b

Browse files
authored
Support for vLLM Data parallel (#1663)
* Removed global inference port from Prerequest extension API Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Inference port and metrics port now per pod Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Differentiate between real pod delete and virtual pod delete Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Pass default metrics port to datastore Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Updates to reflect newer APIs Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Updates to tests Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Fail tests that have errors, don't just log the errors Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Remove tests that are no longer applicable Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Set an InferencePool into the datastore Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Added tests with multiple TargetPorts Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Fix lint issues Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Updated a new test due to updated interface Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Store inference port and metrics host as strings Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Concatenate metrics URL parts together without fmt.Sprintf Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Use already stored metrics host Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * No need to convert inference port to a string Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Updates due to PodInfo changes Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Test updates due to PodInfo changes Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Merged PodRemove into PodDelete Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Changes due to merging of PodRemove into PodDelete Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> * Test changes due to merging of PodRemove into PodDelete Signed-off-by: Shmuel Kallner <kallner@il.ibm.com> --------- Signed-off-by: Shmuel Kallner <kallner@il.ibm.com>
1 parent 831a919 commit 51dff7b

File tree

31 files changed

+444
-273
lines changed

31 files changed

+444
-273
lines changed

cmd/epp/runner/runner.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ func (r *Runner) Run(ctx context.Context) error {
201201
if err != nil {
202202
return err
203203
}
204-
datastore := datastore.NewDatastore(ctx, epf)
204+
datastore := datastore.NewDatastore(ctx, epf, int32(*modelServerMetricsPort))
205205

206206
// --- Setup Metrics Server ---
207207
customCollectors := []prometheus.Collector{collectors.NewInferencePoolMetricsCollector(datastore)}
@@ -466,7 +466,6 @@ func setupMetricsV1(setupLog logr.Logger) (datalayer.EndpointFactory, error) {
466466

467467
pmf := backendmetrics.NewPodMetricsFactory(&backendmetrics.PodMetricsClientImpl{
468468
MetricMapping: mapping,
469-
ModelServerMetricsPort: int32(*modelServerMetricsPort),
470469
ModelServerMetricsPath: *modelServerMetricsPath,
471470
ModelServerMetricsScheme: *modelServerMetricsScheme,
472471
Client: metricsHttpClient,
@@ -481,7 +480,6 @@ func setupDatalayer() (datalayer.EndpointFactory, error) {
481480
// this (and registering the sources with the endpoint factory) should
482481
// be moved accordingly.
483482
source := dlmetrics.NewDataSource(*modelServerMetricsScheme,
484-
int32(*modelServerMetricsPort), // start with (optional) command line port value
485483
*modelServerMetricsPath,
486484
*modelServerMetricsHttpsInsecureSkipVerify,
487485
nil)

pkg/epp/backend/metrics/fake.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"sync"
2323
"time"
2424

25-
corev1 "k8s.io/api/core/v1"
2625
"k8s.io/apimachinery/pkg/types"
2726
"sigs.k8s.io/controller-runtime/pkg/log"
2827

@@ -49,8 +48,8 @@ func (fpm *FakePodMetrics) GetMetrics() *MetricsState {
4948
return fpm.Metrics
5049
}
5150

52-
func (fpm *FakePodMetrics) UpdatePod(pod *corev1.Pod) {
53-
fpm.Pod = toInternalPod(pod)
51+
func (fpm *FakePodMetrics) UpdatePod(pod *datalayer.PodInfo) {
52+
fpm.Pod = pod
5453
}
5554

5655
func (*FakePodMetrics) Put(string, datalayer.Cloneable) {}
@@ -69,7 +68,7 @@ type FakePodMetricsClient struct {
6968
Res map[types.NamespacedName]*MetricsState
7069
}
7170

72-
func (f *FakePodMetricsClient) FetchMetrics(ctx context.Context, pod *backend.Pod, existing *MetricsState, _ int32) (*MetricsState, error) {
71+
func (f *FakePodMetricsClient) FetchMetrics(ctx context.Context, pod *backend.Pod, existing *MetricsState) (*MetricsState, error) {
7372
f.errMu.RLock()
7473
err, ok := f.Err[pod.NamespacedName]
7574
f.errMu.RUnlock()

pkg/epp/backend/metrics/metrics.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,15 @@ const (
4242

4343
type PodMetricsClientImpl struct {
4444
MetricMapping *MetricMapping
45-
ModelServerMetricsPort int32
4645
ModelServerMetricsPath string
4746
ModelServerMetricsScheme string
4847

4948
Client *http.Client
5049
}
5150

5251
// FetchMetrics fetches metrics from a given pod, clones the existing metrics object and returns an updated one.
53-
func (p *PodMetricsClientImpl) FetchMetrics(ctx context.Context, pod *backend.Pod, existing *MetricsState, port int32) (*MetricsState, error) {
54-
url := p.getMetricEndpoint(pod, port)
52+
func (p *PodMetricsClientImpl) FetchMetrics(ctx context.Context, pod *backend.Pod, existing *MetricsState) (*MetricsState, error) {
53+
url := p.getMetricEndpoint(pod)
5554
req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
5655
if err != nil {
5756
return nil, fmt.Errorf("failed to create request: %v", err)
@@ -76,11 +75,8 @@ func (p *PodMetricsClientImpl) FetchMetrics(ctx context.Context, pod *backend.Po
7675
return p.promToPodMetrics(metricFamilies, existing)
7776
}
7877

79-
func (p *PodMetricsClientImpl) getMetricEndpoint(pod *backend.Pod, targetPortNumber int32) string {
80-
if p.ModelServerMetricsPort == 0 {
81-
p.ModelServerMetricsPort = targetPortNumber
82-
}
83-
return fmt.Sprintf("%s://%s:%d%s", p.ModelServerMetricsScheme, pod.Address, p.ModelServerMetricsPort, p.ModelServerMetricsPath)
78+
func (p *PodMetricsClientImpl) getMetricEndpoint(pod *backend.Pod) string {
79+
return p.ModelServerMetricsScheme + "://" + pod.GetMetricsHost() + p.ModelServerMetricsPath
8480
}
8581

8682
// promToPodMetrics updates internal pod metrics with scraped Prometheus metrics.

pkg/epp/backend/metrics/metrics_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,9 @@ func TestPromToPodMetrics(t *testing.T) {
489489
func TestFetchMetrics(t *testing.T) {
490490
ctx := logutil.NewTestLoggerIntoContext(context.Background())
491491
pod := &backend.Pod{
492-
Address: "127.0.0.1",
492+
Address: "127.0.0.1",
493+
Port: "9999",
494+
MetricsHost: "127.0.0.1:9999",
493495
NamespacedName: types.NamespacedName{
494496
Namespace: "test",
495497
Name: "pod",
@@ -499,12 +501,11 @@ func TestFetchMetrics(t *testing.T) {
499501
// No MetricMapping needed for this basic test
500502
p := &PodMetricsClientImpl{
501503
ModelServerMetricsScheme: "http",
502-
ModelServerMetricsPort: 9999,
503504
ModelServerMetricsPath: "/metrics",
504505
Client: http.DefaultClient,
505506
}
506507

507-
_, err := p.FetchMetrics(ctx, pod, existing, 9999) // Use a port that's unlikely to be in use
508+
_, err := p.FetchMetrics(ctx, pod, existing) // Use a port that's unlikely to be in use
508509
if err == nil {
509510
t.Errorf("FetchMetrics() expected error, got nil")
510511
}

pkg/epp/backend/metrics/pod_metrics.go

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ import (
2424
"time"
2525

2626
"github.com/go-logr/logr"
27-
corev1 "k8s.io/api/core/v1"
28-
"k8s.io/apimachinery/pkg/types"
2927

3028
"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/backend"
3129
"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datalayer"
@@ -51,7 +49,7 @@ type podMetrics struct {
5149
}
5250

5351
type PodMetricsClient interface {
54-
FetchMetrics(ctx context.Context, pod *backend.Pod, existing *MetricsState, port int32) (*MetricsState, error)
52+
FetchMetrics(ctx context.Context, pod *backend.Pod, existing *MetricsState) (*MetricsState, error)
5553
}
5654

5755
func (pm *podMetrics) String() string {
@@ -66,23 +64,8 @@ func (pm *podMetrics) GetMetrics() *MetricsState {
6664
return pm.metrics.Load()
6765
}
6866

69-
func (pm *podMetrics) UpdatePod(pod *corev1.Pod) {
70-
pm.pod.Store(toInternalPod(pod))
71-
}
72-
73-
func toInternalPod(pod *corev1.Pod) *backend.Pod {
74-
labels := make(map[string]string, len(pod.GetLabels()))
75-
for key, value := range pod.GetLabels() {
76-
labels[key] = value
77-
}
78-
return &backend.Pod{
79-
NamespacedName: types.NamespacedName{
80-
Name: pod.Name,
81-
Namespace: pod.Namespace,
82-
},
83-
Address: pod.Status.PodIP,
84-
Labels: labels,
85-
}
67+
func (pm *podMetrics) UpdatePod(pod *datalayer.PodInfo) {
68+
pm.pod.Store(pod)
8669
}
8770

8871
// start starts a goroutine exactly once to periodically update metrics. The goroutine will be
@@ -110,17 +93,9 @@ func (pm *podMetrics) startRefreshLoop(ctx context.Context) {
11093
}
11194

11295
func (pm *podMetrics) refreshMetrics() error {
113-
pool, err := pm.ds.PoolGet()
114-
if err != nil {
115-
// No inference pool or not initialize.
116-
return err
117-
}
11896
ctx, cancel := context.WithTimeout(context.Background(), fetchMetricsTimeout)
11997
defer cancel()
120-
if len(pool.Spec.TargetPorts) != 1 {
121-
return fmt.Errorf("expected 1 target port, got %d", len(pool.Spec.TargetPorts))
122-
}
123-
updated, err := pm.pmc.FetchMetrics(ctx, pm.GetPod(), pm.GetMetrics(), int32(pool.Spec.TargetPorts[0].Number))
98+
updated, err := pm.pmc.FetchMetrics(ctx, pm.GetPod(), pm.GetMetrics())
12499
if err != nil {
125100
pm.logger.V(logutil.TRACE).Info("Failed to refreshed metrics:", "err", err)
126101
}

pkg/epp/backend/metrics/pod_metrics_test.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@ import (
2323
"github.com/google/go-cmp/cmp"
2424
"github.com/google/go-cmp/cmp/cmpopts"
2525
"github.com/stretchr/testify/assert"
26-
corev1 "k8s.io/api/core/v1"
27-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2826
"k8s.io/apimachinery/pkg/types"
2927

3028
v1 "sigs.k8s.io/gateway-api-inference-extension/api/v1"
29+
"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datalayer"
3130
)
3231

3332
var (
34-
pod1 = &corev1.Pod{
35-
ObjectMeta: metav1.ObjectMeta{
36-
Name: "pod1",
33+
pod1Info = &datalayer.PodInfo{
34+
NamespacedName: types.NamespacedName{
35+
Name: "pod1-rank-0",
3736
Namespace: "default",
3837
},
38+
PodName: "pod1",
3939
}
4040
initial = &MetricsState{
4141
WaitingQueueSize: 0,
@@ -65,12 +65,11 @@ func TestMetricsRefresh(t *testing.T) {
6565
pmf := NewPodMetricsFactory(pmc, time.Millisecond)
6666

6767
// The refresher is initialized with empty metrics.
68-
pm := pmf.NewEndpoint(ctx, pod1, &fakeDataStore{})
68+
pm := pmf.NewEndpoint(ctx, pod1Info, &fakeDataStore{})
6969

70-
namespacedName := types.NamespacedName{Name: pod1.Name, Namespace: pod1.Namespace}
7170
// Use SetRes to simulate an update of metrics from the pod.
7271
// Verify that the metrics are updated.
73-
pmc.SetRes(map[types.NamespacedName]*MetricsState{namespacedName: initial})
72+
pmc.SetRes(map[types.NamespacedName]*MetricsState{pod1Info.NamespacedName: initial})
7473
condition := func(collect *assert.CollectT) {
7574
assert.True(collect, cmp.Equal(pm.GetMetrics(), initial, cmpopts.IgnoreFields(MetricsState{}, "UpdateTime")))
7675
}
@@ -80,7 +79,7 @@ func TestMetricsRefresh(t *testing.T) {
8079
// new update.
8180
pmf.ReleaseEndpoint(pm)
8281
time.Sleep(pmf.refreshMetricsInterval * 2 /* small buffer for robustness */)
83-
pmc.SetRes(map[types.NamespacedName]*MetricsState{namespacedName: updated})
82+
pmc.SetRes(map[types.NamespacedName]*MetricsState{pod1Info.NamespacedName: updated})
8483
// Still expect the same condition (no metrics update).
8584
assert.EventuallyWithT(t, condition, time.Second, time.Millisecond)
8685
}

pkg/epp/backend/metrics/types.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"sync"
2323
"time"
2424

25-
corev1 "k8s.io/api/core/v1"
2625
"sigs.k8s.io/controller-runtime/pkg/log"
2726

2827
"sigs.k8s.io/gateway-api-inference-extension/pkg/epp/datalayer"
@@ -53,8 +52,7 @@ type PodMetricsFactory struct {
5352
refreshMetricsInterval time.Duration
5453
}
5554

56-
func (f *PodMetricsFactory) NewEndpoint(parentCtx context.Context, in *corev1.Pod, ds datalayer.PoolInfo) PodMetrics {
57-
pod := toInternalPod(in)
55+
func (f *PodMetricsFactory) NewEndpoint(parentCtx context.Context, pod *datalayer.PodInfo, ds datalayer.PoolInfo) PodMetrics {
5856
pm := &podMetrics{
5957
pmc: f.pmc,
6058
ds: ds,

pkg/epp/controller/inferenceobjective_reconciler_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ func TestInferenceObjectiveReconciler(t *testing.T) {
160160
WithObjects(initObjs...).
161161
Build()
162162
pmf := backendmetrics.NewPodMetricsFactory(&backendmetrics.FakePodMetricsClient{}, time.Second)
163-
ds := datastore.NewDatastore(t.Context(), pmf)
163+
ds := datastore.NewDatastore(t.Context(), pmf, 0)
164164
for _, m := range test.objectivessInStore {
165165
ds.ObjectiveSet(m)
166166
}

pkg/epp/controller/inferencepool_reconciler_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,14 @@ func TestInferencePoolReconciler(t *testing.T) {
114114
ctx := context.Background()
115115

116116
pmf := backendmetrics.NewPodMetricsFactory(&backendmetrics.FakePodMetricsClient{}, time.Second)
117-
datastore := datastore.NewDatastore(ctx, pmf)
118-
inferencePoolReconciler := &InferencePoolReconciler{Reader: fakeClient, Datastore: datastore, PoolGKNN: gknn}
117+
ds := datastore.NewDatastore(ctx, pmf, 0)
118+
inferencePoolReconciler := &InferencePoolReconciler{Reader: fakeClient, Datastore: ds, PoolGKNN: gknn}
119119

120120
// Step 1: Inception, only ready pods matching pool1 are added to the store.
121121
if _, err := inferencePoolReconciler.Reconcile(ctx, req); err != nil {
122122
t.Errorf("Unexpected InferencePool reconcile error: %v", err)
123123
}
124-
if diff := diffStore(datastore, diffStoreParams{wantPool: pool1, wantPods: []string{"pod1", "pod2"}}); diff != "" {
124+
if diff := diffStore(ds, diffStoreParams{wantPool: pool1, wantPods: []string{"pod1-rank-0", "pod2-rank-0"}}); diff != "" {
125125
t.Errorf("Unexpected diff (+got/-want): %s", diff)
126126
}
127127

@@ -139,7 +139,7 @@ func TestInferencePoolReconciler(t *testing.T) {
139139
if _, err := inferencePoolReconciler.Reconcile(ctx, req); err != nil {
140140
t.Errorf("Unexpected InferencePool reconcile error: %v", err)
141141
}
142-
if diff := diffStore(datastore, diffStoreParams{wantPool: newPool1, wantPods: []string{"pod5"}}); diff != "" {
142+
if diff := diffStore(ds, diffStoreParams{wantPool: newPool1, wantPods: []string{"pod5-rank-0"}}); diff != "" {
143143
t.Errorf("Unexpected diff (+got/-want): %s", diff)
144144
}
145145

@@ -154,7 +154,7 @@ func TestInferencePoolReconciler(t *testing.T) {
154154
if _, err := inferencePoolReconciler.Reconcile(ctx, req); err != nil {
155155
t.Errorf("Unexpected InferencePool reconcile error: %v", err)
156156
}
157-
if diff := diffStore(datastore, diffStoreParams{wantPool: newPool1, wantPods: []string{"pod5"}}); diff != "" {
157+
if diff := diffStore(ds, diffStoreParams{wantPool: newPool1, wantPods: []string{"pod5-rank-0"}}); diff != "" {
158158
t.Errorf("Unexpected diff (+got/-want): %s", diff)
159159
}
160160

@@ -168,7 +168,7 @@ func TestInferencePoolReconciler(t *testing.T) {
168168
if _, err := inferencePoolReconciler.Reconcile(ctx, req); err != nil {
169169
t.Errorf("Unexpected InferencePool reconcile error: %v", err)
170170
}
171-
if diff := diffStore(datastore, diffStoreParams{wantPods: []string{}}); diff != "" {
171+
if diff := diffStore(ds, diffStoreParams{wantPods: []string{}}); diff != "" {
172172
t.Errorf("Unexpected diff (+got/-want): %s", diff)
173173
}
174174
}
@@ -261,14 +261,14 @@ func TestXInferencePoolReconciler(t *testing.T) {
261261
ctx := context.Background()
262262

263263
pmf := backendmetrics.NewPodMetricsFactory(&backendmetrics.FakePodMetricsClient{}, time.Second)
264-
datastore := datastore.NewDatastore(ctx, pmf)
265-
inferencePoolReconciler := &InferencePoolReconciler{Reader: fakeClient, Datastore: datastore, PoolGKNN: gknn}
264+
ds := datastore.NewDatastore(ctx, pmf, 0)
265+
inferencePoolReconciler := &InferencePoolReconciler{Reader: fakeClient, Datastore: ds, PoolGKNN: gknn}
266266

267267
// Step 1: Inception, only ready pods matching pool1 are added to the store.
268268
if _, err := inferencePoolReconciler.Reconcile(ctx, req); err != nil {
269269
t.Errorf("Unexpected InferencePool reconcile error: %v", err)
270270
}
271-
if diff := xDiffStore(t, datastore, xDiffStoreParams{wantPool: pool1, wantPods: []string{"pod1", "pod2"}}); diff != "" {
271+
if diff := xDiffStore(t, ds, xDiffStoreParams{wantPool: pool1, wantPods: []string{"pod1-rank-0", "pod2-rank-0"}}); diff != "" {
272272
t.Errorf("Unexpected diff (+got/-want): %s", diff)
273273
}
274274

@@ -284,7 +284,7 @@ func TestXInferencePoolReconciler(t *testing.T) {
284284
if _, err := inferencePoolReconciler.Reconcile(ctx, req); err != nil {
285285
t.Errorf("Unexpected InferencePool reconcile error: %v", err)
286286
}
287-
if diff := xDiffStore(t, datastore, xDiffStoreParams{wantPool: newPool1, wantPods: []string{"pod5"}}); diff != "" {
287+
if diff := xDiffStore(t, ds, xDiffStoreParams{wantPool: newPool1, wantPods: []string{"pod5-rank-0"}}); diff != "" {
288288
t.Errorf("Unexpected diff (+got/-want): %s", diff)
289289
}
290290

@@ -299,7 +299,7 @@ func TestXInferencePoolReconciler(t *testing.T) {
299299
if _, err := inferencePoolReconciler.Reconcile(ctx, req); err != nil {
300300
t.Errorf("Unexpected InferencePool reconcile error: %v", err)
301301
}
302-
if diff := xDiffStore(t, datastore, xDiffStoreParams{wantPool: newPool1, wantPods: []string{"pod5"}}); diff != "" {
302+
if diff := xDiffStore(t, ds, xDiffStoreParams{wantPool: newPool1, wantPods: []string{"pod5-rank-0"}}); diff != "" {
303303
t.Errorf("Unexpected diff (+got/-want): %s", diff)
304304
}
305305

@@ -313,7 +313,7 @@ func TestXInferencePoolReconciler(t *testing.T) {
313313
if _, err := inferencePoolReconciler.Reconcile(ctx, req); err != nil {
314314
t.Errorf("Unexpected InferencePool reconcile error: %v", err)
315315
}
316-
if diff := xDiffStore(t, datastore, xDiffStoreParams{wantPods: []string{}}); diff != "" {
316+
if diff := xDiffStore(t, ds, xDiffStoreParams{wantPods: []string{}}); diff != "" {
317317
t.Errorf("Unexpected diff (+got/-want): %s", diff)
318318
}
319319
}

pkg/epp/controller/pod_reconciler.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"github.com/go-logr/logr"
2424
corev1 "k8s.io/api/core/v1"
2525
apierrors "k8s.io/apimachinery/pkg/api/errors"
26-
"k8s.io/apimachinery/pkg/types"
2726
ctrl "sigs.k8s.io/controller-runtime"
2827
"sigs.k8s.io/controller-runtime/pkg/client"
2928
"sigs.k8s.io/controller-runtime/pkg/event"
@@ -53,7 +52,7 @@ func (c *PodReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.R
5352
pod := &corev1.Pod{}
5453
if err := c.Get(ctx, req.NamespacedName, pod); err != nil {
5554
if apierrors.IsNotFound(err) {
56-
c.Datastore.PodDelete(req.NamespacedName)
55+
c.Datastore.PodDelete(req.Name)
5756
return ctrl.Result{}, nil
5857
}
5958
return ctrl.Result{}, fmt.Errorf("unable to get pod - %w", err)
@@ -90,10 +89,9 @@ func (c *PodReconciler) SetupWithManager(mgr ctrl.Manager) error {
9089
}
9190

9291
func (c *PodReconciler) updateDatastore(logger logr.Logger, pod *corev1.Pod) {
93-
namespacedName := types.NamespacedName{Name: pod.Name, Namespace: pod.Namespace}
9492
if !podutil.IsPodReady(pod) || !c.Datastore.PoolLabelsMatch(pod.Labels) {
9593
logger.V(logutil.DEBUG).Info("Pod removed or not added")
96-
c.Datastore.PodDelete(namespacedName)
94+
c.Datastore.PodDelete(pod.Name)
9795
} else {
9896
if c.Datastore.PodUpdateOrAddIfNotExist(pod) {
9997
logger.V(logutil.DEFAULT).Info("Pod added")

0 commit comments

Comments
 (0)