From 31922c7794f74ac6a2e2bfce8b374714e45e46ce Mon Sep 17 00:00:00 2001 From: Paco Xu Date: Thu, 9 Jun 2022 10:27:18 +0800 Subject: [PATCH] kubeadm: use staticpod known tags for upgrade/init phases --- cmd/kubeadm/app/phases/kubelet/config.go | 7 +++---- cmd/kubeadm/app/util/patches/patches.go | 17 +++++++++++++++-- cmd/kubeadm/app/util/staticpod/utils.go | 9 +-------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/cmd/kubeadm/app/phases/kubelet/config.go b/cmd/kubeadm/app/phases/kubelet/config.go index 9f43896a173..0d5f6c33a45 100644 --- a/cmd/kubeadm/app/phases/kubelet/config.go +++ b/cmd/kubeadm/app/phases/kubelet/config.go @@ -56,14 +56,13 @@ func WriteConfigToDisk(cfg *kubeadmapi.ClusterConfiguration, kubeletDir, patches // Apply patches to the KubeletConfiguration if len(patchesDir) != 0 { - target := "kubeletconfiguration" - knownTargets := []string{target} - patchManager, err := patches.GetPatchManagerForPath(patchesDir, knownTargets, output) + patchManager, err := patches.GetPatchManagerForPath(patchesDir, patches.KnownTargets(), output) if err != nil { return err } + patchTarget := &patches.PatchTarget{ - Name: target, + Name: patches.KubeletConfiguration, StrategicMergePatchObject: kubeletconfig.KubeletConfiguration{}, Data: kubeletBytes, } diff --git a/cmd/kubeadm/app/util/patches/patches.go b/cmd/kubeadm/app/util/patches/patches.go index f6457ca6a04..fe7b7710c02 100644 --- a/cmd/kubeadm/app/util/patches/patches.go +++ b/cmd/kubeadm/app/util/patches/patches.go @@ -33,6 +33,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/strategicpatch" utilyaml "k8s.io/apimachinery/pkg/util/yaml" + kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" "sigs.k8s.io/yaml" ) @@ -74,6 +75,8 @@ func (ps *patchSet) String() string { ) } +const KubeletConfiguration = "kubeletconfiguration" + var ( pathLock = &sync.RWMutex{} pathCache = map[string]*PatchManager{} @@ -89,16 +92,26 @@ var ( knownExtensions = []string{"json", "yaml"} regExtension = regexp.MustCompile(`.+\.(` + strings.Join(knownExtensions, "|") + `)$`) + + knownTargets = []string{ + kubeadmconstants.Etcd, + kubeadmconstants.KubeAPIServer, + kubeadmconstants.KubeControllerManager, + kubeadmconstants.KubeScheduler, + KubeletConfiguration, + } ) +func KnownTargets() []string { + return knownTargets +} + // GetPatchManagerForPath creates a patch manager that can be used to apply patches to "knownTargets". // "path" should contain patches that can be used to patch the "knownTargets". // If "output" is non-nil, messages about actions performed by the manager would go on this io.Writer. func GetPatchManagerForPath(path string, knownTargets []string, output io.Writer) (*PatchManager, error) { pathLock.RLock() if pm, known := pathCache[path]; known { - // in case known targets are changed - pm.knownTargets = knownTargets pathLock.RUnlock() return pm, nil } diff --git a/cmd/kubeadm/app/util/staticpod/utils.go b/cmd/kubeadm/app/util/staticpod/utils.go index 75efc4f0f98..56a3f25b72a 100644 --- a/cmd/kubeadm/app/util/staticpod/utils.go +++ b/cmd/kubeadm/app/util/staticpod/utils.go @@ -168,14 +168,7 @@ func PatchStaticPod(pod *v1.Pod, patchesDir string, output io.Writer) (*v1.Pod, return pod, errors.Wrapf(err, "failed to marshal Pod manifest to YAML") } - var knownTargets = []string{ - kubeadmconstants.Etcd, - kubeadmconstants.KubeAPIServer, - kubeadmconstants.KubeControllerManager, - kubeadmconstants.KubeScheduler, - } - - patchManager, err := patches.GetPatchManagerForPath(patchesDir, knownTargets, output) + patchManager, err := patches.GetPatchManagerForPath(patchesDir, patches.KnownTargets(), output) if err != nil { return pod, err }