Skip to content

Commit 27ea418

Browse files
yangxggosealos-ci-robot
authored andcommitted
support old version of kubelet-config (#3447)
Signed-off-by: yangxg <[email protected]>
1 parent 933bc8a commit 27ea418

File tree

1 file changed

+42
-4
lines changed

1 file changed

+42
-4
lines changed

pkg/client-go/kubernetes/expansion.go

+42-4
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@ package kubernetes
1919
import (
2020
"context"
2121
"fmt"
22-
23-
"github.com/labring/sealos/pkg/utils/iputils"
24-
25-
ckubeadm "k8s.io/kubernetes/cmd/kubeadm/app/constants"
22+
str "strings"
2623

2724
v1 "k8s.io/api/core/v1"
25+
kerrors "k8s.io/apimachinery/pkg/api/errors"
2826
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2927
clientset "k8s.io/client-go/kubernetes"
28+
ckubeadm "k8s.io/kubernetes/cmd/kubeadm/app/constants"
29+
30+
"github.com/labring/sealos/pkg/utils/iputils"
31+
"github.com/labring/sealos/pkg/utils/logger"
3032
)
3133

3234
var (
@@ -76,6 +78,17 @@ func (ke *kubeExpansion) UpdateKubeadmConfig(ctx context.Context, clusterConfig
7678
func (ke *kubeExpansion) FetchKubeletConfig(ctx context.Context) (string, error) {
7779
cm, err := ke.client.CoreV1().ConfigMaps(metav1.NamespaceSystem).Get(ctx, ckubeadm.KubeletBaseConfigurationConfigMap, metav1.GetOptions{})
7880
if err != nil {
81+
if kerrors.IsNotFound(err) {
82+
logger.Info("cannot find configMap %q, try to detect older versions", ckubeadm.KubeletBaseConfigurationConfigMap)
83+
data, err := ke.fetchOldKubeletConfig(ctx)
84+
if err != nil {
85+
return "", err
86+
}
87+
if err = ke.cloneOldKubeletConfig(ctx, data); err != nil {
88+
return "", err
89+
}
90+
return data, nil
91+
}
7992
return "", err
8093
}
8194
return cm.Data[ckubeadm.KubeletBaseConfigurationConfigMapKey], nil
@@ -106,3 +119,28 @@ func (ke *kubeExpansion) FetchHostNameFromInternalIP(ctx context.Context, nodeIP
106119
}
107120
return "", fmt.Errorf("cannot find host with internal ip %v", ip)
108121
}
122+
123+
func (ke *kubeExpansion) fetchOldKubeletConfig(ctx context.Context) (string, error) {
124+
kubeletBaseConfigurationConfigMapPrefix := fmt.Sprintf("%s-", ckubeadm.KubeletBaseConfigurationConfigMap)
125+
cms, err := ke.client.CoreV1().ConfigMaps(metav1.NamespaceSystem).List(ctx, metav1.ListOptions{})
126+
if err != nil {
127+
return "", err
128+
}
129+
for _, cm := range cms.Items {
130+
if str.HasPrefix(cm.Name, kubeletBaseConfigurationConfigMapPrefix) {
131+
return cm.Data[ckubeadm.KubeletBaseConfigurationConfigMapKey], nil
132+
}
133+
}
134+
return "", fmt.Errorf("cannot find config map with prefix %q", kubeletBaseConfigurationConfigMapPrefix)
135+
}
136+
137+
func (ke *kubeExpansion) cloneOldKubeletConfig(ctx context.Context, data string) error {
138+
cm := &v1.ConfigMap{Data: map[string]string{}}
139+
cm.Name = ckubeadm.KubeletBaseConfigurationConfigMap
140+
cm.Data[ckubeadm.KubeletBaseConfigurationConfigMapKey] = data
141+
_, err := ke.client.CoreV1().ConfigMaps(metav1.NamespaceSystem).Create(ctx, cm, metav1.CreateOptions{})
142+
if err != nil {
143+
return err
144+
}
145+
return nil
146+
}

0 commit comments

Comments
 (0)