From 94d5104fc1f85d717fdea84b54c5599bf3ae8f0f Mon Sep 17 00:00:00 2001 From: baoyinghai_yewu Date: Sat, 14 Sep 2024 18:04:20 +0800 Subject: [PATCH] fix: Modify node IP selection logic Signed-off-by: baoyinghai_yewu --- cluster/images/agent.Dockerfile | 2 +- cluster/images/buildx.agent.Dockerfile | 2 +- pkg/kubenest/constants/constant.go | 6 ++++++ .../global.node.controller/global_node_controller.go | 4 ++-- pkg/kubenest/controller/virtualcluster_init_controller.go | 2 +- pkg/kubenest/controlplane/etcd.go | 3 +-- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/cluster/images/agent.Dockerfile b/cluster/images/agent.Dockerfile index e80d1c4d8..fda01383b 100644 --- a/cluster/images/agent.Dockerfile +++ b/cluster/images/agent.Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:latest as release-env +FROM ubuntu:latest AS release-env ARG BINARY diff --git a/cluster/images/buildx.agent.Dockerfile b/cluster/images/buildx.agent.Dockerfile index 3e9c78e69..48770fe17 100644 --- a/cluster/images/buildx.agent.Dockerfile +++ b/cluster/images/buildx.agent.Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:latest as release-env +FROM ubuntu:latest AS release-env ARG BINARY ARG TARGETPLATFORM diff --git a/pkg/kubenest/constants/constant.go b/pkg/kubenest/constants/constant.go index 0613b33e6..678893f52 100644 --- a/pkg/kubenest/constants/constant.go +++ b/pkg/kubenest/constants/constant.go @@ -3,6 +3,8 @@ package constants import ( "time" + corev1 "k8s.io/api/core/v1" + "github.com/kosmos.io/kosmos/pkg/utils" ) @@ -142,8 +144,12 @@ type Action string var APIServerServiceSubnet string var KubeControllerManagerPodSubnet string +var PreferredAddressType corev1.NodeAddressType + func init() { APIServerServiceSubnet = utils.GetEnvWithDefaultValue("SERVICE_SUBNET", "10.237.6.0/18") // fd11:1122:1111::/48, KubeControllerManagerPodSubnet = utils.GetEnvWithDefaultValue("POD_SUBNET", "10.244.0.0/16") + + PreferredAddressType = corev1.NodeAddressType(utils.GetEnvWithDefaultValue("PREFERRED_ADDRESS_TYPE", string(corev1.NodeInternalIP))) } diff --git a/pkg/kubenest/controller/global.node.controller/global_node_controller.go b/pkg/kubenest/controller/global.node.controller/global_node_controller.go index 9f98ce92f..a9dbacdb7 100644 --- a/pkg/kubenest/controller/global.node.controller/global_node_controller.go +++ b/pkg/kubenest/controller/global.node.controller/global_node_controller.go @@ -227,9 +227,9 @@ func (r *GlobalNodeController) Reconcile(ctx context.Context, request reconcile. } globalNode.Name = request.Name globalNode.Spec.State = v1alpha1.NodeReserved - firstNodeIP, err := utils.FindFirstNodeIPAddress(*rootNode, v1.NodeInternalIP) + firstNodeIP, err := utils.FindFirstNodeIPAddress(*rootNode, constants.PreferredAddressType) if err != nil { - klog.Errorf("get first node ip address err: %s %s", v1.NodeInternalIP, err.Error()) + klog.Errorf("get first node ip address err: %s %s", constants.PreferredAddressType, err.Error()) } globalNode.Spec.NodeIP = firstNodeIP if _, err = r.KosmosClient.KosmosV1alpha1().GlobalNodes().Create(ctx, &globalNode, metav1.CreateOptions{}); err != nil { diff --git a/pkg/kubenest/controller/virtualcluster_init_controller.go b/pkg/kubenest/controller/virtualcluster_init_controller.go index 14f9f7528..7c3545f38 100644 --- a/pkg/kubenest/controller/virtualcluster_init_controller.go +++ b/pkg/kubenest/controller/virtualcluster_init_controller.go @@ -778,7 +778,7 @@ func (c *VirtualClusterInitController) findHostAddresses() ([]string, error) { ret := []string{} for _, node := range nodes.Items { - addr, err := utils.FindFirstNodeIPAddress(node, corev1.NodeInternalIP) + addr, err := utils.FindFirstNodeIPAddress(node, constants.PreferredAddressType) if err != nil { return nil, err } diff --git a/pkg/kubenest/controlplane/etcd.go b/pkg/kubenest/controlplane/etcd.go index 684c639a6..f43987605 100644 --- a/pkg/kubenest/controlplane/etcd.go +++ b/pkg/kubenest/controlplane/etcd.go @@ -37,7 +37,7 @@ func installEtcd(client clientset.Interface, name, namespace string, kubeNestCon var resourceQuantity resource.Quantity var err error - if vc.Spec.KubeInKubeConfig.ETCDUnitSize != "" { + if vc.Spec.KubeInKubeConfig != nil && vc.Spec.KubeInKubeConfig.ETCDUnitSize != "" { resourceQuantity, err = resource.ParseQuantity(vc.Spec.KubeInKubeConfig.ETCDUnitSize) if err != nil { klog.Errorf("Failed to parse etcdSize %s: %v", vc.Spec.KubeInKubeConfig.ETCDUnitSize, err) @@ -56,7 +56,6 @@ func installEtcd(client clientset.Interface, name, namespace string, kubeNestCon return err } resourceQuantity.Set(resourceQuantity.Value() * int64(nodeCount)) - } initialClusters := make([]string, constants.EtcdReplicas)