Merge pull request #51033 from mtaufen/revert-51008-revert-50789-fix-scheme
Automatic merge from submit-queue (batch tested with PRs 50967, 50505, 50706, 51033, 51028) Revert "Merge pull request #51008 from kubernetes/revert-50789-fix-scheme" I'm spinning up a cluster right now to test this fix, but I'm pretty sure this was the problem. There doesn't seem to be a way to confirm from logs, because AFAICT the logs from the hollow kubelet containers are not collected as part of the kubemark test. **What this PR does / why we need it**: This reverts commitf4afdecef8, reversing changes made toe633a1604f. This also fixes a bug where Kubemark was still using the core api scheme to manipulate the Kubelet's types, which was the cause of the initial revert. **Which issue this PR fixes**: fixes #51007 **Release note**: ```release-note NONE ``` /cc @shyamjvs @wojtek-t
This commit is contained in:
@@ -41,6 +41,7 @@ go_library(
|
||||
"//pkg/features:go_default_library",
|
||||
"//pkg/kubelet:go_default_library",
|
||||
"//pkg/kubelet/apis/kubeletconfig:go_default_library",
|
||||
"//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library",
|
||||
"//pkg/kubelet/apis/kubeletconfig/v1alpha1:go_default_library",
|
||||
"//pkg/kubelet/cadvisor:go_default_library",
|
||||
"//pkg/kubelet/certificate:go_default_library",
|
||||
|
||||
@@ -12,11 +12,10 @@ go_library(
|
||||
"options.go",
|
||||
],
|
||||
deps = [
|
||||
"//pkg/api:go_default_library",
|
||||
"//pkg/apis/componentconfig:go_default_library",
|
||||
"//pkg/features:go_default_library",
|
||||
"//pkg/kubelet/apis/kubeletconfig:go_default_library",
|
||||
"//pkg/kubelet/apis/kubeletconfig/install:go_default_library",
|
||||
"//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library",
|
||||
"//pkg/kubelet/apis/kubeletconfig/v1alpha1:go_default_library",
|
||||
"//pkg/kubelet/apis/kubeletconfig/validation:go_default_library",
|
||||
"//pkg/util/taints:go_default_library",
|
||||
|
||||
@@ -25,14 +25,12 @@ import (
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
"k8s.io/apiserver/pkg/util/flag"
|
||||
utilflag "k8s.io/apiserver/pkg/util/flag"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
|
||||
kubeletconfigvalidation "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation"
|
||||
// Need to make sure the kubeletconfig api is installed so defaulting funcs work
|
||||
_ "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/install"
|
||||
kubeletscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme"
|
||||
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1"
|
||||
kubeletconfigvalidation "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation"
|
||||
utiltaints "k8s.io/kubernetes/pkg/util/taints"
|
||||
|
||||
"github.com/spf13/pflag"
|
||||
@@ -142,10 +140,14 @@ func ValidateKubeletFlags(f *KubeletFlags) error {
|
||||
|
||||
// NewKubeletConfiguration will create a new KubeletConfiguration with default values
|
||||
func NewKubeletConfiguration() (*kubeletconfig.KubeletConfiguration, error) {
|
||||
scheme, _, err := kubeletscheme.NewSchemeAndCodecs()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
versioned := &v1alpha1.KubeletConfiguration{}
|
||||
api.Scheme.Default(versioned)
|
||||
scheme.Default(versioned)
|
||||
config := &kubeletconfig.KubeletConfiguration{}
|
||||
if err := api.Scheme.Convert(versioned, config, nil); err != nil {
|
||||
if err := scheme.Convert(versioned, config, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return config, nil
|
||||
|
||||
@@ -60,6 +60,7 @@ import (
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/pkg/kubelet"
|
||||
kubeletconfiginternal "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
|
||||
kubeletscheme "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme"
|
||||
kubeletconfigv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1"
|
||||
"k8s.io/kubernetes/pkg/kubelet/cadvisor"
|
||||
"k8s.io/kubernetes/pkg/kubelet/certificate"
|
||||
@@ -188,20 +189,30 @@ func checkPermissions() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func setConfigz(cz *configz.Config, kc *kubeletconfiginternal.KubeletConfiguration) {
|
||||
tmp := kubeletconfigv1alpha1.KubeletConfiguration{}
|
||||
api.Scheme.Convert(kc, &tmp, nil)
|
||||
cz.Set(tmp)
|
||||
func setConfigz(cz *configz.Config, kc *kubeletconfiginternal.KubeletConfiguration) error {
|
||||
scheme, _, err := kubeletscheme.NewSchemeAndCodecs()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
versioned := kubeletconfigv1alpha1.KubeletConfiguration{}
|
||||
if err := scheme.Convert(kc, &versioned, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
cz.Set(versioned)
|
||||
return nil
|
||||
}
|
||||
|
||||
func initConfigz(kc *kubeletconfiginternal.KubeletConfiguration) (*configz.Config, error) {
|
||||
func initConfigz(kc *kubeletconfiginternal.KubeletConfiguration) error {
|
||||
cz, err := configz.New("kubeletconfig")
|
||||
if err == nil {
|
||||
setConfigz(cz, kc)
|
||||
} else {
|
||||
if err != nil {
|
||||
glog.Errorf("unable to register configz: %s", err)
|
||||
return err
|
||||
}
|
||||
return cz, err
|
||||
if err := setConfigz(cz, kc); err != nil {
|
||||
glog.Errorf("unable to register config: %s", err)
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// makeEventRecorder sets up kubeDeps.Recorder if its nil. Its a no-op otherwise.
|
||||
@@ -250,7 +261,7 @@ func run(s *options.KubeletServer, kubeDeps *kubelet.Dependencies) (err error) {
|
||||
}
|
||||
|
||||
// Register current configuration with /configz endpoint
|
||||
_, err = initConfigz(&s.KubeletConfiguration)
|
||||
err = initConfigz(&s.KubeletConfiguration)
|
||||
if err != nil {
|
||||
glog.Errorf("unable to register KubeletConfiguration with configz, error: %v", err)
|
||||
}
|
||||
@@ -756,7 +767,8 @@ func parseResourceList(m kubeletconfiginternal.ConfigurationMap) (v1.ResourceLis
|
||||
}
|
||||
|
||||
// BootstrapKubeletConfigController constructs and bootstrap a configuration controller
|
||||
func BootstrapKubeletConfigController(flags *options.KubeletFlags,
|
||||
func BootstrapKubeletConfigController(
|
||||
flags *options.KubeletFlags,
|
||||
defaultConfig *kubeletconfiginternal.KubeletConfiguration) (*kubeletconfiginternal.KubeletConfiguration, *kubeletconfig.Controller, error) {
|
||||
var err error
|
||||
// Alpha Dynamic Configuration Implementation; this section only loads config from disk, it does not contact the API server
|
||||
@@ -777,7 +789,10 @@ func BootstrapKubeletConfigController(flags *options.KubeletFlags,
|
||||
}
|
||||
|
||||
// get the latest KubeletConfiguration checkpoint from disk, or load the init or default config if no valid checkpoints exist
|
||||
kubeletConfigController := kubeletconfig.NewController(initConfigDir, dynamicConfigDir, defaultConfig)
|
||||
kubeletConfigController, err := kubeletconfig.NewController(initConfigDir, dynamicConfigDir, defaultConfig)
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("failed to construct controller, error: %v", err)
|
||||
}
|
||||
kubeletConfig, err := kubeletConfigController.Bootstrap()
|
||||
if err != nil {
|
||||
return nil, nil, fmt.Errorf("failed to determine a valid configuration, error: %v", err)
|
||||
|
||||
@@ -89,7 +89,10 @@ func main() {
|
||||
}
|
||||
|
||||
// construct a KubeletServer from kubeletFlags and kubeletConfig
|
||||
kubeletServer := &options.KubeletServer{KubeletFlags: *kubeletFlags, KubeletConfiguration: *kubeletConfig}
|
||||
kubeletServer := &options.KubeletServer{
|
||||
KubeletFlags: *kubeletFlags,
|
||||
KubeletConfiguration: *kubeletConfig,
|
||||
}
|
||||
|
||||
// use kubeletServer to construct the default KubeletDeps
|
||||
kubeletDeps, err := app.UnsecuredDependencies(kubeletServer)
|
||||
|
||||
Reference in New Issue
Block a user