Skip to content
This repository was archived by the owner on Jul 30, 2021. It is now read-only.

Commit 6928d5e

Browse files
authored
Merge pull request #509 from hongchaodeng/f
SelfHostedEtcd: get etcd service IP from APIServer
2 parents 19e0e42 + 02dce31 commit 6928d5e

File tree

6 files changed

+23
-35
lines changed

6 files changed

+23
-35
lines changed

pkg/asset/asset.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ type Config struct {
7575
APIServiceIP net.IP
7676
DNSServiceIP net.IP
7777
EtcdServiceIP net.IP
78+
EtcdServiceName string
7879
SelfHostKubelet bool
7980
SelfHostedEtcd bool
8081
CloudProvider string

pkg/asset/internal/templates.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,7 @@ spec:
884884
EtcdSvcTemplate = []byte(`apiVersion: v1
885885
kind: Service
886886
metadata:
887-
name: etcd-service
887+
name: {{ .EtcdServiceName }}
888888
namespace: kube-system
889889
spec:
890890
selector:

pkg/asset/k8s.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import (
1212
)
1313

1414
const (
15+
// The name of the k8s service that selects self-hosted etcd pods
16+
EtcdServiceName = "etcd-service"
17+
1518
secretNamespace = "kube-system"
1619
secretAPIServerName = "kube-apiserver"
1720
secretCMName = "kube-controller-manager"
@@ -50,6 +53,7 @@ func newDynamicAssets(conf Config) Assets {
5053
assets = append(assets, mustCreateAssetFromTemplate(AssetPathKubelet, internal.KubeletTemplate, conf))
5154
}
5255
if conf.SelfHostedEtcd {
56+
conf.EtcdServiceName = EtcdServiceName
5357
assets = append(assets,
5458
mustCreateAssetFromTemplate(AssetPathEtcdOperator, internal.EtcdOperatorTemplate, conf),
5559
mustCreateAssetFromTemplate(AssetPathEtcdSvc, internal.EtcdSvcTemplate, conf),

pkg/bootkube/bootkube.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,7 @@ func (b *bootkube) Run() error {
8787

8888
if selfHostedEtcd {
8989
UserOutput("Migrating to self-hosted etcd cluster...\n")
90-
var etcdServiceIP string
91-
etcdServiceIP, err = detectEtcdIP(b.assetDir)
92-
if err != nil {
93-
return err
94-
}
95-
if err = etcdutil.Migrate(kubeConfig, etcdServiceIP); err != nil {
90+
if err = etcdutil.Migrate(kubeConfig); err != nil {
9691
return err
9792
}
9893
}

pkg/bootkube/parse.go

Lines changed: 0 additions & 26 deletions
This file was deleted.

pkg/util/etcdutil/migrate.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88
"strings"
99
"time"
1010

11+
"github.com/kubernetes-incubator/bootkube/pkg/asset"
12+
1113
"github.com/coreos/etcd-operator/pkg/spec"
1214
"github.com/coreos/etcd/clientv3"
1315
"github.com/golang/glog"
@@ -29,7 +31,7 @@ var (
2931
waitBootEtcdRemovedTime = 300 * time.Second
3032
)
3133

32-
func Migrate(kubeConfig clientcmd.ClientConfig, etcdServiceIP string) error {
34+
func Migrate(kubeConfig clientcmd.ClientConfig) error {
3335
config, err := kubeConfig.ClientConfig()
3436
if err != nil {
3537
return fmt.Errorf("failed to create kube client config: %v", err)
@@ -50,7 +52,11 @@ func Migrate(kubeConfig clientcmd.ClientConfig, etcdServiceIP string) error {
5052
if err != nil {
5153
return err
5254
}
53-
glog.Infof("boot-etcd pod IP is: %s", ip)
55+
etcdServiceIP, err := getServiceIP(kubecli, api.NamespaceSystem, asset.EtcdServiceName)
56+
if err != nil {
57+
return err
58+
}
59+
glog.Infof("boot-etcd pod IP is: %s, etcd-service IP is %s", ip, etcdServiceIP)
5460

5561
if err := createMigratedEtcdCluster(restClient, ip); err != nil {
5662
return fmt.Errorf("failed to create etcd cluster for migration: %v", err)
@@ -178,6 +184,14 @@ func waitEtcdClusterRunning(restclient restclient.Interface) error {
178184
return err
179185
}
180186

187+
func getServiceIP(kubecli kubernetes.Interface, ns, svcName string) (string, error) {
188+
svc, err := kubecli.CoreV1().Services(ns).Get(svcName, v1.GetOptions{})
189+
if err != nil {
190+
return "", err
191+
}
192+
return svc.Spec.ClusterIP, nil
193+
}
194+
181195
func waitBootEtcdRemoved(etcdServiceIP string) error {
182196
err := wait.Poll(10*time.Second, waitBootEtcdRemovedTime, func() (bool, error) {
183197
cfg := clientv3.Config{

0 commit comments

Comments
 (0)