mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-19 01:40:13 +00:00
kubeadm: use staticpod known tags for upgrade/init phases
This commit is contained in:
parent
e27b2781f5
commit
31922c7794
@ -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,
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user