etcd client: add keepalive

This commit is contained in:
Ryan Phillips 2017-12-19 10:04:23 -06:00
parent ea2fbd4de4
commit 31ff8c6b9a

View File

@ -17,6 +17,8 @@ limitations under the License.
package factory package factory
import ( import (
"time"
"github.com/coreos/etcd/clientv3" "github.com/coreos/etcd/clientv3"
"github.com/coreos/etcd/pkg/transport" "github.com/coreos/etcd/pkg/transport"
"golang.org/x/net/context" "golang.org/x/net/context"
@ -27,6 +29,13 @@ import (
"k8s.io/apiserver/pkg/storage/value" "k8s.io/apiserver/pkg/storage/value"
) )
// The short keepalive timeout and interval have been chosen to aggressively
// detect a failed etcd server without introducing much overhead.
var (
keepaliveTime = 30 * time.Second
keepaliveTimeout = 10 * time.Second
)
func newETCD3Storage(c storagebackend.Config) (storage.Interface, DestroyFunc, error) { func newETCD3Storage(c storagebackend.Config) (storage.Interface, DestroyFunc, error) {
tlsInfo := transport.TLSInfo{ tlsInfo := transport.TLSInfo{
CertFile: c.CertFile, CertFile: c.CertFile,
@ -43,8 +52,10 @@ func newETCD3Storage(c storagebackend.Config) (storage.Interface, DestroyFunc, e
tlsConfig = nil tlsConfig = nil
} }
cfg := clientv3.Config{ cfg := clientv3.Config{
Endpoints: c.ServerList, DialKeepAliveTime: keepaliveTime,
TLS: tlsConfig, DialKeepAliveTimeout: keepaliveTimeout,
Endpoints: c.ServerList,
TLS: tlsConfig,
} }
client, err := clientv3.New(cfg) client, err := clientv3.New(cfg)
if err != nil { if err != nil {