diff --git a/pkg/platform/provider/baremetal/cluster/kubeadm.go b/pkg/platform/provider/baremetal/cluster/kubeadm.go index 89d4ce0bc..9adff6ddf 100644 --- a/pkg/platform/provider/baremetal/cluster/kubeadm.go +++ b/pkg/platform/provider/baremetal/cluster/kubeadm.go @@ -70,6 +70,8 @@ func (p *Provider) getKubeadmJoinConfig(c *v1.Cluster, machineIP string) *kubead kubeletExtraArgs["node-labels"] = fmt.Sprintf("%s,%s=%s", kubeletExtraArgs["node-labels"], apiclient.LabelSwitchIPCilium, switchIP) } } + kubeletExtraArgs["node-labels"] = fmt.Sprintf("%s,%s=%s", kubeletExtraArgs["node-lables"], apiclient.LabelTopologyZone, "default") + if _, ok := kubeletExtraArgs["hostname-override"]; !ok { if !c.Spec.HostnameAsNodename { nodeRegistration.Name = machineIP diff --git a/pkg/platform/provider/baremetal/machine/kubeadm.go b/pkg/platform/provider/baremetal/machine/kubeadm.go index 6a7d0b973..b4facab79 100644 --- a/pkg/platform/provider/baremetal/machine/kubeadm.go +++ b/pkg/platform/provider/baremetal/machine/kubeadm.go @@ -52,6 +52,7 @@ func (p *Provider) getKubeadmJoinConfig(c *v1.Cluster, machineIP string) *kubead kubeletExtraArgs["node-labels"] = fmt.Sprintf("%s,%s=%s", kubeletExtraArgs["node-labels"], apiclient.LabelSwitchIPCilium, switchIP) } } + kubeletExtraArgs["node-labels"] = fmt.Sprintf("%s,%s=%s", kubeletExtraArgs["node-lables"], apiclient.LabelTopologyZone, "default") // add node ip for single stack ipv6 clusters. if _, ok := kubeletExtraArgs["node-ip"]; !ok { diff --git a/pkg/util/apiclient/idempotency.go b/pkg/util/apiclient/idempotency.go index f67426844..fb43efc3f 100644 --- a/pkg/util/apiclient/idempotency.go +++ b/pkg/util/apiclient/idempotency.go @@ -37,6 +37,7 @@ import ( extensionsv1beta1 "k8s.io/api/extensions/v1beta1" rbac "k8s.io/api/rbac/v1" apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + aaclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" @@ -48,7 +49,6 @@ import ( kubeaggregatorclientset "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset" utilsnet "k8s.io/utils/net" controllerutils "tkestack.io/tke/pkg/controller" - aaclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" ) // PlatformLabel represents the type of platform.tkestack.io related label. @@ -63,6 +63,8 @@ const ( UpdateNodeTimeout = 2 * time.Minute // LabelHostname specifies the label in node. LabelHostname = "kubernetes.io/hostname" + // LabelTopologyZone represents a logical failure domain. It is common for Kubernetes clusters to span multiple zones for increased availability. + LabelTopologyZone = "topology.kubernetes.io/zone" // LabelMachineIPV4 specifies the label in node. LabelMachineIPV4 PlatformLabel = "platform.tkestack.io/machine-ip" // LabelMachineIPV6Head specifies the label in node. @@ -432,7 +434,6 @@ func CreateOrUpdateAPIService(ctx context.Context, client kubeaggregatorclientse return nil } - // CreateOrUpdateCustomResourceDefinition creates a CustomResourceDefinition if the target resource doesn't exist. If the resource exists already, this function will update the resource instead. func CreateOrUpdateCustomResourceDefinition(ctx context.Context, client aaclientset.Interface, crd *apiextensionsv1.CustomResourceDefinition) error { if _, err := client.ApiextensionsV1().CustomResourceDefinitions().Create(ctx, crd, metav1.CreateOptions{}); err != nil {