mirror of https://github.com/k3s-io/k3s
Wait apiserver in controller manager startup process
parent
1524d7490a
commit
638411d744
|
@ -55,6 +55,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/healthz"
|
"k8s.io/kubernetes/pkg/healthz"
|
||||||
"k8s.io/kubernetes/pkg/master/ports"
|
"k8s.io/kubernetes/pkg/master/ports"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
|
@ -309,7 +310,13 @@ func (s *CMServer) Run(_ []string) error {
|
||||||
|
|
||||||
resourcequotacontroller.NewResourceQuotaController(kubeClient).Run(s.ResourceQuotaSyncPeriod)
|
resourcequotacontroller.NewResourceQuotaController(kubeClient).Run(s.ResourceQuotaSyncPeriod)
|
||||||
|
|
||||||
versionStrings, err := client.ServerAPIVersions(kubeconfig)
|
// If apiserver is not running we should wait for some time and fail only then. This is particularly
|
||||||
|
// important when we start apiserver and controller manager at the same time.
|
||||||
|
var versionStrings []string
|
||||||
|
err = wait.PollImmediate(time.Second, 10*time.Second, func() (bool, error) {
|
||||||
|
versionStrings, err = client.ServerAPIVersions(kubeconfig)
|
||||||
|
return err == nil, err
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Fatalf("Failed to get api versions from server: %v", err)
|
glog.Fatalf("Failed to get api versions from server: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/registry/service"
|
"k8s.io/kubernetes/pkg/registry/service"
|
||||||
"k8s.io/kubernetes/pkg/registry/service/ipallocator"
|
"k8s.io/kubernetes/pkg/registry/service/ipallocator"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Repair is a controller loop that periodically examines all service ClusterIP allocations
|
// Repair is a controller loop that periodically examines all service ClusterIP allocations
|
||||||
|
@ -84,13 +85,10 @@ func (c *Repair) RunOnce() error {
|
||||||
// important when we start apiserver and etcd at the same time.
|
// important when we start apiserver and etcd at the same time.
|
||||||
var latest *api.RangeAllocation
|
var latest *api.RangeAllocation
|
||||||
var err error
|
var err error
|
||||||
for i := 0; i < 10; i++ {
|
err = wait.PollImmediate(time.Second, 10*time.Second, func() (bool, error) {
|
||||||
if latest, err = c.alloc.Get(); err != nil {
|
latest, err = c.alloc.Get()
|
||||||
time.Sleep(time.Second)
|
return err == nil, err
|
||||||
} else {
|
})
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to refresh the service IP block: %v", err)
|
return fmt.Errorf("unable to refresh the service IP block: %v", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue