@@ -26,107 +26,22 @@ import (
26
26
"os"
27
27
"time"
28
28
29
- "github.com/golang/glog"
30
- "github.com/spf13/pflag"
31
-
32
- utilfeature "k8s.io/apiserver/pkg/util/feature"
33
- "k8s.io/apiserver/pkg/util/flag"
34
29
"k8s.io/apiserver/pkg/util/logs"
35
30
"k8s.io/kubernetes/cmd/kubelet/app"
36
- "k8s.io/kubernetes/cmd/kubelet/app/options"
37
31
_ "k8s.io/kubernetes/pkg/client/metrics/prometheus" // for client metric registration
38
32
_ "k8s.io/kubernetes/pkg/version/prometheus" // for version metric registration
39
- "k8s.io/kubernetes/pkg/version/verflag"
40
33
)
41
34
42
- func parseFlagSet (fs * pflag.FlagSet , args []string ) error {
43
- if err := fs .Parse (args ); err != nil {
44
- return err
45
- }
46
- fs .VisitAll (func (flag * pflag.Flag ) {
47
- glog .V (2 ).Infof ("FLAG: --%s=%q" , flag .Name , flag .Value )
48
- })
49
- return nil
50
- }
51
-
52
- func die (err error ) {
53
- fmt .Fprintf (os .Stderr , "error: %v\n " , err )
54
- os .Exit (1 )
55
- }
56
-
57
35
func main () {
58
36
rand .Seed (time .Now ().UTC ().UnixNano ())
59
37
60
- fs := pflag .NewFlagSet (os .Args [0 ], pflag .ExitOnError )
61
- // set the normalize func, similar to k8s.io/apiserver/pkg/util/flag/flags.go:InitFlags
62
- fs .SetNormalizeFunc (flag .WordSepNormalizeFunc )
63
- // explicitly add flags from libs that register global flags
64
- options .AddGlobalFlags (fs )
38
+ command := app .NewKubeletCommand ()
65
39
66
- // register kubelet flags
67
- kubeletFlags := options .NewKubeletFlags ()
68
- kubeletFlags .AddFlags (fs )
69
-
70
- // register kubelet config flags
71
- defaultConfig , err := options .NewKubeletConfiguration ()
72
- if err != nil {
73
- die (err )
74
- }
75
- options .AddKubeletConfigFlags (fs , defaultConfig )
76
-
77
- // parse flags
78
- if err := parseFlagSet (fs , os .Args [1 :]); err != nil {
79
- die (err )
80
- }
81
-
82
- // initialize logging and defer flush
83
40
logs .InitLogs ()
84
41
defer logs .FlushLogs ()
85
42
86
- // short-circuit on verflag
87
- verflag .PrintAndExitIfRequested ()
88
-
89
- // TODO(mtaufen): won't need this this once dynamic config is GA
90
- // set feature gates so we can check if dynamic config is enabled
91
- if err := utilfeature .DefaultFeatureGate .SetFromMap (defaultConfig .FeatureGates ); err != nil {
92
- die (err )
93
- }
94
- // validate the initial KubeletFlags, to make sure the dynamic-config-related flags aren't used unless the feature gate is on
95
- if err := options .ValidateKubeletFlags (kubeletFlags ); err != nil {
96
- die (err )
97
- }
98
- // bootstrap the kubelet config controller, app.BootstrapKubeletConfigController will check
99
- // feature gates and only turn on relevant parts of the controller
100
- kubeletConfig , kubeletConfigController , err := app .BootstrapKubeletConfigController (
101
- defaultConfig , kubeletFlags .KubeletConfigFile , kubeletFlags .DynamicConfigDir )
102
- if err != nil {
103
- die (err )
104
- }
105
-
106
- // construct a KubeletServer from kubeletFlags and kubeletConfig
107
- kubeletServer := & options.KubeletServer {
108
- KubeletFlags : * kubeletFlags ,
109
- KubeletConfiguration : * kubeletConfig ,
110
- }
111
-
112
- // use kubeletServer to construct the default KubeletDeps
113
- kubeletDeps , err := app .UnsecuredDependencies (kubeletServer )
114
- if err != nil {
115
- die (err )
116
- }
117
-
118
- // add the kubelet config controller to kubeletDeps
119
- kubeletDeps .KubeletConfigController = kubeletConfigController
120
-
121
- // start the experimental docker shim, if enabled
122
- if kubeletFlags .ExperimentalDockershim {
123
- if err := app .RunDockershim (kubeletFlags , kubeletConfig ); err != nil {
124
- die (err )
125
- }
126
- }
127
-
128
- // run the kubelet
129
- if err := app .Run (kubeletServer , kubeletDeps ); err != nil {
130
- die (err )
43
+ if err := command .Execute (); err != nil {
44
+ fmt .Fprintf (os .Stderr , "%v\n " , err )
45
+ os .Exit (1 )
131
46
}
132
47
}
0 commit comments