diff --git a/cmd/kubeadm/app/preflight/BUILD b/cmd/kubeadm/app/preflight/BUILD index 49ec4e30f89..0784663d57c 100644 --- a/cmd/kubeadm/app/preflight/BUILD +++ b/cmd/kubeadm/app/preflight/BUILD @@ -25,6 +25,7 @@ go_library( "//cmd/kubeadm/app/util/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/util/validation:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library", "//staging/src/k8s.io/component-base/version:go_default_library", "//vendor/github.com/PuerkitoBio/purell:go_default_library", diff --git a/cmd/kubeadm/app/preflight/checks.go b/cmd/kubeadm/app/preflight/checks.go index cd656189792..f219bef6d2c 100644 --- a/cmd/kubeadm/app/preflight/checks.go +++ b/cmd/kubeadm/app/preflight/checks.go @@ -38,6 +38,7 @@ import ( "github.com/pkg/errors" netutil "k8s.io/apimachinery/pkg/util/net" "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/util/validation" versionutil "k8s.io/apimachinery/pkg/util/version" kubeadmversion "k8s.io/component-base/version" "k8s.io/klog/v2" @@ -402,8 +403,12 @@ func (HostnameCheck) Name() string { } // Check validates if hostname match dns sub domain regex. +// Check hostname length and format func (hc HostnameCheck) Check() (warnings, errorList []error) { - klog.V(1).Infoln("checking whether the given node name is reachable using net.LookupHost") + klog.V(1).Infoln("checking whether the given node name is valid and reachable using net.LookupHost") + for _, msg := range validation.IsQualifiedName(hc.nodeName) { + warnings = append(warnings, errors.Errorf("invalid node name format %q: %s", hc.nodeName, msg)) + } addr, err := net.LookupHost(hc.nodeName) if addr == nil {