mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	change kubelte nodeInfo to nodeLister
This commit is contained in:
		@@ -95,7 +95,6 @@ go_library(
 | 
			
		||||
        "//pkg/kubelet/util/queue:go_default_library",
 | 
			
		||||
        "//pkg/kubelet/util/sliceutils:go_default_library",
 | 
			
		||||
        "//pkg/kubelet/volumemanager:go_default_library",
 | 
			
		||||
        "//pkg/scheduler/algorithm/predicates:go_default_library",
 | 
			
		||||
        "//pkg/scheduler/api:go_default_library",
 | 
			
		||||
        "//pkg/security/apparmor:go_default_library",
 | 
			
		||||
        "//pkg/security/podsecuritypolicy/sysctl:go_default_library",
 | 
			
		||||
@@ -240,6 +239,7 @@ go_test(
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/listers/core/v1:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/rest:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/testing:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/record:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,6 @@ import (
 | 
			
		||||
 | 
			
		||||
	cadvisorapi "github.com/google/cadvisor/info/v1"
 | 
			
		||||
	v1 "k8s.io/api/core/v1"
 | 
			
		||||
	apierrors "k8s.io/apimachinery/pkg/api/errors"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/fields"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
@@ -106,7 +105,6 @@ import (
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubelet/util/queue"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubelet/util/sliceutils"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/kubelet/volumemanager"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/security/apparmor"
 | 
			
		||||
	sysctlwhitelist "k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl"
 | 
			
		||||
	utilipt "k8s.io/kubernetes/pkg/util/iptables"
 | 
			
		||||
@@ -458,7 +456,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
 | 
			
		||||
		r := cache.NewReflector(nodeLW, &v1.Node{}, nodeIndexer, 0)
 | 
			
		||||
		go r.Run(wait.NeverStop)
 | 
			
		||||
	}
 | 
			
		||||
	nodeInfo := &CachedNodeInfo{NodeLister: corelisters.NewNodeLister(nodeIndexer)}
 | 
			
		||||
	nodeLister := corelisters.NewNodeLister(nodeIndexer)
 | 
			
		||||
 | 
			
		||||
	// TODO: get the real node object of ourself,
 | 
			
		||||
	// and use the real node name and UID.
 | 
			
		||||
@@ -506,7 +504,7 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration,
 | 
			
		||||
		registerSchedulable:                     registerSchedulable,
 | 
			
		||||
		dnsConfigurer:                           dns.NewConfigurer(kubeDeps.Recorder, nodeRef, parsedNodeIP, clusterDNS, kubeCfg.ClusterDomain, kubeCfg.ResolverConfig),
 | 
			
		||||
		serviceLister:                           serviceLister,
 | 
			
		||||
		nodeInfo:                                nodeInfo,
 | 
			
		||||
		nodeLister:                              nodeLister,
 | 
			
		||||
		masterServiceNamespace:                  masterServiceNamespace,
 | 
			
		||||
		streamingConnectionIdleTimeout:          kubeCfg.StreamingConnectionIdleTimeout.Duration,
 | 
			
		||||
		recorder:                                kubeDeps.Recorder,
 | 
			
		||||
@@ -959,8 +957,8 @@ type Kubelet struct {
 | 
			
		||||
	masterServiceNamespace string
 | 
			
		||||
	// serviceLister knows how to list services
 | 
			
		||||
	serviceLister serviceLister
 | 
			
		||||
	// nodeInfo knows how to get information about the node for this kubelet.
 | 
			
		||||
	nodeInfo predicates.NodeInfo
 | 
			
		||||
	// nodeLister knows how to list nodes
 | 
			
		||||
	nodeLister corelisters.NodeLister
 | 
			
		||||
 | 
			
		||||
	// a list of node labels to register
 | 
			
		||||
	nodeLabels map[string]string
 | 
			
		||||
@@ -2306,23 +2304,3 @@ func getStreamingConfig(kubeCfg *kubeletconfiginternal.KubeletConfiguration, kub
 | 
			
		||||
	}
 | 
			
		||||
	return config
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CachedNodeInfo implements NodeInfo
 | 
			
		||||
type CachedNodeInfo struct {
 | 
			
		||||
	corelisters.NodeLister
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetNodeInfo returns cached data for the node name.
 | 
			
		||||
func (c *CachedNodeInfo) GetNodeInfo(nodeName string) (*v1.Node, error) {
 | 
			
		||||
	node, err := c.Get(nodeName)
 | 
			
		||||
 | 
			
		||||
	if apierrors.IsNotFound(err) {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, fmt.Errorf("error retrieving node '%v' from cache: %v", nodeName, err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return node, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -227,7 +227,7 @@ func (kl *Kubelet) GetNode() (*v1.Node, error) {
 | 
			
		||||
	if kl.kubeClient == nil {
 | 
			
		||||
		return kl.initialNode()
 | 
			
		||||
	}
 | 
			
		||||
	return kl.nodeInfo.GetNodeInfo(string(kl.nodeName))
 | 
			
		||||
	return kl.nodeLister.Get(string(kl.nodeName))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// getNodeAnyWay() must return a *v1.Node which is required by RunGeneralPredicates().
 | 
			
		||||
@@ -237,7 +237,7 @@ func (kl *Kubelet) GetNode() (*v1.Node, error) {
 | 
			
		||||
// zero capacity, and the default labels.
 | 
			
		||||
func (kl *Kubelet) getNodeAnyWay() (*v1.Node, error) {
 | 
			
		||||
	if kl.kubeClient != nil {
 | 
			
		||||
		if n, err := kl.nodeInfo.GetNodeInfo(string(kl.nodeName)); err == nil {
 | 
			
		||||
		if n, err := kl.nodeLister.Get(string(kl.nodeName)); err == nil {
 | 
			
		||||
			return n, nil
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ import (
 | 
			
		||||
func TestPodResourceLimitsDefaulting(t *testing.T) {
 | 
			
		||||
	tk := newTestKubelet(t, true)
 | 
			
		||||
	defer tk.Cleanup()
 | 
			
		||||
	tk.kubelet.nodeInfo = &testNodeInfo{
 | 
			
		||||
	tk.kubelet.nodeLister = &testNodeLister{
 | 
			
		||||
		nodes: []*v1.Node{
 | 
			
		||||
			{
 | 
			
		||||
				ObjectMeta: metav1.ObjectMeta{
 | 
			
		||||
 
 | 
			
		||||
@@ -30,12 +30,14 @@ import (
 | 
			
		||||
	v1 "k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/api/resource"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/labels"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/types"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/clock"
 | 
			
		||||
	utilruntime "k8s.io/apimachinery/pkg/util/runtime"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
			
		||||
	"k8s.io/client-go/kubernetes/fake"
 | 
			
		||||
	corelisters "k8s.io/client-go/listers/core/v1"
 | 
			
		||||
	"k8s.io/client-go/tools/record"
 | 
			
		||||
	"k8s.io/client-go/util/flowcontrol"
 | 
			
		||||
	cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing"
 | 
			
		||||
@@ -178,7 +180,7 @@ func newTestKubeletWithImageList(
 | 
			
		||||
	kubelet.sourcesReady = config.NewSourcesReady(func(_ sets.String) bool { return true })
 | 
			
		||||
	kubelet.masterServiceNamespace = metav1.NamespaceDefault
 | 
			
		||||
	kubelet.serviceLister = testServiceLister{}
 | 
			
		||||
	kubelet.nodeInfo = testNodeInfo{
 | 
			
		||||
	kubelet.nodeLister = testNodeLister{
 | 
			
		||||
		nodes: []*v1.Node{
 | 
			
		||||
			{
 | 
			
		||||
				ObjectMeta: metav1.ObjectMeta{
 | 
			
		||||
@@ -426,17 +428,25 @@ func TestSyncPodsDeletesWhenSourcesAreReady(t *testing.T) {
 | 
			
		||||
	fakeRuntime.AssertKilledPods([]string{"12345678"})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type testNodeInfo struct {
 | 
			
		||||
type testNodeLister struct {
 | 
			
		||||
	nodes []*v1.Node
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ls testNodeInfo) GetNodeInfo(id string) (*v1.Node, error) {
 | 
			
		||||
	for _, node := range ls.nodes {
 | 
			
		||||
		if node.Name == id {
 | 
			
		||||
func (nl testNodeLister) Get(name string) (*v1.Node, error) {
 | 
			
		||||
	for _, node := range nl.nodes {
 | 
			
		||||
		if node.Name == name {
 | 
			
		||||
			return node, nil
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return nil, fmt.Errorf("Node with name: %s does not exist", id)
 | 
			
		||||
	return nil, fmt.Errorf("Node with name: %s does not exist", name)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (nl testNodeLister) List(_ labels.Selector) (ret []*v1.Node, err error) {
 | 
			
		||||
	return nl.nodes, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (nl testNodeLister) ListWithPredicate(_ corelisters.NodeConditionPredicate) ([]*v1.Node, error) {
 | 
			
		||||
	return nl.nodes, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func checkPodStatus(t *testing.T, kl *Kubelet, pod *v1.Pod, phase v1.PodPhase) {
 | 
			
		||||
@@ -451,7 +461,7 @@ func TestHandlePortConflicts(t *testing.T) {
 | 
			
		||||
	defer testKubelet.Cleanup()
 | 
			
		||||
	kl := testKubelet.kubelet
 | 
			
		||||
 | 
			
		||||
	kl.nodeInfo = testNodeInfo{nodes: []*v1.Node{
 | 
			
		||||
	kl.nodeLister = testNodeLister{nodes: []*v1.Node{
 | 
			
		||||
		{
 | 
			
		||||
			ObjectMeta: metav1.ObjectMeta{Name: string(kl.nodeName)},
 | 
			
		||||
			Status: v1.NodeStatus{
 | 
			
		||||
@@ -497,7 +507,7 @@ func TestHandleHostNameConflicts(t *testing.T) {
 | 
			
		||||
	defer testKubelet.Cleanup()
 | 
			
		||||
	kl := testKubelet.kubelet
 | 
			
		||||
 | 
			
		||||
	kl.nodeInfo = testNodeInfo{nodes: []*v1.Node{
 | 
			
		||||
	kl.nodeLister = testNodeLister{nodes: []*v1.Node{
 | 
			
		||||
		{
 | 
			
		||||
			ObjectMeta: metav1.ObjectMeta{Name: "127.0.0.1"},
 | 
			
		||||
			Status: v1.NodeStatus{
 | 
			
		||||
@@ -549,7 +559,7 @@ func TestHandleNodeSelector(t *testing.T) {
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	kl.nodeInfo = testNodeInfo{nodes: nodes}
 | 
			
		||||
	kl.nodeLister = testNodeLister{nodes: nodes}
 | 
			
		||||
 | 
			
		||||
	recorder := record.NewFakeRecorder(20)
 | 
			
		||||
	nodeRef := &v1.ObjectReference{
 | 
			
		||||
@@ -589,7 +599,7 @@ func TestHandleMemExceeded(t *testing.T) {
 | 
			
		||||
				v1.ResourcePods:   *resource.NewQuantity(40, resource.DecimalSI),
 | 
			
		||||
			}}},
 | 
			
		||||
	}
 | 
			
		||||
	kl.nodeInfo = testNodeInfo{nodes: nodes}
 | 
			
		||||
	kl.nodeLister = testNodeLister{nodes: nodes}
 | 
			
		||||
 | 
			
		||||
	recorder := record.NewFakeRecorder(20)
 | 
			
		||||
	nodeRef := &v1.ObjectReference{
 | 
			
		||||
@@ -650,7 +660,7 @@ func TestHandlePluginResources(t *testing.T) {
 | 
			
		||||
				v1.ResourcePods:  allowedPodQuantity,
 | 
			
		||||
			}}},
 | 
			
		||||
	}
 | 
			
		||||
	kl.nodeInfo = testNodeInfo{nodes: nodes}
 | 
			
		||||
	kl.nodeLister = testNodeLister{nodes: nodes}
 | 
			
		||||
 | 
			
		||||
	updatePluginResourcesFunc := func(node *schedulernodeinfo.NodeInfo, attrs *lifecycle.PodAdmitAttributes) error {
 | 
			
		||||
		// Maps from resourceName to the value we use to set node.allocatableResource[resourceName].
 | 
			
		||||
@@ -1801,7 +1811,7 @@ func TestHandlePodAdditionsInvokesPodAdmitHandlers(t *testing.T) {
 | 
			
		||||
	testKubelet := newTestKubelet(t, false /* controllerAttachDetachEnabled */)
 | 
			
		||||
	defer testKubelet.Cleanup()
 | 
			
		||||
	kl := testKubelet.kubelet
 | 
			
		||||
	kl.nodeInfo = testNodeInfo{nodes: []*v1.Node{
 | 
			
		||||
	kl.nodeLister = testNodeLister{nodes: []*v1.Node{
 | 
			
		||||
		{
 | 
			
		||||
			ObjectMeta: metav1.ObjectMeta{Name: string(kl.nodeName)},
 | 
			
		||||
			Status: v1.NodeStatus{
 | 
			
		||||
 
 | 
			
		||||
@@ -75,7 +75,7 @@ func TestRunOnce(t *testing.T) {
 | 
			
		||||
		rootDirectory:    basePath,
 | 
			
		||||
		recorder:         &record.FakeRecorder{},
 | 
			
		||||
		cadvisor:         cadvisor,
 | 
			
		||||
		nodeInfo:         testNodeInfo{},
 | 
			
		||||
		nodeLister:       testNodeLister{},
 | 
			
		||||
		statusManager:    status.NewManager(nil, podManager, &statustest.FakePodDeletionSafetyProvider{}),
 | 
			
		||||
		podManager:       podManager,
 | 
			
		||||
		os:               &containertest.FakeOS{},
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user