The default port is used when there is no port number for k8s (#2598)

* k8s 没有端口号时使用默认端口

* Modify the not port test
This commit is contained in:
bigrocs
2022-11-27 09:00:11 +08:00
committed by GitHub
parent b1c3c21c81
commit 90828a0d4a
3 changed files with 29 additions and 17 deletions

View File

@@ -40,6 +40,14 @@ func (b *kubeBuilder) Build(target resolver.Target, cc resolver.ClientConn,
return nil, err
}
if svc.Port == 0 {
endpoints, err := cs.CoreV1().Endpoints(svc.Namespace).Get(context.Background(), svc.Name, v1.GetOptions{})
if err != nil {
return nil, err
}
svc.Port = int(endpoints.Subsets[0].Ports[0].Port)
}
handler := kube.NewEventHandler(func(endpoints []string) {
var addrs []resolver.Address
for _, val := range subset(endpoints, subsetSize) {
@@ -64,12 +72,10 @@ func (b *kubeBuilder) Build(target resolver.Target, cc resolver.ClientConn,
threading.GoSafe(func() {
inf.Start(proc.Done())
})
endpoints, err := cs.CoreV1().Endpoints(svc.Namespace).Get(context.Background(), svc.Name, v1.GetOptions{})
if err != nil {
return nil, err
}
handler.Update(endpoints)
return &nopResolver{cc: cc}, nil