Commit Graph

36669 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
e129a6bc3f Merge pull request #80004 from Miciah/prefer-to-delete-doubled-up-pods-of-a-replicaset
Prefer to delete doubled-up pods of a ReplicaSet
2019-10-17 15:09:58 -07:00
Sean Sullivan
37fca51d74 Relocate tableprinter tests (#84027)
* Moves TestPrintUnstructuredObject to tableprinter_test.go

* Move TestUnknownTypePrinting to correct location of tableprinter_test.go

* Removes NewTablePrinter from TestCustomTypePrinting
2019-10-17 09:52:53 -07: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
Miciah Masters
865c3c5670 TestGetPodsToDelete: Use field names in test cases
* pkg/controller/replicaset/replica_set_test.go (TestGetPodsToDelete): Use
explicit field names in declarations of test cases.
2019-10-17 11:50:09 -04:00
Kubernetes Prow Robot
fef819254a Merge pull request #83998 from draveness/feature/node-affinity-score-plugin
feat(scheduler): implement node affinity as score plugin
2019-10-17 08:24:38 -07:00
Kubernetes Prow Robot
fa99d4068b Merge pull request #83466 from wongma7/block-reconstruct
Fix AWS block volume reconstruction to be like file
2019-10-17 03:18:51 -07:00
draveness
3d74da4d53 feat(scheduler): implement node affinity as score plugin 2019-10-17 17:02:10 +08:00
Kubernetes Prow Robot
bdc3f96838 Merge pull request #83989 from wojtek-t/remove_coordination_v1beta1
Swtich nodelifecyclecontroller to coordination/v1
2019-10-17 01:47:29 -07:00
Kubernetes Prow Robot
3719fcdffa Merge pull request #82072 from draveness/feature/use-context-instead-of-channel
feat(scheduler): use context in scheduler package
2019-10-17 01:46:39 -07:00
Kubernetes Prow Robot
6a5f0e6eda Merge pull request #81348 from yastij/code-org-service-controller
move service helpers to k8s.io/cloud-provider
2019-10-17 00:20:38 -07:00
Kubernetes Prow Robot
bc25814fb9 Merge pull request #84028 from ahg-g/ahg-hasfilter
make sure filters are executed when no predicates configured
2019-10-16 22:25:52 -07:00
Hongwei Yu
7574f95f7d optimize comments on exported constants (#83875)
* optimize comments on exported constants

* remove package in hack/.golint_failures are passing golint
2019-10-16 22:25:30 -07:00
Kubernetes Prow Robot
c63ec82490 Merge pull request #75190 from deads2k/kubelet-timeout
set backup value to ensure connections against kubelets eventually close
2019-10-16 22:24:38 -07:00
Abdullah Gharaibeh
17a6a7914c make sure filters are executed when no predicates configured 2019-10-16 21:27:57 -04:00
draveness
47a6c5b693 feat(scheduler): use context in the scheduler package
+ Use context instead of stopCh
+ Add context to the scheduling framework interface
2019-10-17 09:03:55 +08:00
Kubernetes Prow Robot
f7091992c0 Merge pull request #83577 from liu-cong/queue-metrics
Add incoming pod metrics to scheduler queue.
2019-10-16 17:34:39 -07:00
Matthew Wong
82786ff720 Fix AWS block volume reconstruction to be like file 2019-10-16 14:27:57 -07:00
Kubernetes Prow Robot
cb19b56831 Merge pull request #83419 from deads2k/insecure-backend-proxy
Insecure backend proxy
2019-10-16 13:58:38 -07:00
Kubernetes Prow Robot
0e2383df15 Merge pull request #83893 from draveness/feature/node-prefer-avoid-pods
feat(scheduler): implement NodePreferAvoidPods as score plugin
2019-10-16 11:37:30 -07:00
Cong Liu
fc226e0670 Add incoming pod metrics to scheduler queue. 2019-10-16 14:26:16 -04:00
David Eads
ff689ce3de set backup value to ensure connections against kubelets eventually close 2019-10-16 13:39:14 -04:00
Kubernetes Prow Robot
064458de46 Merge pull request #83951 from zouyee/pdbtomeb
add tombstones handle for pdb
2019-10-16 09:36:36 -07:00
Kubernetes Prow Robot
99ad2f4303 Merge pull request #83921 from ahg-g/ahg-nodelist
Move scheduler cache ListNodes interface to snapshot
2019-10-16 09:35:09 -07:00
Kubernetes Prow Robot
78abdf5375 Merge pull request #83902 from gongguan/remove_duplicate_code
remove duplicate code
2019-10-16 09:34:22 -07:00
Kubernetes Prow Robot
d720a2269a Merge pull request #83802 from seans3/rewrite-printer-tests
Rewrite printer tests
2019-10-16 09:33:42 -07:00
David Eads
867ee1d5ff add insecurebackendproxy 2019-10-16 11:43:17 -04:00
Yassine TIJANI
d796baea27 move service helpers to k8s.io/cloud-provider
Signed-off-by: Yassine TIJANI <ytijani@vmware.com>
2019-10-16 14:12:11 +02:00
wojtekt
cf9203501e Swtich nodelifecyclecontroller to coordination/v1 2019-10-16 10:59:02 +02:00
Kubernetes Prow Robot
f64c631cd7 Merge pull request #83867 from yutedz/snapshot-restore-err
Check error return from snapshot Restore
2019-10-15 23:06:59 -07:00
Kubernetes Prow Robot
112bdfb7c0 Merge pull request #83862 from mrbobbytables/update-controller-network-owners
Prune inactive owners from pkg/controller/* network related OWNERS files
2019-10-15 23:06:49 -07:00
Kubernetes Prow Robot
ed6b07248b Merge pull request #83861 from mrbobbytables/update-kubelet-network-owners
Prune inactive owners from pkg/kubelet/* network related OWNERS files.
2019-10-15 23:06:40 -07:00
Kubernetes Prow Robot
63cf2e260b Merge pull request #83819 from mrbobbytables/emeritus-jbeda
Move jbeda to emeritus status.
2019-10-15 23:06:20 -07:00
Kubernetes Prow Robot
bb6166419a Merge pull request #83644 from danwinship/userspace-proxy-logging
Don't log about deleting non-existent affinity entries in userspace OnEndpointsAdd
2019-10-15 23:05:38 -07:00
Kubernetes Prow Robot
1552ba6b00 Merge pull request #83569 from liu-cong/framework-metrics
Add metrics for scheduler framework.
2019-10-15 23:05:28 -07:00
Kubernetes Prow Robot
a7b3114c88 Merge pull request #83553 from rikatz/issue77493-part1
Improve IPVS Module loader logic
2019-10-15 23:05:13 -07:00
Kubernetes Prow Robot
af6f302e46 Merge pull request #83498 from danwinship/proxy-health
Fix kube-proxy healthz server for proxier sync loop changes
2019-10-15 23:04:58 -07:00
Kubernetes Prow Robot
30ba9f6548 Merge pull request #83206 from robscott/endpointslice-proxy-endpointchange-perf
Reworking kube-proxy to only compute endpointChanges on apply
2019-10-15 23:04:10 -07:00
Sean Sullivan
30d8a93768 Cleanup printer test package.
Updates internalversion BUILD file dependencies

Removes pkg/printers/internalversion from staticcheck failures
2019-10-15 18:13:00 -07:00
Sean Sullivan
cc56738a9e Removes unnecessary/irrelevant tests
Remove test TestPrintPodTable

Removes test TestPrintPodShowLabels
2019-10-15 17:54:36 -07:00
Sean Sullivan
6ced323a94 Adds missing tests.
Added test TestPrintEvent()

Added test TestPrintNamespace()

Added test TestPrintSecret()

Added test TestPrintServiceAccount()

Added test TestPrintPodCondition()

Added test TestPrintDaemonSetLists

Added test TestPrintJobList

Added test TestPrintPodDisruptionBudgetList

Adds test TestPrintConfigMap

Adds test TestPrintNetworkPolicy

Adds tests TestPrintRoleBinding and TestPrintClusterRoleBinding

Adds test TestPrintCertificateSigningRequest

Adds test TestPrintEndpoint

Adds test TestPrintReplicaSetList

Adds test TestPrintComponentStatus

Adds test TestPrintCronJobList

Adds test TestPrintPodTemplate

Adds test TestPrintPodTemplateList

Adds test TestPrintReplicationController

Adds test TestPrintServiceList

Adds test TestPrintStatefulSet
2019-10-15 17:52:06 -07:00
Sean Sullivan
cd4349ffbd Updates tests to expect metav1.TableRows instead of string, since this is what the "print" functions return.
Updated test TestPrintNodeStatus() to not use NewTableGenerator or NewTablePrinter

Updated test TestPrintNodeRode() to not use NewTableGenerator or NewTablePrinter

Updated test TestPrintNodeOSImage() to remove NewTableGenerator and NewTablePrinter

Updated test TestPrintNodeKernelVersion() to remove NewTableGenerator and NewTablePrinter

Updated test TestPrintNodeContainerRuntimeVersion() to remove NewTableGenerator and NewTablePrinter

Updated test TestPrintNodeName() to remove NewTableGenerator and NewTablePrinter

Updated test TestPrintNodeExternalIP() to remove NewTableGenerator and NewTablePrinter

Updated test TestPrintNodeInternalIP() to remove NewTableGenerator and NewTablePrinter

Updated ingress printing test to TestPrintIngress()

Updated test TestPrintService() to remove NewTableGenerator and NewTablePrinter

Updated test to TestPrintServiceLoadBalancer, removing NewTableGenerator and NewTablePrinter

Updated test TestPrintNonTerminatedPod() to remove NewTableGenerator

Updates test TestPrintDeployment() removing NewTableGenerator and NewTablePrinter

Updated test TestPrintDaemonSet(), removing NewTableGenerator and NewTablePrinter

Updated test TestPrintJob, removing NewTableGenerator and NewTablePrinter

Updates test TestPrintHPA(), removing NewTableGenerator and NewTablePrinter

Updated test TestPrintPodDisruptionBudget(), removing NewTableGenerator and NewTablePrinter

Updated test TestPrintControllerRevision(), removing NewTableGenerator and NewTablePrinter

Updates test TestPrintLease, removing NewTableGenerator and NewTablePrinter

Updates test TestPrintPriorityClass(), removing NewTableGenerator and NewTablePrinter

Updates test TestPrintRuntimeClass(), removing NewTableGenerator and NewTablePrinter

Updates test TestPrintEndpointSlice(), removing NewTableGenerator and NewTablePrinter

Updates test TestPrintReplicaSet(), removing NewTableGenerator and NewTablePrinter

Updates test TestPrintPersistentVolume(), removing NewTableGenerator and NewTablePrinter

Updates test TestPrintPersistentVolumneClaim(), removing NewTableGenerator and NewTablePrinter

Updates test TestPrintCronJob(), removing NewTableGenerator and NewTablePrinter

Updates test TestPrintStorageClass(), removing NewTableGenerator and NewTablePrinter
2019-10-15 17:44:28 -07:00
Sean Sullivan
3e7d8bc64e Moves tangential tests into another file. 2019-10-15 17:43:41 -07:00
Kubernetes Prow Robot
0a08798b9a Merge pull request #75588 from smileusd/rbd_info
fix rbd info when return warning information
2019-10-15 16:32:09 -07:00
Rob Scott
8e7de45034 Reworking kube-proxy to only compute endpointChanges on apply.
Computing EndpointChanges is a relatively expensive operation for
kube-proxy when Endpoint Slices are used. This had been computed on
every EndpointSlice update which became quite inefficient at high levels
of scale when multiple EndpointSlice update events would be triggered
before a syncProxyRules call.

Profiling results showed that computing this on each update could
consume ~80% of total kube-proxy CPU utilization at high levels of
scale. This change reduced that to as little as 3% of total kube-proxy
utilization at high levels of scale.

It's worth noting that the difference is minimal when there is a 1:1
relationship between EndpointSlice updates and proxier syncs. This is
primarily beneficial when there are many EndpointSlice updates between
proxier sync loops.
2019-10-15 16:31:12 -07:00
Kubernetes Prow Robot
2b21f087eb Merge pull request #83780 from krzysied/nc_pod_pointers
Using pointers to pod in node lifecycle controller
2019-10-15 09:13:53 -07:00
Kubernetes Prow Robot
245189b8a1 Merge pull request #83747 from JohnStrunk/csi-fsgroup-fix
Improve efficiency of csiMountMgr.GetAttributes
2019-10-15 07:11:52 -07:00
zouyee
65ddf102ef add tombstoones handle for pdb
Signed-off-by: Zou Nengren <zouyee1989@gmail.com>
2019-10-15 22:02:18 +08:00
louisgong
9b7b50c9da remove duplicate function 2019-10-15 09:41:30 +08:00
Cong Liu
da30a00f9a Add metrics for scheduler framework. 2019-10-14 20:26:03 -04:00
Kubernetes Prow Robot
aafbb93fe2 Merge pull request #83859 from mrbobbytables/update-storage-owners
Prune inactive owners from pkg/volume/* OWNERS files.
2019-10-14 15:41:50 -07:00