mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 10:20:51 +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
|
// Apply patches to the KubeletConfiguration
|
||||||
if len(patchesDir) != 0 {
|
if len(patchesDir) != 0 {
|
||||||
target := "kubeletconfiguration"
|
patchManager, err := patches.GetPatchManagerForPath(patchesDir, patches.KnownTargets(), output)
|
||||||
knownTargets := []string{target}
|
|
||||||
patchManager, err := patches.GetPatchManagerForPath(patchesDir, knownTargets, output)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
patchTarget := &patches.PatchTarget{
|
patchTarget := &patches.PatchTarget{
|
||||||
Name: target,
|
Name: patches.KubeletConfiguration,
|
||||||
StrategicMergePatchObject: kubeletconfig.KubeletConfiguration{},
|
StrategicMergePatchObject: kubeletconfig.KubeletConfiguration{},
|
||||||
Data: kubeletBytes,
|
Data: kubeletBytes,
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
"k8s.io/apimachinery/pkg/util/strategicpatch"
|
||||||
utilyaml "k8s.io/apimachinery/pkg/util/yaml"
|
utilyaml "k8s.io/apimachinery/pkg/util/yaml"
|
||||||
|
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
|
||||||
"sigs.k8s.io/yaml"
|
"sigs.k8s.io/yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -74,6 +75,8 @@ func (ps *patchSet) String() string {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const KubeletConfiguration = "kubeletconfiguration"
|
||||||
|
|
||||||
var (
|
var (
|
||||||
pathLock = &sync.RWMutex{}
|
pathLock = &sync.RWMutex{}
|
||||||
pathCache = map[string]*PatchManager{}
|
pathCache = map[string]*PatchManager{}
|
||||||
@ -89,16 +92,26 @@ var (
|
|||||||
knownExtensions = []string{"json", "yaml"}
|
knownExtensions = []string{"json", "yaml"}
|
||||||
|
|
||||||
regExtension = regexp.MustCompile(`.+\.(` + strings.Join(knownExtensions, "|") + `)$`)
|
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".
|
// 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".
|
// "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.
|
// 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) {
|
func GetPatchManagerForPath(path string, knownTargets []string, output io.Writer) (*PatchManager, error) {
|
||||||
pathLock.RLock()
|
pathLock.RLock()
|
||||||
if pm, known := pathCache[path]; known {
|
if pm, known := pathCache[path]; known {
|
||||||
// in case known targets are changed
|
|
||||||
pm.knownTargets = knownTargets
|
|
||||||
pathLock.RUnlock()
|
pathLock.RUnlock()
|
||||||
return pm, nil
|
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")
|
return pod, errors.Wrapf(err, "failed to marshal Pod manifest to YAML")
|
||||||
}
|
}
|
||||||
|
|
||||||
var knownTargets = []string{
|
patchManager, err := patches.GetPatchManagerForPath(patchesDir, patches.KnownTargets(), output)
|
||||||
kubeadmconstants.Etcd,
|
|
||||||
kubeadmconstants.KubeAPIServer,
|
|
||||||
kubeadmconstants.KubeControllerManager,
|
|
||||||
kubeadmconstants.KubeScheduler,
|
|
||||||
}
|
|
||||||
|
|
||||||
patchManager, err := patches.GetPatchManagerForPath(patchesDir, knownTargets, output)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return pod, err
|
return pod, err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user