Commit Graph

64 Commits

Author SHA1 Message Date
Antonio Ojea
76a9c8695a Revert "add e2e test for Service ExternalIPs"
This reverts commit 0ed8fd6dc9.

It turns out that ExternalIPs are not allowed to be reachable from
pods until the IP is present in the node.
However, due to a kube-proxy limitation it was working in environment
that used CNIs without bridges for the pods.
2020-11-05 10:35:24 +01:00
DP19
0ed8fd6dc9 add e2e test for Service ExternalIPs 2020-11-02 13:57:23 -05:00
Antonio Ojea
f31839acea e2e services wait for endpoint and endpoint slices
Since 1.19 endpoint slices is enabled by default, so all the e2e
tests should consider them.

The e2e networking tests for services use the jig object for
all the tests, but was not taking into account endpoint slices.

This considers endpoints slices for the method waitForAvailableEndpoint()

 Date:      Sun Aug 9 12:34:06 2020 +0200
2020-08-12 14:13:42 +02:00
knight42
1b9f11c9a9
fix(e2e): access nodes via test container in LB network tests
Signed-off-by: knight42 <anonymousknight96@gmail.com>
2020-06-24 19:21:44 +08:00
Mateusz Matejczyk
af00593679 Revert "fix(e2e): access nodes via test container in LB network tests"
This reverts commit 708fb6b457, https://github.com/kubernetes/kubernetes/pull/91559

It looks like the PR has broken other network tests - https://k8s-testgrid.appspot.com/sig-scalability-gce#gce-master-scale-correctness
2020-06-15 08:42:17 +02:00
Kubernetes Prow Robot
84d745ffe4
Merge pull request #91559 from knight42/fix/e2e
e2e: access nodes via a test container
2020-06-10 04:39:31 -07:00
Kubernetes Prow Robot
089e8f48f2
Merge pull request #90720 from claudiubelu/tests/fqdn-svc-names
tests: Check FQDN for external services on Windows
2020-06-10 04:38:37 -07:00
Claudiu Belu
2a07efe925 tests: Check FQDN for external services on Windows
Windows does not support partially qualified domain names, which is why the test can fail.

Additionally, because nslookup may return 0 on Windows, even if the given DNS name was not
found, this issue was not observed until recently. We're now checking stderr as well.
2020-06-09 02:36:20 -07:00
knight42
708fb6b457
fix(e2e): access nodes via test container in LB network tests
Signed-off-by: knight42 <anonymousknight96@gmail.com>
2020-06-09 14:32:31 +08:00
Laszlo Janosi
af33c2f7e8 Add CreateSCTPServiceWithPort() to the framework in preparation for the coming SCTP e2e tests 2020-04-22 15:59:59 +00:00
Kenichi Omichi
76833e2c37 Make WaitForAvailableEndpoint() local
WaitForAvailableEndpoint() is only used in e2eservice.
So this makes the function() local clearly.
2020-04-10 18:08:13 +00:00
wojtekt
a20646ef8a Hide constants to force using functions instead 2020-04-02 17:19:41 +02:00
wojtekt
268b51d023 Cleanup and fix networking test timeouts for large clusters 2020-04-02 17:19:41 +02:00
tanjunchen
9b9b27d768 test/e2e/framework /service and /pv:remove direct dependency to k8s.io/kubernetes/pkg/ 2020-03-27 01:11:13 +08:00
drfish
f5450543e0 Remove framework.go's dependency on e2e node sub fw 2020-03-20 10:01:51 +08:00
Mike Danese
c58e69ec79 automated refactor 2020-03-05 14:59:46 -08:00
tanjunchen
b63be6a46d test/e2e/framework/service/:simplify function CreateTCPService 2020-03-01 22:33:42 +08:00
Anish Ramasekar
c811fc58ef
check ip family for node port connectivity test 2020-02-21 14:43:06 -08:00
Mike Danese
25651408ae generated: run refactor 2020-02-08 12:30:21 -05:00
Mike Danese
3aa59f7f30 generated: run refactor 2020-02-07 18:16:47 -08:00
Kubernetes Prow Robot
4158e7c1de
Merge pull request #85123 from danielqsj/apierrs
Unify aliases for "k8s.io/apimachinery/pkg/api/errors"
2019-12-26 17:59:38 -08:00
danielqsj
6596a14d39 add missing alias of api errors under test 2019-12-26 17:29:38 +08:00
tanjunchen
2af5967310 move func EnableAndDisableInternalLB from test/e2e/framework/service to test/e2e/network 2019-12-26 16:30:06 +08:00
Jordan Liggitt
2164157113 Make e2e scale updates unconditional 2019-12-16 15:46:35 -05:00
clarklee92
c4ad07b0b1 e2e: move funs of framework/service to e2e/network
Signed-off-by: clarklee92 <clarklee1992@hotmail.com>
2019-12-11 20:13:34 +08:00
Rob Scott
57b538e657
Increasing LoadBalancerPollTimeout from 15 to 22 minutes
Some related tests were flaking as a result of GCP LBs potentially
taking longer to update than 15 minutes.
2019-12-09 10:46:22 -08:00
Kubernetes Prow Robot
688149a0c6
Merge pull request #84613 from MorrisLaw/breakout-kubectl-from-utils
move KubectlCmd out of utils into its own package
2019-12-06 15:51:53 -08:00
MorrisLaw
b85adbf1fd moved WriteFileViaContainer and ReadFileViaContainer to kubectl_utils 2019-12-04 20:31:57 +00:00
Nan Yu
1fb0dd4ec5 Rename PodDisruptionsAllowed to DisruptionsAllowed in type PodDisruptionBudgetStatus 2019-12-03 14:26:35 -08:00
SataQiu
50bc528a7e e2e: move LogFailedContainers out of e2e test framework util.go 2019-11-15 10:21:26 +08:00
Kubernetes Prow Robot
dda78d59be
Merge pull request #84379 from oomichi/e2e-network
Separate e2enetwork from e2e core framework
2019-10-31 02:55:37 -07:00
Kubernetes Prow Robot
aae45e8dee
Merge pull request #84238 from danwinship/affinity-slower
Make e2eservice.CheckAffinity wait longer, to avoid flakes
2019-10-28 11:58:59 -07:00
Kenichi Omichi
5d6faaddf6 Separate e2enetwork from e2e core framework
networking_utils.go is only for network tests and it is nice to
separate it from the core framework for easy maintenance.
2019-10-25 17:58:20 +00:00
Kenichi Omichi
a74b63d335 Move PokeUDP() to e2e service subpkg
PokeUDP() is used at e2e service subpackage only, so this moves the
function and the related code to the subpackage for making e2e core
framework small.
2019-10-24 22:49:35 +00:00
Dan Winship
dde075ffe5 Fix service sanity check after jig.ChangeServiceType 2019-10-24 08:58:02 -04:00
Kubernetes Prow Robot
b75e2d84c1
Merge pull request #84229 from wojtek-t/fix_networking_tests
Fix and clean up timeouts for networking tests in large clusters
2019-10-23 12:52:02 -07:00
Dan Winship
cc8d3335b7 Make e2eservice.CheckAffinity wait longer, to avoid flakes 2019-10-23 10:28:54 -04:00
wojtekt
bf34ba0cdf Fix timeouts for networking tests in large clusters 2019-10-23 14:44:45 +02:00
Dan Winship
6a5caea2f6 Comment out an e2eservice sanity check for now 2019-10-22 10:27:51 -04:00
Dan Winship
0aae11db48 Fix sanity-checking of LoadBalancer services in e2eservice.TestJig 2019-10-21 10:33:38 -04:00
Dan Winship
52b366457f Add Namespace to e2eservice.TestJig, make all methods use jig namespace and name
Many TestJig methods made the caller pass a serviceName argument, even
though the jig already has a name, and every caller was passing the
same name to each function as they had passed to NewTestJig().

Likewise, many methods made the caller pass a namespace argument, but
only a single test used more than one namespace, and it can easily be
rewritten to use two test jigs as well.
2019-10-18 08:37:19 -04:00
Dan Winship
a0ad420018 Make e2eservice.TestJig methods return errors rather than failing
This is the preferred style for framework methods, and it lets us
write tests to confirm that certain things *don't* work.
2019-10-18 08:36:40 -04:00
Dan Winship
4dcc6229b1 Call jig.SanityCheckService automatically after changes 2019-10-18 08:35:55 -04:00
Dan Winship
85ebedd93e Remove an unneccessary e2eservice.TestJig method 2019-10-17 21:47:34 -04:00
Miciah Masters
980b6406b2 Prefer to delete doubled-up pods of a ReplicaSet
When scaling down a ReplicaSet, delete doubled up replicas first, where a
"doubled up replica" is defined as one that is on the same node as an
active replica belonging to a related ReplicaSet.  ReplicaSets are
considered "related" if they have a common controller (typically a
Deployment).

The intention of this change is to make a rolling update of a Deployment
scale down the old ReplicaSet as it scales up the new ReplicaSet by
deleting pods from the old ReplicaSet that are colocated with ready pods of
the new ReplicaSet.  This change in the behavior of rolling updates can be
combined with pod affinity rules to preserve the locality of a Deployment's
pods over rollout.

A specific scenario that benefits from this change is when a Deployment's
pods are exposed by a Service that has type "LoadBalancer" and external
traffic policy "Local".  In this scenario, the load balancer uses health
checks to determine whether it should forward traffic for the Service to a
particular node.  If the node has no local endpoints for the Service, the
health check will fail for that node.  Eventually, the load balancer will
stop forwarding traffic to that node.  In the meantime, the service proxy
drops traffic for that Service.  Thus, in order to reduce risk of dropping
traffic during a rolling update, it is desirable preserve node locality of
endpoints.

* pkg/controller/controller_utils.go (ActivePodsWithRanks): New type to
sort pods using a given ranking.
* pkg/controller/controller_utils_test.go (TestSortingActivePodsWithRanks):
New test for ActivePodsWithRanks.
* pkg/controller/replicaset/replica_set.go
(getReplicaSetsWithSameController): New method.  Given a ReplicaSet, return
all ReplicaSets that have the same owner.
(manageReplicas): Call getIndirectlyRelatedPods, and pass its result to
getPodsToDelete.
(getIndirectlyRelatedPods): New method.  Given a ReplicaSet, return all
pods that are owned by any ReplicaSet with the same owner.
(getPodsToDelete): Add an argument for related pods.  Use related pods and
the new getPodsRankedByRelatedPodsOnSameNode function to take into account
whether a pod is doubled up when sorting pods for deletion.
(getPodsRankedByRelatedPodsOnSameNode): New function.  Return an
ActivePodsWithRanks value that wraps the given slice of pods and computes
ranks where each pod's rank is equal to the number of active related pods
that are colocated on the same node.
* pkg/controller/replicaset/replica_set_test.go (newReplicaSet): Set
OwnerReferences on the ReplicaSet.
(newPod): Set a unique UID on the pod.
(byName): New type to sort pods by name.
(TestGetReplicaSetsWithSameController): New test for
getReplicaSetsWithSameController.
(TestRelatedPodsLookup): New test for getIndirectlyRelatedPods.
(TestGetPodsToDelete): Augment the "various pod phases and conditions, diff
= len(pods)" test case to ensure that scale-down still selects doubled-up
pods if there are not enough other pods to scale down.  Add a "various pod
phases and conditions, diff = len(pods), relatedPods empty" test case to
verify that getPodsToDelete works even if related pods could not be
determined.  Add a "ready and colocated with another ready pod vs not
colocated, diff < len(pods)" test case to verify that a doubled-up pod gets
preferred for deletion.  Augment the "various pod phases and conditions,
diff < len(pods)" test case to ensure that not-ready pods are preferred
over ready but doubled-up pods.
* pkg/controller/replicaset/BUILD: Regenerate.
* test/e2e/apps/deployment.go
(testRollingUpdateDeploymentWithLocalTrafficLoadBalancer): New end-to-end
test.  Create a deployment with a rolling update strategy and affinity
rules and a load balancer with "Local" external traffic policy, and verify
that set of nodes with local endponts for the service remains unchanged
during rollouts.
(setAffinity): New helper, used by
testRollingUpdateDeploymentWithLocalTrafficLoadBalancer.
* test/e2e/framework/service/jig.go (GetEndpointNodes): Factor building the
set of node names out...
(GetEndpointNodeNames): ...into this new method.
2019-10-17 11:52:32 -04:00
Mayank Gaikwad
99475f9499 Update e2e testing nodePort service listening on same port but different protocols 2019-09-28 06:36:27 +05:30
Dan Winship
3c445b2ad0 Add e2enode.GetBoundedReadySchedulableNodes, replace some uses of framework.GetReadySchedulableNodesOrDie
For tests that want at-most-N nodes
2019-09-24 13:03:40 -04:00
Dan Winship
71b02dd422 Fix up e2enode.GetReadySchedulableNodes, replace many uses of framework.GetReadySchedulableNodesOrDie
Remove the "OrDie" from the name (since it doesn't "or die") and add
an extra check that there is at least 1 node available, since many
callers already did that themselves, and many others should have.
2019-09-24 13:03:39 -04:00
Kubernetes Prow Robot
439e92b0c7
Merge pull request #82053 from tedyu/svc-update-break
Break out of loop when finalizer is found
2019-09-11 18:27:04 -07:00
Dan Winship
c921c6893b inline e2eservice.CreatePausePodDeployment into tests
This isn't a generically-useful helper; it's specific to 2 test cases.
2019-09-05 11:43:42 -04:00