Skip to content

Commit

Permalink
fix: add err log (#3572)
Browse files Browse the repository at this point in the history
* fix: add err log

* fix: gw chassis creation


---------

Signed-off-by: bobz965 <zhangbingbing2_yewu@cmss.chinamobile.com>
  • Loading branch information
bobz965 committed Dec 25, 2023
1 parent ad3f674 commit 958aab9
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 46 deletions.
2 changes: 1 addition & 1 deletion cmd/daemon/cniserver.go
Expand Up @@ -49,7 +49,7 @@ func CmdMain() {
util.LogFatalAndExit(err, "failed to initialize config")
}

if err := Retry(util.ChasRetryTime, util.ChasRetryIntev, initChassisAnno, config); err != nil {
if err := Retry(util.ChassisRetryMaxTimes, util.ChassisCniDaemonRetryInterval, initChassisAnno, config); err != nil {
util.LogFatalAndExit(err, "failed to initialize ovn chassis annotation")
}

Expand Down
43 changes: 23 additions & 20 deletions pkg/controller/external_gw.go
Expand Up @@ -92,13 +92,14 @@ func (c *Controller) removeExternalGateway() error {
if len(no.Labels) == 0 {
op = "add"
}
no.Labels[util.ExGatewayLabel] = "false"
raw, _ := json.Marshal(no.Labels)
patchPayload := fmt.Sprintf(patchPayloadTemplate, op, raw)
_, err = c.config.KubeClient.CoreV1().Nodes().Patch(context.Background(), no.Name, types.JSONPatchType, []byte(patchPayload), metav1.PatchOptions{}, "")
if err != nil {
klog.Errorf("patch external gw node %s failed %v", no.Name, err)
return err
if no.Labels[util.ExGatewayLabel] != "false" {
no.Labels[util.ExGatewayLabel] = "false"
raw, _ := json.Marshal(no.Labels)
patchPayload := fmt.Sprintf(patchPayloadTemplate, op, raw)
if _, err = c.config.KubeClient.CoreV1().Nodes().Patch(context.Background(), no.Name, types.JSONPatchType, []byte(patchPayload), metav1.PatchOptions{}, ""); err != nil {
klog.Errorf("patch external gw node %s failed %v", no.Name, err)
return err
}
}
}

Expand Down Expand Up @@ -216,7 +217,7 @@ func (c *Controller) getGatewayChassis(config map[string]string) ([]string, erro
nodes, err := c.nodesLister.List(labels.Everything())
if err != nil {
klog.Errorf("failed to list nodes, %v", err)
return chassises, err
return nil, err
}
gwNodes := make([]string, 0, len(nodes))
for _, node := range nodes {
Expand All @@ -238,7 +239,7 @@ func (c *Controller) getGatewayChassis(config map[string]string) ([]string, erro
cachedNode, err := c.nodesLister.Get(gw)
if err != nil {
klog.Errorf("failed to get gw node %s, %v", gw, err)
return chassises, err
return nil, err
}
node := cachedNode.DeepCopy()
patchPayloadTemplate := `[{
Expand All @@ -250,31 +251,33 @@ func (c *Controller) getGatewayChassis(config map[string]string) ([]string, erro
if len(node.Labels) == 0 {
op = "add"
}
node.Labels[util.ExGatewayLabel] = "true"
raw, _ := json.Marshal(node.Labels)
patchPayload := fmt.Sprintf(patchPayloadTemplate, op, raw)
_, err = c.config.KubeClient.CoreV1().Nodes().Patch(context.Background(), gw, types.JSONPatchType, []byte(patchPayload), metav1.PatchOptions{}, "")
if err != nil {
klog.Errorf("patch external gw node %s failed %v", gw, err)
return chassises, err
if node.Labels[util.ExGatewayLabel] != "true" {
node.Labels[util.ExGatewayLabel] = "true"
raw, _ := json.Marshal(node.Labels)
patchPayload := fmt.Sprintf(patchPayloadTemplate, op, raw)
if _, err = c.config.KubeClient.CoreV1().Nodes().Patch(context.Background(), gw, types.JSONPatchType, []byte(patchPayload), metav1.PatchOptions{}, ""); err != nil {
klog.Errorf("patch external gw node %s failed %v", gw, err)
return nil, err
}
}
annoChassisName := node.Annotations[util.ChassisAnnotation]
if annoChassisName == "" {
err := fmt.Errorf("node %s has no chassis annotation, kube-ovn-cni not ready", gw)
klog.Error(err)
return chassises, err
return nil, err
}
klog.Infof("get node %s chassis: %s", gw, annoChassisName)
chassis, err := c.OVNSbClient.GetChassis(annoChassisName, false)
if err != nil {
klog.Errorf("failed to get node %s chassis: %s, %v", node.Name, annoChassisName, err)
return chassises, err
return nil, err
}
chassises = append(chassises, chassis.Name)
}
if len(chassises) == 0 {
klog.Error("no available external gw")
return chassises, fmt.Errorf("no available external gw")
err := fmt.Errorf("no available external gw")
klog.Error(err)
return nil, err
}
return chassises, nil
}
Expand Down
17 changes: 15 additions & 2 deletions pkg/controller/node.go
Expand Up @@ -195,6 +195,7 @@ func (c *Controller) handleAddNode(key string) error {
if k8serrors.IsNotFound(err) {
return nil
}
klog.Errorf("failed to get node %s: %v", key, err)
return err
}
node := cachedNode.DeepCopy()
Expand Down Expand Up @@ -252,6 +253,7 @@ func (c *Controller) handleAddNode(key string) error {

ipStr := util.GetStringIP(v4IP, v6IP)
if err := c.OVNNbClient.CreateBareLogicalSwitchPort(c.config.NodeSwitch, portName, ipStr, mac); err != nil {
klog.Errorf("failed to create logical switch port %s: %v", portName, err)
return err
}

Expand Down Expand Up @@ -290,11 +292,13 @@ func (c *Controller) handleAddNode(key string) error {
}

if err = c.deletePolicyRouteForLocalDNSCacheOnNode(node.Name, af); err != nil {
klog.Errorf("failed to delete policy route for node %s: %v", node.Name, err)
return err
}

if c.config.NodeLocalDNSIP != "" {
if err = c.addPolicyRouteForLocalDNSCacheOnNode(portName, ip, node.Name, af); err != nil {
klog.Errorf("failed to add policy route for node %s: %v", node.Name, err)
return err
}
}
Expand Down Expand Up @@ -366,10 +370,15 @@ func (c *Controller) handleAddNode(key string) error {
}

if err := c.UpdateChassisTag(node); err != nil {
klog.Errorf("failed to update chassis tag for node %s: %v", node.Name, err)
return err
}

return c.retryDelDupChassis(util.ChasRetryTime, util.ChasRetryIntev+2, c.cleanDuplicatedChassis, node)
if err := c.retryDelDupChassis(util.ChassisRetryMaxTimes, util.ChassisControllerRetryInterval, c.cleanDuplicatedChassis, node); err != nil {
klog.Errorf("failed to clean duplicated chassis for node %s: %v", node.Name, err)
return err
}
return nil
}

func (c *Controller) handleNodeAnnotationsForProviderNetworks(node *v1.Node) error {
Expand Down Expand Up @@ -598,6 +607,7 @@ func (c *Controller) handleUpdateNode(key string) error {
if k8serrors.IsNotFound(err) {
return nil
}
klog.Errorf("failed to get node %s: %v", key, err)
return err
}

Expand All @@ -613,9 +623,11 @@ func (c *Controller) handleUpdateNode(key string) error {
}

if err := c.UpdateChassisTag(node); err != nil {
klog.Errorf("failed to update chassis tag for node %s: %v", node.Name, err)
return err
}
if err := c.retryDelDupChassis(util.ChasRetryTime, util.ChasRetryIntev+2, c.cleanDuplicatedChassis, node); err != nil {
if err := c.retryDelDupChassis(util.ChassisRetryMaxTimes, util.ChassisControllerRetryInterval, c.cleanDuplicatedChassis, node); err != nil {
klog.Errorf("failed to clean duplicated chassis for node %s: %v", node.Name, err)
return err
}

Expand Down Expand Up @@ -880,6 +892,7 @@ func (c *Controller) retryDelDupChassis(attempts, sleep int, f func(node *v1.Nod
if err == nil {
return
}
klog.Errorf("failed to delete duplicated chassis for node %s: %v", node.Name, err)
if i >= (attempts - 1) {
break
}
Expand Down
30 changes: 16 additions & 14 deletions pkg/controller/ovn_ic.go
Expand Up @@ -155,13 +155,14 @@ func (c *Controller) removeInterConnection(azName string) error {
if len(no.Labels) == 0 {
op = "add"
}
no.Labels[util.ICGatewayLabel] = "false"
raw, _ := json.Marshal(no.Labels)
patchPayload := fmt.Sprintf(patchPayloadTemplate, op, raw)
_, err = c.config.KubeClient.CoreV1().Nodes().Patch(context.Background(), no.Name, types.JSONPatchType, []byte(patchPayload), metav1.PatchOptions{}, "")
if err != nil {
klog.Errorf("patch ic gw node %s failed %v", no.Name, err)
return err
if no.Labels[util.ICGatewayLabel] != "false" {
no.Labels[util.ICGatewayLabel] = "false"
raw, _ := json.Marshal(no.Labels)
patchPayload := fmt.Sprintf(patchPayloadTemplate, op, raw)
if _, err = c.config.KubeClient.CoreV1().Nodes().Patch(context.Background(), no.Name, types.JSONPatchType, []byte(patchPayload), metav1.PatchOptions{}, ""); err != nil {
klog.Errorf("patch ic gw node %s failed %v", no.Name, err)
return err
}
}
}

Expand Down Expand Up @@ -242,13 +243,14 @@ func (c *Controller) establishInterConnection(config map[string]string) error {
if len(node.Labels) == 0 {
op = "add"
}
node.Labels[util.ICGatewayLabel] = "true"
raw, _ := json.Marshal(node.Labels)
patchPayload := fmt.Sprintf(patchPayloadTemplate, op, raw)
_, err = c.config.KubeClient.CoreV1().Nodes().Patch(context.Background(), gw, types.JSONPatchType, []byte(patchPayload), metav1.PatchOptions{}, "")
if err != nil {
klog.Errorf("patch gw node %s failed %v", gw, err)
return err
if node.Labels[util.ICGatewayLabel] != "true" {
node.Labels[util.ICGatewayLabel] = "true"
raw, _ := json.Marshal(node.Labels)
patchPayload := fmt.Sprintf(patchPayloadTemplate, op, raw)
if _, err = c.config.KubeClient.CoreV1().Nodes().Patch(context.Background(), gw, types.JSONPatchType, []byte(patchPayload), metav1.PatchOptions{}, ""); err != nil {
klog.Errorf("patch gw node %s failed %v", gw, err)
return err
}
}
}

Expand Down
13 changes: 10 additions & 3 deletions pkg/daemon/ovs_linux.go
Expand Up @@ -620,11 +620,18 @@ func (c *Controller) loopOvnExt0Check() {
cachedEip, err := c.ovnEipsLister.Get(portName)
if err != nil {
if k8serrors.IsNotFound(err) {
if val, ok := node.Labels[util.NodeExtGwLabel]; !ok || (val == "false") {
// not gw node or already clean
val, ok := node.Labels[util.NodeExtGwLabel]
if !ok {
// not gw node before
return
}
needClean = true
if val == "false" {
// already clean
return
}
if val == "true" {
needClean = true
}
} else {
klog.Errorf("failed to get ecmp gateway ovn eip, %v", err)
return
Expand Down
2 changes: 1 addition & 1 deletion pkg/ovs/ovn-nb-gateway_chassis.go
Expand Up @@ -118,7 +118,7 @@ func (c *OVNNbClient) CreateGatewayChassisesOp(lrpName string, chassises []strin

for i, chassisName := range chassises {
gwChassisName := lrpName + "-" + chassisName
gwChassis, err := c.GetGatewayChassis(chassisName, true)
gwChassis, err := c.GetGatewayChassis(gwChassisName, true)
if err != nil {
klog.Error(err)
return nil, err
Expand Down
13 changes: 8 additions & 5 deletions pkg/util/const.go
Expand Up @@ -202,11 +202,14 @@ const (
InternalType = "internal-port"
DpdkType = "dpdk-port"

HostnameEnv = "KUBE_NODE_NAME"
ChasRetryTime = 5
ChasRetryIntev = 1
VM = "VirtualMachine"
VMInstance = "VirtualMachineInstance"
HostnameEnv = "KUBE_NODE_NAME"

ChassisRetryMaxTimes = 5
ChassisCniDaemonRetryInterval = 1
ChassisControllerRetryInterval = 3

VM = "VirtualMachine"
VMInstance = "VirtualMachineInstance"

MirrorControlAnnotation = "ovn.kubernetes.io/mirror"
MirrorDefaultName = "m0"
Expand Down

0 comments on commit 958aab9

Please sign in to comment.