Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
ae7dccf2
Unverified
Commit
ae7dccf2
authored
Nov 21, 2017
by
Jordan Liggitt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Kubelet flags take precedence over config from files/ConfigMaps"
This reverts commit
cbebb614
.
parent
1489d194
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
18 additions
and
335 deletions
+18
-335
kubelet.go
cmd/kubelet/kubelet.go
+1
-7
test.sh
hack/make-rules/test.sh
+0
-1
dynamic_kubelet_config_test.go
test/e2e_node/dynamic_kubelet_config_test.go
+4
-21
jenkins-ci-ubuntu.properties
test/e2e_node/jenkins/jenkins-ci-ubuntu.properties
+0
-1
jenkins-ci.properties
test/e2e_node/jenkins/jenkins-ci.properties
+0
-1
jenkins-flaky.properties
test/e2e_node/jenkins/jenkins-flaky.properties
+1
-1
jenkins-pull.properties
test/e2e_node/jenkins/jenkins-pull.properties
+1
-1
jenkins-serial-ubuntu.properties
test/e2e_node/jenkins/jenkins-serial-ubuntu.properties
+1
-1
jenkins-serial.properties
test/e2e_node/jenkins/jenkins-serial.properties
+1
-1
BUILD
test/e2e_node/services/BUILD
+0
-15
kubelet.go
test/e2e_node/services/kubelet.go
+9
-139
kubelet_test.go
test/e2e_node/services/kubelet_test.go
+0
-146
No files found.
cmd/kubelet/kubelet.go
View file @
ae7dccf2
...
@@ -53,7 +53,7 @@ func main() {
...
@@ -53,7 +53,7 @@ func main() {
}
}
options
.
AddKubeletConfigFlags
(
pflag
.
CommandLine
,
defaultConfig
)
options
.
AddKubeletConfigFlags
(
pflag
.
CommandLine
,
defaultConfig
)
//
initialize pflag and parse the initial
command line flags into the respective objects
//
parse the
command line flags into the respective objects
flag
.
InitFlags
()
flag
.
InitFlags
()
// initialize logging and defer flush
// initialize logging and defer flush
...
@@ -80,12 +80,6 @@ func main() {
...
@@ -80,12 +80,6 @@ func main() {
die
(
err
)
die
(
err
)
}
}
// re-parse the command-line flags on top of the returned configuration
// we layer flags over file-based and remote configuration to
// preserve backwards compatibility across binary upgrades
// see issue #56171 for more details
pflag
.
Parse
()
// construct a KubeletServer from kubeletFlags and kubeletConfig
// construct a KubeletServer from kubeletFlags and kubeletConfig
kubeletServer
:=
&
options
.
KubeletServer
{
kubeletServer
:=
&
options
.
KubeletServer
{
KubeletFlags
:
*
kubeletFlags
,
KubeletFlags
:
*
kubeletFlags
,
...
...
hack/make-rules/test.sh
View file @
ae7dccf2
...
@@ -69,7 +69,6 @@ kube::test::find_dirs() {
...
@@ -69,7 +69,6 @@ kube::test::find_dirs() {
-o
-path
'./vendor/k8s.io/client-go/*'
\
-o
-path
'./vendor/k8s.io/client-go/*'
\
-o
-path
'./vendor/k8s.io/apiserver/*'
\
-o
-path
'./vendor/k8s.io/apiserver/*'
\
-o
-path
'./test/e2e_node/system/*'
\
-o
-path
'./test/e2e_node/system/*'
\
-o
-path
'./test/e2e_node/services/*'
\
-name
'*_test.go'
-print0
| xargs
-0n1
dirname
|
sed
"s|^
\.
/|
${
KUBE_GO_PACKAGE
}
/|"
|
LC_ALL
=
C
sort
-u
-name
'*_test.go'
-print0
| xargs
-0n1
dirname
|
sed
"s|^
\.
/|
${
KUBE_GO_PACKAGE
}
/|"
|
LC_ALL
=
C
sort
-u
# run tests for client-go
# run tests for client-go
...
...
test/e2e_node/dynamic_kubelet_config_test.go
View file @
ae7dccf2
...
@@ -25,7 +25,6 @@ import (
...
@@ -25,7 +25,6 @@ import (
apiv1
"k8s.io/api/core/v1"
apiv1
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
"k8s.io/kubernetes/pkg/kubelet/kubeletconfig/status"
"k8s.io/kubernetes/pkg/kubelet/kubeletconfig/status"
...
@@ -47,8 +46,6 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
...
@@ -47,8 +46,6 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
f
:=
framework
.
NewDefaultFramework
(
"dynamic-kubelet-configuration-test"
)
f
:=
framework
.
NewDefaultFramework
(
"dynamic-kubelet-configuration-test"
)
var
originalKC
*
kubeletconfig
.
KubeletConfiguration
var
originalKC
*
kubeletconfig
.
KubeletConfiguration
var
originalConfigMap
*
apiv1
.
ConfigMap
var
originalConfigMap
*
apiv1
.
ConfigMap
// local messages/reasons, depending on whether we expect the default or init config
var
curLocalMessage
,
lkgLocalMessage
,
curLocalOKReason
string
// Dummy context to prevent framework's AfterEach from cleaning up before this test's AfterEach can run
// Dummy context to prevent framework's AfterEach from cleaning up before this test's AfterEach can run
Context
(
""
,
func
()
{
Context
(
""
,
func
()
{
...
@@ -61,7 +58,6 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
...
@@ -61,7 +58,6 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
originalConfigMap
,
err
=
f
.
ClientSet
.
CoreV1
()
.
ConfigMaps
(
"kube-system"
)
.
Create
(
originalConfigMap
)
originalConfigMap
,
err
=
f
.
ClientSet
.
CoreV1
()
.
ConfigMaps
(
"kube-system"
)
.
Create
(
originalConfigMap
)
framework
.
ExpectNoError
(
err
)
framework
.
ExpectNoError
(
err
)
}
}
// make sure Dynamic Kubelet Configuration feature is enabled on the Kubelet we are about to test
// make sure Dynamic Kubelet Configuration feature is enabled on the Kubelet we are about to test
enabled
,
err
:=
isKubeletConfigEnabled
(
f
)
enabled
,
err
:=
isKubeletConfigEnabled
(
f
)
framework
.
ExpectNoError
(
err
)
framework
.
ExpectNoError
(
err
)
...
@@ -70,19 +66,6 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
...
@@ -70,19 +66,6 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
"Pass --feature-gates=DynamicKubeletConfig=true to the Kubelet to enable this feature.
\n
"
+
"Pass --feature-gates=DynamicKubeletConfig=true to the Kubelet to enable this feature.
\n
"
+
"For `make test-e2e-node`, you can set `TEST_ARGS='--feature-gates=DynamicKubeletConfig=true'`."
))
"For `make test-e2e-node`, you can set `TEST_ARGS='--feature-gates=DynamicKubeletConfig=true'`."
))
}
}
// expect different local messages/reasons depending on how Kuebelet is configured
if
v
,
ok
:=
originalKC
.
FeatureGates
[
string
(
features
.
KubeletConfigFile
)];
!
ok
||
!
v
{
// KubeletConfigFile key not found or set to false. It's still an alpha feature, so it is turned off by default.
curLocalMessage
=
status
.
CurDefaultMessage
lkgLocalMessage
=
status
.
LkgDefaultMessage
curLocalOKReason
=
status
.
CurDefaultOKReason
}
else
{
// KubeletConfigFile key was found and set to true.
curLocalMessage
=
status
.
CurInitMessage
lkgLocalMessage
=
status
.
LkgInitMessage
curLocalOKReason
=
status
.
CurInitOKReason
}
})
})
AfterEach
(
func
()
{
AfterEach
(
func
()
{
...
@@ -136,8 +119,8 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
...
@@ -136,8 +119,8 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
{
desc
:
"Node.Spec.ConfigSource is nil"
,
{
desc
:
"Node.Spec.ConfigSource is nil"
,
configSource
:
nil
,
configSource
:
nil
,
expectConfigOK
:
&
apiv1
.
NodeCondition
{
Type
:
apiv1
.
NodeConfigOK
,
Status
:
apiv1
.
ConditionTrue
,
expectConfigOK
:
&
apiv1
.
NodeCondition
{
Type
:
apiv1
.
NodeConfigOK
,
Status
:
apiv1
.
ConditionTrue
,
Message
:
curLocal
Message
,
Message
:
status
.
CurDefault
Message
,
Reason
:
curLocal
OKReason
},
Reason
:
status
.
CurDefault
OKReason
},
expectConfig
:
nil
},
expectConfig
:
nil
},
// Node.Spec.ConfigSource has all nil subfields
// Node.Spec.ConfigSource has all nil subfields
...
@@ -187,7 +170,7 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
...
@@ -187,7 +170,7 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
Namespace
:
failParseConfigMap
.
Namespace
,
Namespace
:
failParseConfigMap
.
Namespace
,
Name
:
failParseConfigMap
.
Name
}},
Name
:
failParseConfigMap
.
Name
}},
expectConfigOK
:
&
apiv1
.
NodeCondition
{
Type
:
apiv1
.
NodeConfigOK
,
Status
:
apiv1
.
ConditionFalse
,
expectConfigOK
:
&
apiv1
.
NodeCondition
{
Type
:
apiv1
.
NodeConfigOK
,
Status
:
apiv1
.
ConditionFalse
,
Message
:
lkgLocal
Message
,
Message
:
status
.
LkgDefault
Message
,
Reason
:
fmt
.
Sprintf
(
status
.
CurFailParseReasonFmt
,
failParseConfigMap
.
UID
)},
Reason
:
fmt
.
Sprintf
(
status
.
CurFailParseReasonFmt
,
failParseConfigMap
.
UID
)},
expectConfig
:
nil
},
expectConfig
:
nil
},
...
@@ -198,7 +181,7 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
...
@@ -198,7 +181,7 @@ var _ = framework.KubeDescribe("DynamicKubeletConfiguration [Feature:DynamicKube
Namespace
:
failValidateConfigMap
.
Namespace
,
Namespace
:
failValidateConfigMap
.
Namespace
,
Name
:
failValidateConfigMap
.
Name
}},
Name
:
failValidateConfigMap
.
Name
}},
expectConfigOK
:
&
apiv1
.
NodeCondition
{
Type
:
apiv1
.
NodeConfigOK
,
Status
:
apiv1
.
ConditionFalse
,
expectConfigOK
:
&
apiv1
.
NodeCondition
{
Type
:
apiv1
.
NodeConfigOK
,
Status
:
apiv1
.
ConditionFalse
,
Message
:
lkgLocal
Message
,
Message
:
status
.
LkgDefault
Message
,
Reason
:
fmt
.
Sprintf
(
status
.
CurFailValidateReasonFmt
,
failValidateConfigMap
.
UID
)},
Reason
:
fmt
.
Sprintf
(
status
.
CurFailValidateReasonFmt
,
failValidateConfigMap
.
UID
)},
expectConfig
:
nil
},
expectConfig
:
nil
},
}
}
...
...
test/e2e_node/jenkins/jenkins-ci-ubuntu.properties
View file @
ae7dccf2
...
@@ -6,7 +6,6 @@ GCE_ZONE=us-central1-f
...
@@ -6,7 +6,6 @@ GCE_ZONE=us-central1-f
GCE_PROJECT
=
k8s-jkns-ubuntu-node
GCE_PROJECT
=
k8s-jkns-ubuntu-node
CLEANUP
=
true
CLEANUP
=
true
GINKGO_FLAGS
=
'--skip="\[Flaky\]|\[Serial\]"'
GINKGO_FLAGS
=
'--skip="\[Flaky\]|\[Serial\]"'
TEST_ARGS
=
'--feature-gates=KubeletConfigFile=true'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
TIMEOUT
=
1h
TIMEOUT
=
1h
# Use the system spec defined in test/e2e_node/system/specs/gke.yaml.
# Use the system spec defined in test/e2e_node/system/specs/gke.yaml.
...
...
test/e2e_node/jenkins/jenkins-ci.properties
View file @
ae7dccf2
...
@@ -4,6 +4,5 @@ GCE_ZONE=us-central1-f
...
@@ -4,6 +4,5 @@ GCE_ZONE=us-central1-f
GCE_PROJECT
=
k8s-jkns-ci-node-e2e
GCE_PROJECT
=
k8s-jkns-ci-node-e2e
CLEANUP
=
true
CLEANUP
=
true
GINKGO_FLAGS
=
'--skip="\[Flaky\]|\[Serial\]"'
GINKGO_FLAGS
=
'--skip="\[Flaky\]|\[Serial\]"'
TEST_ARGS
=
'--feature-gates=KubeletConfigFile=true'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
TIMEOUT
=
1h
TIMEOUT
=
1h
test/e2e_node/jenkins/jenkins-flaky.properties
View file @
ae7dccf2
...
@@ -4,7 +4,7 @@ GCE_ZONE=us-central1-f
...
@@ -4,7 +4,7 @@ GCE_ZONE=us-central1-f
GCE_PROJECT
=
k8s-jkns-ci-node-e2e
GCE_PROJECT
=
k8s-jkns-ci-node-e2e
CLEANUP
=
true
CLEANUP
=
true
GINKGO_FLAGS
=
'--focus="\[Flaky\]"'
GINKGO_FLAGS
=
'--focus="\[Flaky\]"'
TEST_ARGS
=
'--feature-gates=
KubeletConfigFile=true,
DynamicKubeletConfig=true,LocalStorageCapacityIsolation=true,PodPriority=true'
TEST_ARGS
=
'--feature-gates=DynamicKubeletConfig=true,LocalStorageCapacityIsolation=true,PodPriority=true'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
PARALLELISM
=
1
PARALLELISM
=
1
TIMEOUT
=
3h
TIMEOUT
=
3h
...
...
test/e2e_node/jenkins/jenkins-pull.properties
View file @
ae7dccf2
...
@@ -4,5 +4,5 @@ GCE_ZONE=us-central1-f
...
@@ -4,5 +4,5 @@ GCE_ZONE=us-central1-f
GCE_PROJECT
=
k8s-jkns-pr-node-e2e
GCE_PROJECT
=
k8s-jkns-pr-node-e2e
CLEANUP
=
true
CLEANUP
=
true
GINKGO_FLAGS
=
'--skip="\[Flaky\]|\[Slow\]|\[Serial\]" --flakeAttempts=2'
GINKGO_FLAGS
=
'--skip="\[Flaky\]|\[Slow\]|\[Serial\]" --flakeAttempts=2'
TEST_ARGS
=
'--feature-gates=KubeletConfigFile=true'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
test/e2e_node/jenkins/jenkins-serial-ubuntu.properties
View file @
ae7dccf2
...
@@ -6,7 +6,7 @@ GCE_ZONE=us-central1-f
...
@@ -6,7 +6,7 @@ GCE_ZONE=us-central1-f
GCE_PROJECT
=
k8s-jkns-ubuntu-node-serial
GCE_PROJECT
=
k8s-jkns-ubuntu-node-serial
CLEANUP
=
true
CLEANUP
=
true
GINKGO_FLAGS
=
'--focus="\[Serial\]" --skip="\[Flaky\]|\[Benchmark\]"'
GINKGO_FLAGS
=
'--focus="\[Serial\]" --skip="\[Flaky\]|\[Benchmark\]"'
TEST_ARGS
=
'--feature-gates=
KubeletConfigFile=true,
DynamicKubeletConfig=true'
TEST_ARGS
=
'--feature-gates=DynamicKubeletConfig=true'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
PARALLELISM
=
1
PARALLELISM
=
1
TIMEOUT
=
3h
TIMEOUT
=
3h
...
...
test/e2e_node/jenkins/jenkins-serial.properties
View file @
ae7dccf2
...
@@ -4,7 +4,7 @@ GCE_ZONE=us-west1-b
...
@@ -4,7 +4,7 @@ GCE_ZONE=us-west1-b
GCE_PROJECT
=
k8s-jkns-ci-node-e2e
GCE_PROJECT
=
k8s-jkns-ci-node-e2e
CLEANUP
=
true
CLEANUP
=
true
GINKGO_FLAGS
=
'--focus="\[Serial\]" --skip="\[Flaky\]|\[Benchmark\]"'
GINKGO_FLAGS
=
'--focus="\[Serial\]" --skip="\[Flaky\]|\[Benchmark\]"'
TEST_ARGS
=
'--feature-gates=
KubeletConfigFile=true,
DynamicKubeletConfig=true'
TEST_ARGS
=
'--feature-gates=DynamicKubeletConfig=true'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
KUBELET_ARGS
=
'--cgroups-per-qos=true --cgroup-root=/'
PARALLELISM
=
1
PARALLELISM
=
1
TIMEOUT
=
3h
TIMEOUT
=
3h
test/e2e_node/services/BUILD
View file @
ae7dccf2
...
@@ -3,7 +3,6 @@ package(default_visibility = ["//visibility:public"])
...
@@ -3,7 +3,6 @@ package(default_visibility = ["//visibility:public"])
load(
load(
"@io_bazel_rules_go//go:def.bzl",
"@io_bazel_rules_go//go:def.bzl",
"go_library",
"go_library",
"go_test",
)
)
go_library(
go_library(
...
@@ -23,13 +22,9 @@ go_library(
...
@@ -23,13 +22,9 @@ go_library(
deps = [
deps = [
"//cmd/kube-apiserver/app:go_default_library",
"//cmd/kube-apiserver/app:go_default_library",
"//cmd/kube-apiserver/app/options:go_default_library",
"//cmd/kube-apiserver/app/options:go_default_library",
"//cmd/kubelet/app/options:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/controller/namespace:go_default_library",
"//pkg/controller/namespace:go_default_library",
"//pkg/features:go_default_library",
"//pkg/features: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",
"//test/e2e/framework:go_default_library",
"//test/e2e/framework:go_default_library",
"//test/e2e_node/builder:go_default_library",
"//test/e2e_node/builder:go_default_library",
"//vendor/github.com/coreos/etcd/etcdserver:go_default_library",
"//vendor/github.com/coreos/etcd/etcdserver:go_default_library",
...
@@ -38,9 +33,7 @@ go_library(
...
@@ -38,9 +33,7 @@ go_library(
"//vendor/github.com/coreos/etcd/pkg/types:go_default_library",
"//vendor/github.com/coreos/etcd/pkg/types:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/kardianos/osext:go_default_library",
"//vendor/github.com/kardianos/osext:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/k8s.io/client-go/dynamic:go_default_library",
"//vendor/k8s.io/client-go/dynamic:go_default_library",
"//vendor/k8s.io/client-go/informers:go_default_library",
"//vendor/k8s.io/client-go/informers:go_default_library",
...
@@ -61,11 +54,3 @@ filegroup(
...
@@ -61,11 +54,3 @@ filegroup(
srcs = [":package-srcs"],
srcs = [":package-srcs"],
tags = ["automanaged"],
tags = ["automanaged"],
)
)
go_test(
name = "go_default_test",
srcs = ["kubelet_test.go"],
importpath = "k8s.io/kubernetes/test/e2e_node/services",
library = ":go_default_library",
deps = ["//vendor/github.com/spf13/pflag:go_default_library"],
)
test/e2e_node/services/kubelet.go
View file @
ae7dccf2
...
@@ -27,15 +27,9 @@ import (
...
@@ -27,15 +27,9 @@ import (
"strings"
"strings"
"github.com/golang/glog"
"github.com/golang/glog"
"github.com/spf13/pflag"
"k8s.io/apimachinery/pkg/runtime"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
"k8s.io/kubernetes/cmd/kubelet/app/options"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig"
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme"
"k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1"
"k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e_node/builder"
"k8s.io/kubernetes/test/e2e_node/builder"
)
)
...
@@ -124,7 +118,6 @@ func (e *E2EServices) startKubelet() (*server, error) {
...
@@ -124,7 +118,6 @@ func (e *E2EServices) startKubelet() (*server, error) {
var
isSystemd
bool
var
isSystemd
bool
// Apply default kubelet flags.
// Apply default kubelet flags.
cmdArgs
:=
[]
string
{}
cmdArgs
:=
[]
string
{}
kubeArgs
:=
[]
string
{}
if
systemdRun
,
err
:=
exec
.
LookPath
(
"systemd-run"
);
err
==
nil
{
if
systemdRun
,
err
:=
exec
.
LookPath
(
"systemd-run"
);
err
==
nil
{
// On systemd services, detection of a service / unit works reliably while
// On systemd services, detection of a service / unit works reliably while
// detection of a process started from an ssh session does not work.
// detection of a process started from an ssh session does not work.
...
@@ -139,13 +132,13 @@ func (e *E2EServices) startKubelet() (*server, error) {
...
@@ -139,13 +132,13 @@ func (e *E2EServices) startKubelet() (*server, error) {
Name
:
"kubelet.log"
,
Name
:
"kubelet.log"
,
JournalctlCommand
:
[]
string
{
"-u"
,
unitName
},
JournalctlCommand
:
[]
string
{
"-u"
,
unitName
},
}
}
kubeArgs
=
append
(
kube
Args
,
cmdArgs
=
append
(
cmd
Args
,
"--kubelet-cgroups=/kubelet.slice"
,
"--kubelet-cgroups=/kubelet.slice"
,
"--cgroup-root=/"
,
"--cgroup-root=/"
,
)
)
}
else
{
}
else
{
cmdArgs
=
append
(
cmdArgs
,
builder
.
GetKubeletServerBin
())
cmdArgs
=
append
(
cmdArgs
,
builder
.
GetKubeletServerBin
())
kubeArgs
=
append
(
kube
Args
,
cmdArgs
=
append
(
cmd
Args
,
// TODO(random-liu): Get rid of this docker specific thing.
// TODO(random-liu): Get rid of this docker specific thing.
"--runtime-cgroups=/docker-daemon"
,
"--runtime-cgroups=/docker-daemon"
,
"--kubelet-cgroups=/kubelet"
,
"--kubelet-cgroups=/kubelet"
,
...
@@ -153,7 +146,7 @@ func (e *E2EServices) startKubelet() (*server, error) {
...
@@ -153,7 +146,7 @@ func (e *E2EServices) startKubelet() (*server, error) {
"--system-cgroups=/system"
,
"--system-cgroups=/system"
,
)
)
}
}
kubeArgs
=
append
(
kube
Args
,
cmdArgs
=
append
(
cmd
Args
,
"--kubeconfig"
,
kubeconfigPath
,
"--kubeconfig"
,
kubeconfigPath
,
"--address"
,
"0.0.0.0"
,
"--address"
,
"0.0.0.0"
,
"--port"
,
kubeletPort
,
"--port"
,
kubeletPort
,
...
@@ -182,11 +175,11 @@ func (e *E2EServices) startKubelet() (*server, error) {
...
@@ -182,11 +175,11 @@ func (e *E2EServices) startKubelet() (*server, error) {
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
DynamicKubeletConfig
)
{
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
DynamicKubeletConfig
)
{
// Enable dynamic config if the feature gate is enabled
// Enable dynamic config if the feature gate is enabled
d
ir
,
err
:=
getDynamicConfigDirectory
()
d
ynamicConfigDir
,
err
:=
getDynamicConfigDir
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
kubeArgs
=
append
(
kubeArgs
,
"--dynamic-config-dir"
,
d
ir
)
cmdArgs
=
append
(
cmdArgs
,
"--dynamic-config-dir"
,
dynamicConfigD
ir
)
}
}
// Enable kubenet by default.
// Enable kubenet by default.
...
@@ -200,40 +193,18 @@ func (e *E2EServices) startKubelet() (*server, error) {
...
@@ -200,40 +193,18 @@ func (e *E2EServices) startKubelet() (*server, error) {
return
nil
,
err
return
nil
,
err
}
}
kubeArgs
=
append
(
kube
Args
,
cmdArgs
=
append
(
cmd
Args
,
"--network-plugin=kubenet"
,
"--network-plugin=kubenet"
,
"--cni-bin-dir"
,
cniBinDir
,
"--cni-bin-dir"
,
cniBinDir
,
"--cni-conf-dir"
,
cniConfDir
)
"--cni-conf-dir"
,
cniConfDir
)
// Keep hostname override for convenience.
// Keep hostname override for convenience.
if
framework
.
TestContext
.
NodeName
!=
""
{
// If node name is specified, set hostname override.
if
framework
.
TestContext
.
NodeName
!=
""
{
// If node name is specified, set hostname override.
kubeArgs
=
append
(
kube
Args
,
"--hostname-override"
,
framework
.
TestContext
.
NodeName
)
cmdArgs
=
append
(
cmd
Args
,
"--hostname-override"
,
framework
.
TestContext
.
NodeName
)
}
}
// Override the default kubelet flags.
// Override the default kubelet flags.
kubeArgs
=
append
(
kubeArgs
,
kubeletArgs
...
)
cmdArgs
=
append
(
cmdArgs
,
kubeletArgs
...
)
// If the config file feature gate is enabled, generate the file and remove the flags it applies to
if
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
KubeletConfigFile
)
{
kc
,
other
,
err
:=
splitKubeletConfigArgs
(
kubeArgs
)
if
err
!=
nil
{
return
nil
,
err
}
// replace kubeArgs with the new command line, which has had the KubeletConfiguration flags removed
kubeArgs
=
other
path
,
err
:=
writeKubeletConfigFile
(
kc
)
if
err
!=
nil
{
return
nil
,
err
}
// ensure the test context feature gates (typically DynamicKubeletConfig and KubeletConfigFile)
// are set on the command line
kubeArgs
=
append
(
kubeArgs
,
"--feature-gates"
,
framework
.
TestContext
.
FeatureGates
)
// add the flag to load config from a file
kubeArgs
=
append
(
kubeArgs
,
"--init-config-dir"
,
filepath
.
Dir
(
path
))
}
// combine the kubelet parameters with the command
cmdArgs
=
append
(
cmdArgs
,
kubeArgs
...
)
// Adjust the args if we are running kubelet with systemd.
// Adjust the args if we are running kubelet with systemd.
if
isSystemd
{
if
isSystemd
{
...
@@ -253,94 +224,6 @@ func (e *E2EServices) startKubelet() (*server, error) {
...
@@ -253,94 +224,6 @@ func (e *E2EServices) startKubelet() (*server, error) {
return
server
,
server
.
start
()
return
server
,
server
.
start
()
}
}
// splitKubeletConfigArgs parses args onto a KubeletConfiguration object and also returns the unknown args
func
splitKubeletConfigArgs
(
args
[]
string
)
(
*
kubeletconfig
.
KubeletConfiguration
,
[]
string
,
error
)
{
kc
,
err
:=
options
.
NewKubeletConfiguration
()
if
err
!=
nil
{
return
nil
,
nil
,
err
}
fs
:=
pflag
.
NewFlagSet
(
"kubeletconfig"
,
pflag
.
ContinueOnError
)
options
.
AddKubeletConfigFlags
(
fs
,
kc
)
known
,
other
:=
splitKnownArgs
(
fs
,
args
)
if
err
:=
fs
.
Parse
(
known
);
err
!=
nil
{
return
nil
,
nil
,
err
}
return
kc
,
other
,
nil
}
// splitKnownArgs splits argument list into those known by the flagset, and those not known
// only tests for longhand args, e.g. prefixed with `--`
// TODO(mtaufen): I don't think the kubelet has any shorthand args, but if it does we will need to modify this.
func
splitKnownArgs
(
fs
*
pflag
.
FlagSet
,
args
[]
string
)
([]
string
,
[]
string
)
{
known
:=
[]
string
{}
other
:=
[]
string
{}
lastFlag
:=
len
(
args
)
for
i
:=
len
(
args
)
-
1
;
i
>=
0
;
i
--
{
if
strings
.
HasPrefix
(
args
[
i
],
"--"
)
{
if
fs
.
Lookup
(
strings
.
TrimPrefix
(
args
[
i
],
"--"
))
==
nil
{
// flag is unknown, add flag and params to other
// prepend to maintain order
other
=
append
(
append
([]
string
(
nil
),
args
[
i
:
lastFlag
]
...
),
other
...
)
// cut from known
}
else
{
// flag is known, add flag and params to known
// prepend to maintain order
known
=
append
(
append
([]
string
(
nil
),
args
[
i
:
lastFlag
]
...
),
known
...
)
}
// mark the last location where we saw a flag
lastFlag
=
i
}
}
return
known
,
other
}
// writeKubeletConfigFile writes the kubelet config file based on the args and returns the filename
func
writeKubeletConfigFile
(
internal
*
kubeletconfig
.
KubeletConfiguration
)
(
string
,
error
)
{
// extract the KubeletConfiguration and convert to versioned
versioned
:=
&
v1alpha1
.
KubeletConfiguration
{}
scheme
,
_
,
err
:=
scheme
.
NewSchemeAndCodecs
()
if
err
!=
nil
{
return
""
,
err
}
if
err
:=
scheme
.
Convert
(
internal
,
versioned
,
nil
);
err
!=
nil
{
return
""
,
err
}
// encode
encoder
,
err
:=
newKubeletConfigJSONEncoder
()
if
err
!=
nil
{
return
""
,
err
}
data
,
err
:=
runtime
.
Encode
(
encoder
,
versioned
)
if
err
!=
nil
{
return
""
,
err
}
// create the init conifg directory
dir
,
err
:=
createKubeletInitConfigDirectory
()
if
err
!=
nil
{
return
""
,
err
}
// write init config file
path
:=
filepath
.
Join
(
dir
,
"kubelet"
)
if
err
:=
ioutil
.
WriteFile
(
path
,
data
,
0755
);
err
!=
nil
{
return
""
,
err
}
return
path
,
nil
}
func
newKubeletConfigJSONEncoder
()
(
runtime
.
Encoder
,
error
)
{
_
,
kubeletCodecs
,
err
:=
scheme
.
NewSchemeAndCodecs
()
if
err
!=
nil
{
return
nil
,
err
}
mediaType
:=
"application/json"
info
,
ok
:=
runtime
.
SerializerInfoForMediaType
(
kubeletCodecs
.
SupportedMediaTypes
(),
mediaType
)
if
!
ok
{
return
nil
,
fmt
.
Errorf
(
"unsupported media type %q"
,
mediaType
)
}
return
kubeletCodecs
.
EncoderForVersion
(
info
.
Serializer
,
v1alpha1
.
SchemeGroupVersion
),
nil
}
// createPodManifestDirectory creates pod manifest directory.
// createPodManifestDirectory creates pod manifest directory.
func
createPodManifestDirectory
()
(
string
,
error
)
{
func
createPodManifestDirectory
()
(
string
,
error
)
{
cwd
,
err
:=
os
.
Getwd
()
cwd
,
err
:=
os
.
Getwd
()
...
@@ -430,7 +313,7 @@ func getCNIConfDirectory() (string, error) {
...
@@ -430,7 +313,7 @@ func getCNIConfDirectory() (string, error) {
}
}
// getDynamicConfigDir returns the directory for dynamic Kubelet configuration
// getDynamicConfigDir returns the directory for dynamic Kubelet configuration
func
getDynamicConfigDir
ectory
()
(
string
,
error
)
{
func
getDynamicConfigDir
()
(
string
,
error
)
{
cwd
,
err
:=
os
.
Getwd
()
cwd
,
err
:=
os
.
Getwd
()
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
...
@@ -438,19 +321,6 @@ func getDynamicConfigDirectory() (string, error) {
...
@@ -438,19 +321,6 @@ func getDynamicConfigDirectory() (string, error) {
return
filepath
.
Join
(
cwd
,
"dynamic-kubelet-config"
),
nil
return
filepath
.
Join
(
cwd
,
"dynamic-kubelet-config"
),
nil
}
}
// createKubeletInitConfigDirectory creates and returns the name of the directory for dynamic Kubelet configuration
func
createKubeletInitConfigDirectory
()
(
string
,
error
)
{
cwd
,
err
:=
os
.
Getwd
()
if
err
!=
nil
{
return
""
,
err
}
path
:=
filepath
.
Join
(
cwd
,
"init-kubelet-config"
)
if
err
:=
os
.
MkdirAll
(
path
,
0755
);
err
!=
nil
{
return
""
,
err
}
return
path
,
nil
}
// adjustArgsForSystemd escape special characters in kubelet arguments for systemd. Systemd
// adjustArgsForSystemd escape special characters in kubelet arguments for systemd. Systemd
// may try to do auto expansion without escaping.
// may try to do auto expansion without escaping.
func
adjustArgsForSystemd
(
args
[]
string
)
{
func
adjustArgsForSystemd
(
args
[]
string
)
{
...
...
test/e2e_node/services/kubelet_test.go
deleted
100644 → 0
View file @
1489d194
/*
Copyright 2017 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
services
import
(
"reflect"
"testing"
"github.com/spf13/pflag"
)
func
TestSplitKnownArgs
(
t
*
testing
.
T
)
{
cases
:=
[]
struct
{
desc
string
args
[]
string
fs
*
pflag
.
FlagSet
expectKnown
[]
string
expectOther
[]
string
}{
{
"splits three args:a"
,
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
func
()
*
pflag
.
FlagSet
{
fs
:=
pflag
.
NewFlagSet
(
""
,
pflag
.
ContinueOnError
)
var
a
string
fs
.
StringVar
(
&
a
,
"a"
,
a
,
""
)
return
fs
}(),
[]
string
{
"--a"
,
"a"
},
[]
string
{
"--b"
,
"b"
,
"--c"
,
"c"
},
},
{
"splits three args:b"
,
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
func
()
*
pflag
.
FlagSet
{
fs
:=
pflag
.
NewFlagSet
(
""
,
pflag
.
ContinueOnError
)
var
a
string
fs
.
StringVar
(
&
a
,
"b"
,
a
,
""
)
return
fs
}(),
[]
string
{
"--b"
,
"b"
},
[]
string
{
"--a"
,
"a"
,
"--c"
,
"c"
},
},
{
"splits three args:c"
,
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
func
()
*
pflag
.
FlagSet
{
fs
:=
pflag
.
NewFlagSet
(
""
,
pflag
.
ContinueOnError
)
var
a
string
fs
.
StringVar
(
&
a
,
"c"
,
a
,
""
)
return
fs
}(),
[]
string
{
"--c"
,
"c"
},
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
},
},
{
"splits three args:ab"
,
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
func
()
*
pflag
.
FlagSet
{
fs
:=
pflag
.
NewFlagSet
(
""
,
pflag
.
ContinueOnError
)
var
a
string
fs
.
StringVar
(
&
a
,
"a"
,
a
,
""
)
fs
.
StringVar
(
&
a
,
"b"
,
a
,
""
)
return
fs
}(),
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
},
[]
string
{
"--c"
,
"c"
},
},
{
"splits three args:bc"
,
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
func
()
*
pflag
.
FlagSet
{
fs
:=
pflag
.
NewFlagSet
(
""
,
pflag
.
ContinueOnError
)
var
a
string
fs
.
StringVar
(
&
a
,
"b"
,
a
,
""
)
fs
.
StringVar
(
&
a
,
"c"
,
a
,
""
)
return
fs
}(),
[]
string
{
"--b"
,
"b"
,
"--c"
,
"c"
},
[]
string
{
"--a"
,
"a"
},
},
{
"splits three args:ac"
,
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
func
()
*
pflag
.
FlagSet
{
fs
:=
pflag
.
NewFlagSet
(
""
,
pflag
.
ContinueOnError
)
var
a
string
fs
.
StringVar
(
&
a
,
"a"
,
a
,
""
)
fs
.
StringVar
(
&
a
,
"c"
,
a
,
""
)
return
fs
}(),
[]
string
{
"--a"
,
"a"
,
"--c"
,
"c"
},
[]
string
{
"--b"
,
"b"
},
},
{
"splits three args:abc"
,
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
func
()
*
pflag
.
FlagSet
{
fs
:=
pflag
.
NewFlagSet
(
""
,
pflag
.
ContinueOnError
)
var
a
string
fs
.
StringVar
(
&
a
,
"a"
,
a
,
""
)
fs
.
StringVar
(
&
a
,
"b"
,
a
,
""
)
fs
.
StringVar
(
&
a
,
"c"
,
a
,
""
)
return
fs
}(),
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
[]
string
{},
},
{
"splits three args:none"
,
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
pflag
.
NewFlagSet
(
""
,
pflag
.
ContinueOnError
),
[]
string
{},
[]
string
{
"--a"
,
"a"
,
"--b"
,
"b"
,
"--c"
,
"c"
},
},
}
for
_
,
c
:=
range
cases
{
t
.
Run
(
c
.
desc
,
func
(
t
*
testing
.
T
)
{
origArgs
:=
append
([]
string
(
nil
),
c
.
args
...
)
known
,
other
:=
splitKnownArgs
(
c
.
fs
,
c
.
args
)
if
!
reflect
.
DeepEqual
(
c
.
expectKnown
,
known
)
{
t
.
Errorf
(
"expect known args to be %v, got %v"
,
c
.
expectKnown
,
known
)
}
if
!
reflect
.
DeepEqual
(
c
.
expectOther
,
other
)
{
t
.
Errorf
(
"expect other args to be %v, got %v"
,
c
.
expectOther
,
other
)
}
if
!
reflect
.
DeepEqual
(
origArgs
,
c
.
args
)
{
t
.
Errorf
(
"args was mutated"
)
}
})
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment