mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-06 16:06:51 +00:00
fix up service lister
This commit is contained in:
@@ -76,6 +76,7 @@ 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/labels"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/security/apparmor"
|
||||
"k8s.io/kubernetes/pkg/types"
|
||||
@@ -370,7 +371,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
|
||||
dockerExecHandler = &dockertools.NativeExecHandler{}
|
||||
}
|
||||
|
||||
serviceStore := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
||||
serviceStore := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc})
|
||||
if kubeClient != nil {
|
||||
// TODO: cache.NewListWatchFromClient is limited as it takes a client implementation rather
|
||||
// than an interface. There is no way to construct a list+watcher using resource name.
|
||||
@@ -384,7 +385,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
|
||||
}
|
||||
cache.NewReflector(listWatch, &api.Service{}, serviceStore, 0).Run()
|
||||
}
|
||||
serviceLister := &cache.StoreToServiceLister{Store: serviceStore}
|
||||
serviceLister := &cache.StoreToServiceLister{Indexer: serviceStore}
|
||||
|
||||
nodeStore := cache.NewStore(cache.MetaNamespaceKeyFunc)
|
||||
if kubeClient != nil {
|
||||
@@ -751,7 +752,7 @@ func NewMainKubelet(kubeCfg *componentconfig.KubeletConfiguration, kubeDeps *Kub
|
||||
}
|
||||
|
||||
type serviceLister interface {
|
||||
List() (api.ServiceList, error)
|
||||
List(labels.Selector) ([]*api.Service, error)
|
||||
}
|
||||
|
||||
type nodeLister interface {
|
||||
@@ -1421,7 +1422,7 @@ var masterServices = sets.NewString("kubernetes")
|
||||
// pod in namespace ns should see.
|
||||
func (kl *Kubelet) getServiceEnvVarMap(ns string) (map[string]string, error) {
|
||||
var (
|
||||
serviceMap = make(map[string]api.Service)
|
||||
serviceMap = make(map[string]*api.Service)
|
||||
m = make(map[string]string)
|
||||
)
|
||||
|
||||
@@ -1431,15 +1432,16 @@ func (kl *Kubelet) getServiceEnvVarMap(ns string) (map[string]string, error) {
|
||||
// Kubelets without masters (e.g. plain GCE ContainerVM) don't set env vars.
|
||||
return m, nil
|
||||
}
|
||||
services, err := kl.serviceLister.List()
|
||||
services, err := kl.serviceLister.List(labels.Everything())
|
||||
if err != nil {
|
||||
return m, fmt.Errorf("failed to list services when setting up env vars.")
|
||||
}
|
||||
|
||||
// project the services in namespace ns onto the master services
|
||||
for _, service := range services.Items {
|
||||
for i := range services {
|
||||
service := services[i]
|
||||
// ignore services where ClusterIP is "None" or empty
|
||||
if !api.IsServiceIPSet(&service) {
|
||||
if !api.IsServiceIPSet(service) {
|
||||
continue
|
||||
}
|
||||
serviceName := service.Name
|
||||
@@ -1459,12 +1461,13 @@ func (kl *Kubelet) getServiceEnvVarMap(ns string) (map[string]string, error) {
|
||||
}
|
||||
}
|
||||
}
|
||||
services.Items = []api.Service{}
|
||||
for _, service := range serviceMap {
|
||||
services.Items = append(services.Items, service)
|
||||
|
||||
mappedServices := []*api.Service{}
|
||||
for key := range serviceMap {
|
||||
mappedServices = append(mappedServices, serviceMap[key])
|
||||
}
|
||||
|
||||
for _, e := range envvars.FromServices(&services) {
|
||||
for _, e := range envvars.FromServices(mappedServices) {
|
||||
m[e.Name] = e.Value
|
||||
}
|
||||
return m, nil
|
||||
|
||||
Reference in New Issue
Block a user