Skip to content

Commit

Permalink
perf: filter pod in informer list-watch and disable resync
Browse files Browse the repository at this point in the history
  • Loading branch information
oilbeater committed Nov 26, 2019
1 parent 623661e commit d0479e9
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
9 changes: 7 additions & 2 deletions cmd/daemon/cniserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"fmt"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"net/http"
_ "net/http/pprof"
"time"
Expand Down Expand Up @@ -34,8 +35,12 @@ func main() {
}

stopCh := signals.SetupSignalHandler()
kubeInformerFactory := kubeinformers.NewSharedInformerFactory(config.KubeClient, time.Second*30)
kubeovnInformerFactory := kubeovninformer.NewSharedInformerFactoryWithOptions(config.KubeOvnClient, time.Second*30)
kubeInformerFactory := kubeinformers.NewSharedInformerFactoryWithOptions(config.KubeClient, 0,
kubeinformers.WithTweakListOptions(func(listOption *v1.ListOptions){
listOption.FieldSelector = fmt.Sprintf("spec.nodeName=%s", config.NodeName)
listOption.AllowWatchBookmarks = true
}))
kubeovnInformerFactory := kubeovninformer.NewSharedInformerFactoryWithOptions(config.KubeOvnClient, 0)
ctl, err := daemon.NewController(config, kubeInformerFactory, kubeovnInformerFactory)
if err != nil {
klog.Fatalf("create controller failed %v", err)
Expand Down
13 changes: 10 additions & 3 deletions pkg/controller/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
kubeovnlister "github.com/alauda/kube-ovn/pkg/client/listers/kube-ovn/v1"
"github.com/alauda/kube-ovn/pkg/ovs"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/informers"
Expand Down Expand Up @@ -103,8 +104,14 @@ func NewController(config *Configuration) *Controller {
eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: config.KubeClient.CoreV1().Events("")})
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: controllerAgentName})

informerFactory := kubeinformers.NewSharedInformerFactory(config.KubeClient, time.Second*30)
kubeovnInformerFactory := kubeovninformer.NewSharedInformerFactoryWithOptions(config.KubeOvnClient, time.Second*30)
informerFactory := kubeinformers.NewSharedInformerFactoryWithOptions(config.KubeClient, 0,
kubeinformers.WithTweakListOptions(func(listOption *metav1.ListOptions) {
listOption.AllowWatchBookmarks = true
}))
kubeovnInformerFactory := kubeovninformer.NewSharedInformerFactoryWithOptions(config.KubeOvnClient, 0,
kubeovninformer.WithTweakListOptions(func(listOption *metav1.ListOptions) {
listOption.AllowWatchBookmarks = true
}))

subnetInformer := kubeovnInformerFactory.Kubeovn().V1().Subnets()
ipInformer := kubeovnInformerFactory.Kubeovn().V1().IPs()
Expand Down Expand Up @@ -264,7 +271,7 @@ func (c *Controller) Run(stopCh <-chan struct{}) error {
if c.isLeader() {
break
}
time.Sleep(1 * time.Second)
time.Sleep(5 * time.Second)
}

if err := InitClusterRouter(c.config); err != nil {
Expand Down
4 changes: 1 addition & 3 deletions pkg/daemon/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -254,9 +254,7 @@ func (c *Controller) reconcileRouters() error {
func (c *Controller) enqueuePod(old, new interface{}) {
oldPod := old.(*v1.Pod)
newPod := new.(*v1.Pod)
if newPod.Spec.NodeName != c.config.NodeName {
return
}

if oldPod.Annotations[util.IngressRateAnnotation] != newPod.Annotations[util.IngressRateAnnotation] ||
oldPod.Annotations[util.EgressRateAnnotation] != newPod.Annotations[util.EgressRateAnnotation] {
var key string
Expand Down

0 comments on commit d0479e9

Please sign in to comment.