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
12483d90
Commit
12483d90
authored
Jul 15, 2016
by
Marek Grabowski
Committed by
GitHub
Jul 15, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #28993 from kubernetes/revert-27151-gc-e2e
Revert "[garbage collector] add e2e test"
parents
87d3c747
f7124497
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
12 additions
and
223 deletions
+12
-223
common.sh
cluster/common.sh
+0
-1
configure-helper.sh
cluster/gce/gci/configure-helper.sh
+0
-2
helper.sh
cluster/gce/gci/helper.sh
+1
-0
kube-apiserver.manifest
cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest
+1
-6
kube-controller-manager.manifest
.../kube-controller-manager/kube-controller-manager.manifest
+1
-6
exceptions.txt
hack/verify-flags/exceptions.txt
+2
-4
garbagecollector.go
pkg/controller/garbagecollector/garbagecollector.go
+0
-1
garbage_collector.go
test/e2e/garbage_collector.go
+0
-197
generated_clientset.go
test/e2e/generated_clientset.go
+5
-4
pod_gc.go
test/e2e/pod_gc.go
+2
-2
No files found.
cluster/common.sh
View file @
12483d90
...
...
@@ -630,7 +630,6 @@ ENABLE_MANIFEST_URL: $(yaml-quote ${ENABLE_MANIFEST_URL:-false})
MANIFEST_URL:
$(
yaml-quote
${
MANIFEST_URL
:-})
MANIFEST_URL_HEADER:
$(
yaml-quote
${
MANIFEST_URL_HEADER
:-})
NUM_NODES:
$(
yaml-quote
${
NUM_NODES
})
ENABLE_GARBAGE_COLLECTOR:
$(
yaml-quote
${
ENABLE_GARBAGE_COLLECTOR
:-
false
})
EOF
if
[
-n
"
${
APISERVER_TEST_ARGS
:-}
"
]
;
then
cat
>>
$file
<<
EOF
...
...
cluster/gce/gci/configure-helper.sh
View file @
12483d90
...
...
@@ -585,7 +585,6 @@ function start-kube-apiserver {
params+
=
" --tls-cert-file=/etc/srv/kubernetes/server.cert"
params+
=
" --tls-private-key-file=/etc/srv/kubernetes/server.key"
params+
=
" --token-auth-file=/etc/srv/kubernetes/known_tokens.csv"
params+
=
" --enable-garbage-collector=
${
ENABLE_GARBAGE_COLLECTOR
}
"
if
[[
-n
"
${
SERVICE_CLUSTER_IP_RANGE
:-}
"
]]
;
then
params+
=
" --service-cluster-ip-range=
${
SERVICE_CLUSTER_IP_RANGE
}
"
fi
...
...
@@ -664,7 +663,6 @@ function start-kube-controller-manager {
params+
=
" --master=127.0.0.1:8080"
params+
=
" --root-ca-file=/etc/srv/kubernetes/ca.crt"
params+
=
" --service-account-private-key-file=/etc/srv/kubernetes/server.key"
params+
=
" --enable-garbage-collector=
${
ENABLE_GARBAGE_COLLECTOR
}
"
if
[[
-n
"
${
INSTANCE_PREFIX
:-}
"
]]
;
then
params+
=
" --cluster-name=
${
INSTANCE_PREFIX
}
"
fi
...
...
cluster/gce/gci/helper.sh
View file @
12483d90
...
...
@@ -59,6 +59,7 @@ function create-node-instance-template {
# It requires a whole slew of assumed variables, partially due to to
# the call to write-master-env. Listing them would be rather
# futile. Instead, we list the required calls to ensure any additional
#
# variables are set:
# ensure-temp-dir
# detect-project
...
...
cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest
View file @
12483d90
...
...
@@ -122,12 +122,7 @@
{% set log_level = pillar['api_server_test_log_level'] -%}
{% endif -%}
{% set enable_garbage_collector = "" -%}
{% if pillar['enable_garbage_collector'] is defined -%}
{% set enable_garbage_collector = "--enable-garbage-collector=" + pillar['enable_garbage_collector'] -%}
{% endif -%}
{% set params = address + " " + etcd_servers + " " + etcd_servers_overrides + " " + cloud_provider + " " + cloud_config + " " + runtime_config + " " + admission_control + " " + service_cluster_ip_range + " " + client_ca_file + basic_auth_file + " " + min_request_timeout + " " + enable_garbage_collector -%}
{% set params = address + " " + etcd_servers + " " + etcd_servers_overrides + " " + cloud_provider + " " + cloud_config + " " + runtime_config + " " + admission_control + " " + service_cluster_ip_range + " " + client_ca_file + basic_auth_file + " " + min_request_timeout -%}
{% set params = params + " " + cert_file + " " + key_file + " --secure-port=" + secure_port + token_auth_file + " " + bind_address + " " + log_level + " " + advertise_address + " " + proxy_ssh_options + authz_mode + abac_policy_file + webhook_authentication_config + webhook_authorization_config -%}
# test_args has to be kept at the end, so they'll overwrite any prior configuration
...
...
cluster/saltbase/salt/kube-controller-manager/kube-controller-manager.manifest
View file @
12483d90
...
...
@@ -27,11 +27,6 @@
{% set terminated_pod_gc = "--terminated-pod-gc-threshold=" + pillar['terminated_pod_gc_threshold'] -%}
{% endif -%}
{% set enable_garbage_collector = "" -%}
{% if pillar['enable_garbage_collector'] is defined -%}
{% set enable_garbage_collector = "--enable-garbage-collector=" + pillar['enable_garbage_collector'] -%}
{% endif -%}
{% set cloud_provider = "" -%}
{% set cloud_config = "" -%}
{% set cloud_config_mount = "" -%}
...
...
@@ -73,7 +68,7 @@
{% set log_level = pillar['controller_manager_test_log_level'] -%}
{% endif -%}
{% set params = "--master=127.0.0.1:8080" + " " + cluster_name + " " + cluster_cidr + " " + allocate_node_cidrs + " " + service_cluster_ip_range + " " + terminated_pod_gc + " " +
enable_garbage_collector + " " +
cloud_provider + " " + cloud_config + " " + service_account_key + " " + log_level + " " + root_ca_file -%}
{% set params = "--master=127.0.0.1:8080" + " " + cluster_name + " " + cluster_cidr + " " + allocate_node_cidrs + " " + service_cluster_ip_range + " " + terminated_pod_gc + " " + cloud_provider + " " + cloud_config + " " + service_account_key + " " + log_level + " " + root_ca_file -%}
# test_args has to be kept at the end, so they'll overwrite any prior configuration
...
...
hack/verify-flags/exceptions.txt
View file @
12483d90
...
...
@@ -39,10 +39,8 @@ cluster/photon-controller/util.sh: node_name=${1}
cluster/rackspace/util.sh: local node_ip=$(nova show --minimal ${NODE_NAMES[$i]} \
cluster/saltbase/salt/cluster-autoscaler/cluster-autoscaler.manifest:{% set params = pillar['autoscaler_mig_config'] + " " + cloud_config -%}
cluster/saltbase/salt/kube-admission-controls/init.sls:{% if 'LimitRanger' in pillar.get('admission_control', '') %}
cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest:{% set enable_garbage_collector = pillar['enable_garbage_collector'] -%}
cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest:{% set params = address + " " + etcd_servers + " " + etcd_servers_overrides + " " + cloud_provider + " " + cloud_config + " " + runtime_config + " " + admission_control + " " + service_cluster_ip_range + " " + client_ca_file + basic_auth_file + " " + min_request_timeout + " " + enable_garbage_collector -%}
cluster/saltbase/salt/kube-controller-manager/kube-controller-manager.manifest:{% set enable_garbage_collector = pillar['enable_garbage_collector'] -%}
cluster/saltbase/salt/kube-controller-manager/kube-controller-manager.manifest:{% set params = "--master=127.0.0.1:8080" + " " + cluster_name + " " + cluster_cidr + " " + allocate_node_cidrs + " " + service_cluster_ip_range + " " + terminated_pod_gc + " " + enable_garbage_collector + " " + cloud_provider + " " + cloud_config + " " + service_account_key + " " + log_level + " " + root_ca_file -%}
cluster/saltbase/salt/kube-apiserver/kube-apiserver.manifest:{% set params = address + " " + etcd_servers + " " + etcd_servers_overrides + " " + cloud_provider + " " + cloud_config + " " + runtime_config + " " + admission_control + " " + service_cluster_ip_range + " " + client_ca_file + basic_auth_file + " " + min_request_timeout -%}
cluster/saltbase/salt/kube-controller-manager/kube-controller-manager.manifest:{% set params = "--master=127.0.0.1:8080" + " " + cluster_name + " " + cluster_cidr + " " + allocate_node_cidrs + " " + service_cluster_ip_range + " " + terminated_pod_gc + " " + cloud_provider + " " + cloud_config + " " + service_account_key + " " + log_level + " " + root_ca_file -%}
cluster/saltbase/salt/kube-proxy/kube-proxy.manifest: {% set api_servers_with_port = api_servers + ":6443" -%}
cluster/saltbase/salt/kube-proxy/kube-proxy.manifest: {% set api_servers_with_port = api_servers -%}
cluster/saltbase/salt/kube-proxy/kube-proxy.manifest: {% set cluster_cidr=" --cluster-cidr=" + pillar['cluster_cidr'] %}
...
...
pkg/controller/garbagecollector/garbagecollector.go
View file @
12483d90
...
...
@@ -684,7 +684,6 @@ func (gc *GarbageCollector) processItem(item *node) error {
}
func
(
gc
*
GarbageCollector
)
Run
(
workers
int
,
stopCh
<-
chan
struct
{})
{
glog
.
V
(
0
)
.
Infof
(
"GarbageCollector is starting running!"
)
for
_
,
monitor
:=
range
gc
.
monitors
{
go
monitor
.
controller
.
Run
(
stopCh
)
}
...
...
test/e2e/garbage_collector.go
deleted
100644 → 0
View file @
87d3c747
/*
Copyright 2016 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
e2e
import
(
"fmt"
"time"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/v1"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
"k8s.io/kubernetes/pkg/util/wait"
"k8s.io/kubernetes/test/e2e/framework"
.
"github.com/onsi/ginkgo"
)
func
getOrphanOptions
()
*
api
.
DeleteOptions
{
var
trueVar
=
true
return
&
api
.
DeleteOptions
{
OrphanDependents
:
&
trueVar
}
}
func
getNonOrphanOptions
()
*
api
.
DeleteOptions
{
var
falseVar
=
false
return
&
api
.
DeleteOptions
{
OrphanDependents
:
&
falseVar
}
}
func
newOwnerRC
(
f
*
framework
.
Framework
,
name
string
)
*
v1
.
ReplicationController
{
var
replicas
int32
replicas
=
2
return
&
v1
.
ReplicationController
{
TypeMeta
:
unversioned
.
TypeMeta
{
Kind
:
"ReplicationController"
,
APIVersion
:
"v1"
,
},
ObjectMeta
:
v1
.
ObjectMeta
{
Namespace
:
f
.
Namespace
.
Name
,
Name
:
name
,
},
Spec
:
v1
.
ReplicationControllerSpec
{
Replicas
:
&
replicas
,
Selector
:
map
[
string
]
string
{
"app"
:
"gc-test"
},
Template
:
&
v1
.
PodTemplateSpec
{
ObjectMeta
:
v1
.
ObjectMeta
{
Labels
:
map
[
string
]
string
{
"app"
:
"gc-test"
},
},
Spec
:
v1
.
PodSpec
{
Containers
:
[]
v1
.
Container
{
{
Name
:
"nginx"
,
Image
:
"gcr.io/google_containers/nginx:1.7.9"
,
},
},
},
},
},
}
}
// verifyRemainingObjects verifies if the number of the remaining replication
// controllers and pods are rcNum and podNum. It returns error if the
// communication with the API server fails.
func
verifyRemainingObjects
(
f
*
framework
.
Framework
,
clientSet
clientset
.
Interface
,
rcNum
,
podNum
int
)
(
bool
,
error
)
{
rcClient
:=
clientSet
.
Core
()
.
ReplicationControllers
(
f
.
Namespace
.
Name
)
pods
,
err
:=
clientSet
.
Core
()
.
Pods
(
f
.
Namespace
.
Name
)
.
List
(
api
.
ListOptions
{})
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"Failed to list pods: %v"
,
err
)
}
var
ret
=
true
if
len
(
pods
.
Items
)
!=
podNum
{
ret
=
false
By
(
fmt
.
Sprintf
(
"expected %d pods, got %d pods"
,
podNum
,
len
(
pods
.
Items
)))
}
rcs
,
err
:=
rcClient
.
List
(
api
.
ListOptions
{})
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"Failed to list replication controllers: %v"
,
err
)
}
if
len
(
rcs
.
Items
)
!=
rcNum
{
ret
=
false
By
(
fmt
.
Sprintf
(
"expected %d RCs, got %d RCs"
,
rcNum
,
len
(
rcs
.
Items
)))
}
return
ret
,
nil
}
var
_
=
framework
.
KubeDescribe
(
"Garbage collector"
,
func
()
{
f
:=
framework
.
NewDefaultFramework
(
"gc"
)
It
(
"[Feature:GarbageCollector] should delete pods created by rc when not orphaning"
,
func
()
{
clientSet
:=
f
.
Clientset_1_3
rcClient
:=
clientSet
.
Core
()
.
ReplicationControllers
(
f
.
Namespace
.
Name
)
podClient
:=
clientSet
.
Core
()
.
Pods
(
f
.
Namespace
.
Name
)
rcName
:=
"simpletest.rc"
rc
:=
newOwnerRC
(
f
,
rcName
)
By
(
"create the rc"
)
rc
,
err
:=
rcClient
.
Create
(
rc
)
if
err
!=
nil
{
framework
.
Failf
(
"Failed to create replication controller: %v"
,
err
)
}
// wait for rc to create some pods
if
err
:=
wait
.
Poll
(
5
*
time
.
Second
,
30
*
time
.
Second
,
func
()
(
bool
,
error
)
{
pods
,
err
:=
podClient
.
List
(
api
.
ListOptions
{})
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"Failed to list pods: %v"
,
err
)
}
// We intentionally don't wait the number of pods to reach
// rc.Spec.Replicas. We want to see if the garbage collector and the
// rc manager work properly if the rc is deleted before it reaches
// stasis.
if
len
(
pods
.
Items
)
>
0
{
return
true
,
nil
}
else
{
return
false
,
nil
}
});
err
!=
nil
{
framework
.
Failf
(
"failed to wait for the rc to create some pods: %v"
,
err
)
}
By
(
"delete the rc"
)
deleteOptions
:=
getNonOrphanOptions
()
deleteOptions
.
Preconditions
=
api
.
NewUIDPreconditions
(
string
(
rc
.
UID
))
if
err
:=
rcClient
.
Delete
(
rc
.
ObjectMeta
.
Name
,
deleteOptions
);
err
!=
nil
{
framework
.
Failf
(
"failed to delete the rc: %v"
,
err
)
}
By
(
"wait for all pods to be garbage collected"
)
// wait for the RCs and Pods to reach the expected numbers.
if
err
:=
wait
.
Poll
(
5
*
time
.
Second
,
60
*
time
.
Second
,
func
()
(
bool
,
error
)
{
return
verifyRemainingObjects
(
f
,
clientSet
,
0
,
0
)
});
err
!=
nil
{
framework
.
Failf
(
"failed to wait for all pods to be deleted: %v"
,
err
)
remainingPods
,
err
:=
podClient
.
List
(
api
.
ListOptions
{})
if
err
!=
nil
{
framework
.
Failf
(
"failed to list pods post mortem: %v"
,
err
)
}
else
{
framework
.
Failf
(
"remaining pods are: %#v"
,
remainingPods
)
}
}
})
It
(
"[Feature:GarbageCollector] should orphan pods created by rc"
,
func
()
{
clientSet
:=
f
.
Clientset_1_3
rcClient
:=
clientSet
.
Core
()
.
ReplicationControllers
(
f
.
Namespace
.
Name
)
podClient
:=
clientSet
.
Core
()
.
Pods
(
f
.
Namespace
.
Name
)
rcName
:=
"simpletest.rc"
rc
:=
newOwnerRC
(
f
,
rcName
)
By
(
"create the rc"
)
rc
,
err
:=
rcClient
.
Create
(
rc
)
if
err
!=
nil
{
framework
.
Failf
(
"Failed to create replication controller: %v"
,
err
)
}
// wait for rc to create some pods
if
err
:=
wait
.
Poll
(
5
*
time
.
Second
,
30
*
time
.
Second
,
func
()
(
bool
,
error
)
{
rc
,
err
:=
rcClient
.
Get
(
rc
.
Name
)
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"Failed to get rc: %v"
,
err
)
}
if
rc
.
Status
.
Replicas
==
*
rc
.
Spec
.
Replicas
{
return
true
,
nil
}
else
{
return
false
,
nil
}
});
err
!=
nil
{
framework
.
Failf
(
"failed to wait for the rc.Status.Replicas to reach rc.Spec.Replicas: %v"
,
err
)
}
By
(
"delete the rc"
)
deleteOptions
:=
getOrphanOptions
()
deleteOptions
.
Preconditions
=
api
.
NewUIDPreconditions
(
string
(
rc
.
UID
))
if
err
:=
rcClient
.
Delete
(
rc
.
ObjectMeta
.
Name
,
deleteOptions
);
err
!=
nil
{
framework
.
Failf
(
"failed to delete the rc: %v"
,
err
)
}
By
(
"wait for 30 seconds to see if the garbage collector mistakenly deletes the pods"
)
if
err
:=
wait
.
Poll
(
5
*
time
.
Second
,
30
*
time
.
Second
,
func
()
(
bool
,
error
)
{
pods
,
err
:=
podClient
.
List
(
api
.
ListOptions
{})
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"Failed to list pods: %v"
,
err
)
}
if
e
,
a
:=
int
(
*
(
rc
.
Spec
.
Replicas
)),
len
(
pods
.
Items
);
e
!=
a
{
return
false
,
fmt
.
Errorf
(
"expect %d pods, got %d pods"
,
e
,
a
)
}
return
false
,
nil
});
err
!=
nil
&&
err
!=
wait
.
ErrWaitTimeout
{
framework
.
Failf
(
"%v"
,
err
)
}
})
})
test/e2e/generated_clientset.go
View file @
12483d90
...
...
@@ -17,6 +17,7 @@ limitations under the License.
package
e2e
import
(
"fmt"
"strconv"
"time"
...
...
@@ -70,7 +71,7 @@ func observePodCreation(w watch.Interface) {
framework
.
Failf
(
"Failed to observe pod creation: %v"
,
event
)
}
case
<-
time
.
After
(
framework
.
PodStartTimeout
)
:
framework
.
Failf
(
"Timeout while waiting for pod creation"
)
Fail
(
"Timeout while waiting for pod creation"
)
}
}
...
...
@@ -90,7 +91,7 @@ func observeObjectDeletion(w watch.Interface) (obj runtime.Object) {
}
}
if
!
deleted
{
framework
.
Failf
(
"Failed to observe pod deletion"
)
Fail
(
"Failed to observe pod deletion"
)
}
return
}
...
...
@@ -163,7 +164,7 @@ var _ = framework.KubeDescribe("Generated release_1_2 clientset", func() {
options
=
api
.
ListOptions
{
LabelSelector
:
selector
}
pods
,
err
=
podClient
.
List
(
options
)
if
err
!=
nil
{
framework
.
Failf
(
"Failed to list pods to verify deletion: %v"
,
err
)
Fail
(
fmt
.
Sprintf
(
"Failed to list pods to verify deletion: %v"
,
err
)
)
}
Expect
(
len
(
pods
.
Items
))
.
To
(
Equal
(
0
))
})
...
...
@@ -237,7 +238,7 @@ var _ = framework.KubeDescribe("Generated release_1_3 clientset", func() {
options
=
api
.
ListOptions
{
LabelSelector
:
selector
}
pods
,
err
=
podClient
.
List
(
options
)
if
err
!=
nil
{
framework
.
Failf
(
"Failed to list pods to verify deletion: %v"
,
err
)
Fail
(
fmt
.
Sprintf
(
"Failed to list pods to verify deletion: %v"
,
err
)
)
}
Expect
(
len
(
pods
.
Items
))
.
To
(
Equal
(
0
))
})
...
...
test/e2e/pod_gc.go
View file @
12483d90
...
...
@@ -31,8 +31,8 @@ import (
// This test requires that --terminated-pod-gc-threshold=100 be set on the controller manager
//
// Slow by design (7 min)
var
_
=
framework
.
KubeDescribe
(
"
Pod garbage collector [Feature:Pod
GarbageCollector] [Slow]"
,
func
()
{
f
:=
framework
.
NewDefaultFramework
(
"
pod-
garbage-collector"
)
var
_
=
framework
.
KubeDescribe
(
"
Garbage collector [Feature:
GarbageCollector] [Slow]"
,
func
()
{
f
:=
framework
.
NewDefaultFramework
(
"garbage-collector"
)
It
(
"should handle the creation of 1000 pods"
,
func
()
{
var
count
int
for
count
<
1000
{
...
...
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