Skip to content

Commit b8f03a1

Browse files
authored
Merge pull request kubernetes#84294 from denkensk/remove-predicate-nodeinfo-kubelet
Remove predicates.NodeInfo dependency from kubelet
2 parents 0c88c48 + b1a3fb4 commit b8f03a1

File tree

6 files changed

+31
-43
lines changed

6 files changed

+31
-43
lines changed

pkg/kubelet/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ go_library(
9595
"//pkg/kubelet/util/queue:go_default_library",
9696
"//pkg/kubelet/util/sliceutils:go_default_library",
9797
"//pkg/kubelet/volumemanager:go_default_library",
98-
"//pkg/scheduler/algorithm/predicates:go_default_library",
9998
"//pkg/scheduler/api:go_default_library",
10099
"//pkg/security/apparmor:go_default_library",
101100
"//pkg/security/podsecuritypolicy/sysctl:go_default_library",
@@ -240,6 +239,7 @@ go_test(
240239
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
241240
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
242241
"//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
242+
"//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
243243
"//staging/src/k8s.io/client-go/rest:go_default_library",
244244
"//staging/src/k8s.io/client-go/testing:go_default_library",
245245
"//staging/src/k8s.io/client-go/tools/record:go_default_library",

pkg/kubelet/kubelet.go

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import (
3434

3535
cadvisorapi "github.com/google/cadvisor/info/v1"
3636
v1 "k8s.io/api/core/v1"
37-
apierrors "k8s.io/apimachinery/pkg/api/errors"
3837
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3938
"k8s.io/apimachinery/pkg/fields"
4039
"k8s.io/apimachinery/pkg/labels"
@@ -106,7 +105,6 @@ import (
106105
"k8s.io/kubernetes/pkg/kubelet/util/queue"
107106
"k8s.io/kubernetes/pkg/kubelet/util/sliceutils"
108107
"k8s.io/kubernetes/pkg/kubelet/volumemanager"
109-
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
110108
"k8s.io/kubernetes/pkg/security/apparmor"
111109
sysctlwhitelist "k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl"
112110
utilipt "k8s.io/kubernetes/pkg/util/iptables"
@@ -458,7 +456,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
458456
r := cache.NewReflector(nodeLW, &v1.Node{}, nodeIndexer, 0)
459457
go r.Run(wait.NeverStop)
460458
}
461-
nodeInfo := &CachedNodeInfo{NodeLister: corelisters.NewNodeLister(nodeIndexer)}
459+
nodeLister := corelisters.NewNodeLister(nodeIndexer)
462460

463461
// TODO: get the real node object of ourself,
464462
// and use the real node name and UID.
@@ -506,7 +504,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
506504
registerSchedulable: registerSchedulable,
507505
dnsConfigurer: dns.NewConfigurer(kubeDeps.Recorder, nodeRef, parsedNodeIP, clusterDNS, kubeCfg.ClusterDomain, kubeCfg.ResolverConfig),
508506
serviceLister: serviceLister,
509-
nodeInfo: nodeInfo,
507+
nodeLister: nodeLister,
510508
masterServiceNamespace: masterServiceNamespace,
511509
streamingConnectionIdleTimeout: kubeCfg.StreamingConnectionIdleTimeout.Duration,
512510
recorder: kubeDeps.Recorder,
@@ -959,8 +957,8 @@ type Kubelet struct {
959957
masterServiceNamespace string
960958
// serviceLister knows how to list services
961959
serviceLister serviceLister
962-
// nodeInfo knows how to get information about the node for this kubelet.
963-
nodeInfo predicates.NodeInfo
960+
// nodeLister knows how to list nodes
961+
nodeLister corelisters.NodeLister
964962

965963
// a list of node labels to register
966964
nodeLabels map[string]string
@@ -2306,23 +2304,3 @@ func getStreamingConfig(kubeCfg *kubeletconfiginternal.KubeletConfiguration, kub
23062304
}
23072305
return config
23082306
}
2309-
2310-
// CachedNodeInfo implements NodeInfo
2311-
type CachedNodeInfo struct {
2312-
corelisters.NodeLister
2313-
}
2314-
2315-
// GetNodeInfo returns cached data for the node name.
2316-
func (c *CachedNodeInfo) GetNodeInfo(nodeName string) (*v1.Node, error) {
2317-
node, err := c.Get(nodeName)
2318-
2319-
if apierrors.IsNotFound(err) {
2320-
return nil, err
2321-
}
2322-
2323-
if err != nil {
2324-
return nil, fmt.Errorf("error retrieving node '%v' from cache: %v", nodeName, err)
2325-
}
2326-
2327-
return node, nil
2328-
}

pkg/kubelet/kubelet_getters.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ func (kl *Kubelet) GetNode() (*v1.Node, error) {
228228
if kl.kubeClient == nil {
229229
return kl.initialNode(context.TODO())
230230
}
231-
return kl.nodeInfo.GetNodeInfo(string(kl.nodeName))
231+
return kl.nodeLister.Get(string(kl.nodeName))
232232
}
233233

234234
// getNodeAnyWay() must return a *v1.Node which is required by RunGeneralPredicates().
@@ -238,7 +238,7 @@ func (kl *Kubelet) GetNode() (*v1.Node, error) {
238238
// zero capacity, and the default labels.
239239
func (kl *Kubelet) getNodeAnyWay() (*v1.Node, error) {
240240
if kl.kubeClient != nil {
241-
if n, err := kl.nodeInfo.GetNodeInfo(string(kl.nodeName)); err == nil {
241+
if n, err := kl.nodeLister.Get(string(kl.nodeName)); err == nil {
242242
return n, nil
243243
}
244244
}

pkg/kubelet/kubelet_resources_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
func TestPodResourceLimitsDefaulting(t *testing.T) {
3131
tk := newTestKubelet(t, true)
3232
defer tk.Cleanup()
33-
tk.kubelet.nodeInfo = &testNodeInfo{
33+
tk.kubelet.nodeLister = &testNodeLister{
3434
nodes: []*v1.Node{
3535
{
3636
ObjectMeta: metav1.ObjectMeta{

pkg/kubelet/kubelet_test.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@ import (
3030
v1 "k8s.io/api/core/v1"
3131
"k8s.io/apimachinery/pkg/api/resource"
3232
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
33+
"k8s.io/apimachinery/pkg/labels"
3334
"k8s.io/apimachinery/pkg/types"
3435
"k8s.io/apimachinery/pkg/util/clock"
3536
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
3637
"k8s.io/apimachinery/pkg/util/sets"
3738
"k8s.io/apimachinery/pkg/util/wait"
3839
"k8s.io/client-go/kubernetes/fake"
40+
corelisters "k8s.io/client-go/listers/core/v1"
3941
"k8s.io/client-go/tools/record"
4042
"k8s.io/client-go/util/flowcontrol"
4143
cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
@@ -178,7 +180,7 @@ func newTestKubeletWithImageList(
178180
kubelet.sourcesReady = config.NewSourcesReady(func(_ sets.String) bool { return true })
179181
kubelet.masterServiceNamespace = metav1.NamespaceDefault
180182
kubelet.serviceLister = testServiceLister{}
181-
kubelet.nodeInfo = testNodeInfo{
183+
kubelet.nodeLister = testNodeLister{
182184
nodes: []*v1.Node{
183185
{
184186
ObjectMeta: metav1.ObjectMeta{
@@ -426,17 +428,25 @@ func TestSyncPodsDeletesWhenSourcesAreReady(t *testing.T) {
426428
fakeRuntime.AssertKilledPods([]string{"12345678"})
427429
}
428430

429-
type testNodeInfo struct {
431+
type testNodeLister struct {
430432
nodes []*v1.Node
431433
}
432434

433-
func (ls testNodeInfo) GetNodeInfo(id string) (*v1.Node, error) {
434-
for _, node := range ls.nodes {
435-
if node.Name == id {
435+
func (nl testNodeLister) Get(name string) (*v1.Node, error) {
436+
for _, node := range nl.nodes {
437+
if node.Name == name {
436438
return node, nil
437439
}
438440
}
439-
return nil, fmt.Errorf("Node with name: %s does not exist", id)
441+
return nil, fmt.Errorf("Node with name: %s does not exist", name)
442+
}
443+
444+
func (nl testNodeLister) List(_ labels.Selector) (ret []*v1.Node, err error) {
445+
return nl.nodes, nil
446+
}
447+
448+
func (nl testNodeLister) ListWithPredicate(_ corelisters.NodeConditionPredicate) ([]*v1.Node, error) {
449+
return nl.nodes, nil
440450
}
441451

442452
func checkPodStatus(t *testing.T, kl *Kubelet, pod *v1.Pod, phase v1.PodPhase) {
@@ -451,7 +461,7 @@ func TestHandlePortConflicts(t *testing.T) {
451461
defer testKubelet.Cleanup()
452462
kl := testKubelet.kubelet
453463

454-
kl.nodeInfo = testNodeInfo{nodes: []*v1.Node{
464+
kl.nodeLister = testNodeLister{nodes: []*v1.Node{
455465
{
456466
ObjectMeta: metav1.ObjectMeta{Name: string(kl.nodeName)},
457467
Status: v1.NodeStatus{
@@ -497,7 +507,7 @@ func TestHandleHostNameConflicts(t *testing.T) {
497507
defer testKubelet.Cleanup()
498508
kl := testKubelet.kubelet
499509

500-
kl.nodeInfo = testNodeInfo{nodes: []*v1.Node{
510+
kl.nodeLister = testNodeLister{nodes: []*v1.Node{
501511
{
502512
ObjectMeta: metav1.ObjectMeta{Name: "127.0.0.1"},
503513
Status: v1.NodeStatus{
@@ -549,7 +559,7 @@ func TestHandleNodeSelector(t *testing.T) {
549559
},
550560
},
551561
}
552-
kl.nodeInfo = testNodeInfo{nodes: nodes}
562+
kl.nodeLister = testNodeLister{nodes: nodes}
553563

554564
recorder := record.NewFakeRecorder(20)
555565
nodeRef := &v1.ObjectReference{
@@ -589,7 +599,7 @@ func TestHandleMemExceeded(t *testing.T) {
589599
v1.ResourcePods: *resource.NewQuantity(40, resource.DecimalSI),
590600
}}},
591601
}
592-
kl.nodeInfo = testNodeInfo{nodes: nodes}
602+
kl.nodeLister = testNodeLister{nodes: nodes}
593603

594604
recorder := record.NewFakeRecorder(20)
595605
nodeRef := &v1.ObjectReference{
@@ -650,7 +660,7 @@ func TestHandlePluginResources(t *testing.T) {
650660
v1.ResourcePods: allowedPodQuantity,
651661
}}},
652662
}
653-
kl.nodeInfo = testNodeInfo{nodes: nodes}
663+
kl.nodeLister = testNodeLister{nodes: nodes}
654664

655665
updatePluginResourcesFunc := func(node *schedulernodeinfo.NodeInfo, attrs *lifecycle.PodAdmitAttributes) error {
656666
// Maps from resourceName to the value we use to set node.allocatableResource[resourceName].
@@ -1801,7 +1811,7 @@ func TestHandlePodAdditionsInvokesPodAdmitHandlers(t *testing.T) {
18011811
testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */)
18021812
defer testKubelet.Cleanup()
18031813
kl := testKubelet.kubelet
1804-
kl.nodeInfo = testNodeInfo{nodes: []*v1.Node{
1814+
kl.nodeLister = testNodeLister{nodes: []*v1.Node{
18051815
{
18061816
ObjectMeta: metav1.ObjectMeta{Name: string(kl.nodeName)},
18071817
Status: v1.NodeStatus{

pkg/kubelet/runonce_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func TestRunOnce(t *testing.T) {
7575
rootDirectory: basePath,
7676
recorder: &record.FakeRecorder{},
7777
cadvisor: cadvisor,
78-
nodeInfo: testNodeInfo{},
78+
nodeLister: testNodeLister{},
7979
statusManager: status.NewManager(nil, podManager, &statustest.FakePodDeletionSafetyProvider{}),
8080
podManager: podManager,
8181
os: &containertest.FakeOS{},

0 commit comments

Comments
 (0)