mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
Merge pull request #40770 from apilloud/clientset_interface
Automatic merge from submit-queue (batch tested with PRs 41103, 41042, 41097, 40946, 40770) Use Clientset interface in KubeletDeps **What this PR does / why we need it**: This replaces the Clientset struct with the equivalent interface for the KubeClient injected via KubeletDeps. This is useful for testing and for accessing the Node and Pod status event stream without an API server. **Special notes for your reviewer**: Follow up to #4907 **Release note**: `NONE`
This commit is contained in:
commit
843e6d1cc3
@ -363,7 +363,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.KubeletDeps) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if kubeDeps == nil {
|
if kubeDeps == nil {
|
||||||
var kubeClient *clientset.Clientset
|
var kubeClient clientset.Interface
|
||||||
var eventClient v1core.EventsGetter
|
var eventClient v1core.EventsGetter
|
||||||
var externalKubeClient clientgoclientset.Interface
|
var externalKubeClient clientgoclientset.Interface
|
||||||
var cloud cloudprovider.Interface
|
var cloud cloudprovider.Interface
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewSourceApiserver creates a config source that watches and pulls from the apiserver.
|
// NewSourceApiserver creates a config source that watches and pulls from the apiserver.
|
||||||
func NewSourceApiserver(c *clientset.Clientset, nodeName types.NodeName, updates chan<- interface{}) {
|
func NewSourceApiserver(c clientset.Interface, nodeName types.NodeName, updates chan<- interface{}) {
|
||||||
lw := cache.NewListWatchFromClient(c.Core().RESTClient(), "pods", metav1.NamespaceAll, fields.OneTermEqualSelector(api.PodHostField, string(nodeName)))
|
lw := cache.NewListWatchFromClient(c.Core().RESTClient(), "pods", metav1.NamespaceAll, fields.OneTermEqualSelector(api.PodHostField, string(nodeName)))
|
||||||
newSourceApiserverFromLW(lw, updates)
|
newSourceApiserverFromLW(lw, updates)
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,7 @@ type KubeletDeps struct {
|
|||||||
ContainerManager cm.ContainerManager
|
ContainerManager cm.ContainerManager
|
||||||
DockerClient dockertools.DockerInterface
|
DockerClient dockertools.DockerInterface
|
||||||
EventClient v1core.EventsGetter
|
EventClient v1core.EventsGetter
|
||||||
KubeClient *clientset.Clientset
|
KubeClient clientset.Interface
|
||||||
ExternalKubeClient clientgoclientset.Interface
|
ExternalKubeClient clientgoclientset.Interface
|
||||||
Mounter mount.Interface
|
Mounter mount.Interface
|
||||||
NetworkPlugins []network.NetworkPlugin
|
NetworkPlugins []network.NetworkPlugin
|
||||||
@ -318,15 +318,6 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
|
|||||||
glog.V(2).Infof("cloud provider determined current node name to be %s", nodeName)
|
glog.V(2).Infof("cloud provider determined current node name to be %s", nodeName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: KubeletDeps.KubeClient should be a client interface, but client interface misses certain methods
|
|
||||||
// used by kubelet. Since NewMainKubelet expects a client interface, we need to make sure we are not passing
|
|
||||||
// a nil pointer to it when what we really want is a nil interface.
|
|
||||||
var kubeClient clientset.Interface
|
|
||||||
if kubeDeps.KubeClient != nil {
|
|
||||||
kubeClient = kubeDeps.KubeClient
|
|
||||||
// TODO: remove this when we've refactored kubelet to only use clientset.
|
|
||||||
}
|
|
||||||
|
|
||||||
if kubeDeps.PodConfig == nil {
|
if kubeDeps.PodConfig == nil {
|
||||||
var err error
|
var err error
|
||||||
kubeDeps.PodConfig, err = makePodSourceConfig(kubeCfg, kubeDeps, nodeName)
|
kubeDeps.PodConfig, err = makePodSourceConfig(kubeCfg, kubeDeps, nodeName)
|
||||||
@ -384,16 +375,16 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
|
|||||||
}
|
}
|
||||||
|
|
||||||
serviceStore := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
|
serviceStore := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
|
||||||
if kubeClient != nil {
|
if kubeDeps.KubeClient != nil {
|
||||||
serviceLW := cache.NewListWatchFromClient(kubeClient.Core().RESTClient(), "services", metav1.NamespaceAll, fields.Everything())
|
serviceLW := cache.NewListWatchFromClient(kubeDeps.KubeClient.Core().RESTClient(), "services", metav1.NamespaceAll, fields.Everything())
|
||||||
cache.NewReflector(serviceLW, &v1.Service{}, serviceStore, 0).Run()
|
cache.NewReflector(serviceLW, &v1.Service{}, serviceStore, 0).Run()
|
||||||
}
|
}
|
||||||
serviceLister := &listers.StoreToServiceLister{Indexer: serviceStore}
|
serviceLister := &listers.StoreToServiceLister{Indexer: serviceStore}
|
||||||
|
|
||||||
nodeStore := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
nodeStore := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
||||||
if kubeClient != nil {
|
if kubeDeps.KubeClient != nil {
|
||||||
fieldSelector := fields.Set{api.ObjectNameField: string(nodeName)}.AsSelector()
|
fieldSelector := fields.Set{api.ObjectNameField: string(nodeName)}.AsSelector()
|
||||||
nodeLW := cache.NewListWatchFromClient(kubeClient.Core().RESTClient(), "nodes", metav1.NamespaceAll, fieldSelector)
|
nodeLW := cache.NewListWatchFromClient(kubeDeps.KubeClient.Core().RESTClient(), "nodes", metav1.NamespaceAll, fieldSelector)
|
||||||
cache.NewReflector(nodeLW, &v1.Node{}, nodeStore, 0).Run()
|
cache.NewReflector(nodeLW, &v1.Node{}, nodeStore, 0).Run()
|
||||||
}
|
}
|
||||||
nodeLister := &listers.StoreToNodeLister{Store: nodeStore}
|
nodeLister := &listers.StoreToNodeLister{Store: nodeStore}
|
||||||
@ -415,7 +406,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
|
|||||||
}
|
}
|
||||||
containerRefManager := kubecontainer.NewRefManager()
|
containerRefManager := kubecontainer.NewRefManager()
|
||||||
|
|
||||||
secretManager, err := secret.NewCachingSecretManager(kubeClient)
|
secretManager, err := secret.NewCachingSecretManager(kubeDeps.KubeClient)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to initialize secret manager: %v", err)
|
return nil, fmt.Errorf("failed to initialize secret manager: %v", err)
|
||||||
}
|
}
|
||||||
@ -426,7 +417,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
|
|||||||
hostname: hostname,
|
hostname: hostname,
|
||||||
nodeName: nodeName,
|
nodeName: nodeName,
|
||||||
dockerClient: kubeDeps.DockerClient,
|
dockerClient: kubeDeps.DockerClient,
|
||||||
kubeClient: kubeClient,
|
kubeClient: kubeDeps.KubeClient,
|
||||||
rootDirectory: kubeCfg.RootDirectory,
|
rootDirectory: kubeCfg.RootDirectory,
|
||||||
resyncInterval: kubeCfg.SyncFrequency.Duration,
|
resyncInterval: kubeCfg.SyncFrequency.Duration,
|
||||||
containerRefManager: containerRefManager,
|
containerRefManager: containerRefManager,
|
||||||
@ -699,7 +690,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
|
|||||||
}
|
}
|
||||||
klet.imageManager = imageManager
|
klet.imageManager = imageManager
|
||||||
|
|
||||||
klet.statusManager = status.NewManager(kubeClient, klet.podManager)
|
klet.statusManager = status.NewManager(klet.kubeClient, klet.podManager)
|
||||||
|
|
||||||
klet.probeManager = prober.NewManager(
|
klet.probeManager = prober.NewManager(
|
||||||
klet.statusManager,
|
klet.statusManager,
|
||||||
|
Loading…
Reference in New Issue
Block a user