diff --git a/pkg/controller/pod.go b/pkg/controller/pod.go index 99476de9db3..d917052a34e 100644 --- a/pkg/controller/pod.go +++ b/pkg/controller/pod.go @@ -771,8 +771,16 @@ func (c *Controller) reconcileRouteSubnets(cachedPod, pod *v1.Pod, needRoutePodN } nextHop := cm.Data["external-gw-addr"] if nextHop == "" { - klog.Errorf("no available gateway nic address") - return fmt.Errorf("no available gateway nic address") + externalSubnet, err := c.subnetsLister.Get(c.config.ExternalGatewaySwitch) + if err != nil { + klog.Errorf("failed to get subnet %s, %v", c.config.ExternalGatewaySwitch, err) + return err + } + nextHop = externalSubnet.Spec.Gateway + if nextHop == "" { + klog.Errorf("no available gateway address") + return fmt.Errorf("no available gateway address") + } } if strings.Contains(nextHop, "/") { nextHop = strings.Split(nextHop, "/")[0] diff --git a/pkg/controller/vpc.go b/pkg/controller/vpc.go index 3640d4dd7f9..f6155aa6ffc 100644 --- a/pkg/controller/vpc.go +++ b/pkg/controller/vpc.go @@ -323,8 +323,16 @@ func (c *Controller) handleAddOrUpdateVpc(key string) error { if err == nil { nextHop := cm.Data["external-gw-addr"] if nextHop == "" { - klog.Errorf("no available gateway nic address") - return fmt.Errorf("no available gateway nic address") + externalSubnet, err := c.subnetsLister.Get(c.config.ExternalGatewaySwitch) + if err != nil { + klog.Errorf("failed to get subnet %s, %v", c.config.ExternalGatewaySwitch, err) + return err + } + nextHop = externalSubnet.Spec.Gateway + if nextHop == "" { + klog.Errorf("no available gateway address") + return fmt.Errorf("no available gateway address") + } } if strings.Contains(nextHop, "/") { nextHop = strings.Split(nextHop, "/")[0]