From b5159afc66f1d04fb5f667ecdd18b7b73cd6ff13 Mon Sep 17 00:00:00 2001 From: huiwq1990 Date: Thu, 3 Mar 2022 10:18:27 +0800 Subject: [PATCH] support config k8s resource server (#751) --- pkg/yurtctl/cmd/join/join.go | 36 ++++++++++++------- pkg/yurtctl/cmd/join/joindata/data.go | 1 + pkg/yurtctl/cmd/join/phases/prepare.go | 2 +- pkg/yurtctl/constants/constants.go | 9 ++--- .../kubeadm/app/cmd/options/constant.go | 3 ++ pkg/yurtctl/util/kubernetes/util.go | 4 +-- 6 files changed, 36 insertions(+), 19 deletions(-) diff --git a/pkg/yurtctl/cmd/join/join.go b/pkg/yurtctl/cmd/join/join.go index 22e63aef0a9..ccb500a94de 100644 --- a/pkg/yurtctl/cmd/join/join.go +++ b/pkg/yurtctl/cmd/join/join.go @@ -66,6 +66,7 @@ type joinOptions struct { unsafeSkipCAVerification bool ignorePreflightErrors []string nodeLabels string + kubernetesResourceServer string } // newJoinOptions returns a struct ready for being used for creating cmd join flags. @@ -78,6 +79,7 @@ func newJoinOptions() *joinOptions { caCertHashes: make([]string, 0), unsafeSkipCAVerification: false, ignorePreflightErrors: make([]string, 0), + kubernetesResourceServer: yurtconstants.DefaultKubernetesResourceServer, } } @@ -159,21 +161,26 @@ func addJoinConfigFlags(flagSet *flag.FlagSet, joinOptions *joinOptions) { &joinOptions.nodeLabels, options.NodeLabels, joinOptions.nodeLabels, "Sets the labels for joining node", ) + flagSet.StringVar( + &joinOptions.kubernetesResourceServer, options.KubernetesResourceServer, joinOptions.kubernetesResourceServer, + "Sets the address for downloading k8s node resources", + ) } type joinData struct { - joinNodeData *joindata.NodeRegistration - apiServerEndpoint string - token string - tlsBootstrapCfg *clientcmdapi.Config - clientSet *clientset.Clientset - ignorePreflightErrors sets.String - organizations string - pauseImage string - yurthubImage string - kubernetesVersion string - caCertHashes sets.String - nodeLabels map[string]string + joinNodeData *joindata.NodeRegistration + apiServerEndpoint string + token string + tlsBootstrapCfg *clientcmdapi.Config + clientSet *clientset.Clientset + ignorePreflightErrors sets.String + organizations string + pauseImage string + yurthubImage string + kubernetesVersion string + caCertHashes sets.String + nodeLabels map[string]string + kubernetesResourceServer string } // newJoinData returns a new joinData struct to be used for the execution of the kubeadm join workflow. @@ -238,6 +245,7 @@ func newJoinData(cmd *cobra.Command, args []string, opt *joinOptions, out io.Wri CRISocket: opt.criSocket, Organizations: opt.organizations, }, + kubernetesResourceServer: opt.kubernetesResourceServer, } // parse node labels @@ -331,3 +339,7 @@ func (j *joinData) CaCertHashes() sets.String { func (j *joinData) NodeLabels() map[string]string { return j.nodeLabels } + +func (j *joinData) KubernetesResourceServer() string { + return j.kubernetesResourceServer +} diff --git a/pkg/yurtctl/cmd/join/joindata/data.go b/pkg/yurtctl/cmd/join/joindata/data.go index 74e08daa32f..92dc4e085fb 100644 --- a/pkg/yurtctl/cmd/join/joindata/data.go +++ b/pkg/yurtctl/cmd/join/joindata/data.go @@ -41,4 +41,5 @@ type YurtJoinData interface { CaCertHashes() sets.String NodeLabels() map[string]string IgnorePreflightErrors() sets.String + KubernetesResourceServer() string } diff --git a/pkg/yurtctl/cmd/join/phases/prepare.go b/pkg/yurtctl/cmd/join/phases/prepare.go index aee174f0e86..c280e4356b7 100644 --- a/pkg/yurtctl/cmd/join/phases/prepare.go +++ b/pkg/yurtctl/cmd/join/phases/prepare.go @@ -65,7 +65,7 @@ func runPrepare(c workflow.RunData) error { if err := system.SetSELinux(); err != nil { return err } - if err := kubernetes.CheckAndInstallKubelet(data.KubernetesVersion()); err != nil { + if err := kubernetes.CheckAndInstallKubelet(data.KubernetesResourceServer(), data.KubernetesVersion()); err != nil { return err } if err := kubernetes.SetKubeletService(); err != nil { diff --git a/pkg/yurtctl/constants/constants.go b/pkg/yurtctl/constants/constants.go index ae102dc4ea3..972ea1ca6aa 100644 --- a/pkg/yurtctl/constants/constants.go +++ b/pkg/yurtctl/constants/constants.go @@ -51,10 +51,11 @@ const ( YurthubStaticPodFileName = "yurthub.yaml" PauseImagePath = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2" - CniUrlFormat = "https://aliacs-edge-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/pkg/openyurt/cni/%s/cni-plugins-linux-%s-%s.tgz" - KubeUrlFormat = "https://dl.k8s.io/%s/kubernetes-node-linux-%s.tar.gz" - TmpDownloadDir = "/tmp" - FlannelIntallFile = "https://aliacs-edge-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/pkg/openyurt/flannel.yaml" + CniUrlFormat = "https://aliacs-edge-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/pkg/openyurt/cni/%s/cni-plugins-linux-%s-%s.tgz" + DefaultKubernetesResourceServer = "dl.k8s.io" + KubeUrlFormat = "https://%s/%s/kubernetes-node-linux-%s.tar.gz" + TmpDownloadDir = "/tmp" + FlannelIntallFile = "https://aliacs-edge-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/pkg/openyurt/flannel.yaml" EdgeNode = "edge" CloudNode = "cloud" diff --git a/pkg/yurtctl/kubernetes/kubeadm/app/cmd/options/constant.go b/pkg/yurtctl/kubernetes/kubeadm/app/cmd/options/constant.go index 0bee0ae3c50..31cf0cefddf 100644 --- a/pkg/yurtctl/kubernetes/kubeadm/app/cmd/options/constant.go +++ b/pkg/yurtctl/kubernetes/kubeadm/app/cmd/options/constant.go @@ -74,4 +74,7 @@ const ( // YurtHubImage flag sets the yurthub image for worker node. YurtHubImage = "yurthub-image" + + // KubernetesResourceServer flag sets the address for download k8s node resources. + KubernetesResourceServer = "kubernetes-resource-server" ) diff --git a/pkg/yurtctl/util/kubernetes/util.go b/pkg/yurtctl/util/kubernetes/util.go index 6a78d0c52ab..889e86dc8e9 100644 --- a/pkg/yurtctl/util/kubernetes/util.go +++ b/pkg/yurtctl/util/kubernetes/util.go @@ -711,7 +711,7 @@ func GetKubeControllerManagerHANodes(cliSet *kubernetes.Clientset) ([]string, er } //CheckAndInstallKubelet install kubelet and kubernetes-cni, skip install if they exist. -func CheckAndInstallKubelet(clusterVersion string) error { +func CheckAndInstallKubelet(kubernetesResourceServer, clusterVersion string) error { if strings.Contains(clusterVersion, "-") { clusterVersion = strings.Split(clusterVersion, "-")[0] } @@ -737,7 +737,7 @@ func CheckAndInstallKubelet(clusterVersion string) error { if !kubeletExist { //download and install kubernetes-node - packageUrl := fmt.Sprintf(constants.KubeUrlFormat, clusterVersion, runtime.GOARCH) + packageUrl := fmt.Sprintf(constants.KubeUrlFormat, kubernetesResourceServer, clusterVersion, runtime.GOARCH) savePath := fmt.Sprintf("%s/kubernetes-node-linux-%s.tar.gz", constants.TmpDownloadDir, runtime.GOARCH) klog.V(1).Infof("Download kubelet from: %s", packageUrl) if err := util.DownloadFile(packageUrl, savePath, 3); err != nil {