Commit Graph

59 Commits

Author SHA1 Message Date
ahrtr
fe95aa614c io/ioutil has already been deprecated in golang 1.16, so replace all ioutil with io and os 2022-02-03 05:32:12 +08:00
Kenichi Omichi
c6ba451235 Fix err of GrabFromAPIServer()
If getting an error from internal funcation call, GrabFromAPIServer()
didn't return it to the caller.
This fixes it.
2021-09-02 21:31:04 +00:00
Antonio Ojea
34f4959633 replace e2e WaitForPodsReady by WaitTimeoutForPodReadyInNamespace 2021-08-01 19:24:52 +02:00
Mauricio Poppe
9103b7187c Fetch metrics from controller manager & scheduler no run once 2021-07-21 17:16:42 +00:00
Patrick Ohly
a4c7e91b59 e2e metrics: skip tests when metrics grabbing is disabled
The MetricsGrabber checked whether a component supported metrics
grabbing, but then tests didn't have an API to use the result of that
check. Because metrics grabbing is an optional debug feature, tests
must skip checks that depend on metrics data or, when the entire
test is about metrics data, skip the test.

This is now supported with a special error that gets wrapped and
returned by the individual Grab functions.
2021-06-16 12:02:41 +02:00
Patrick Ohly
1d3420ca72 e2e metrics: check whether debug handlers are available
This can be checked by trying to retrieve log output. As in the case
of no pod found, a warning gets emitted when log retrieval fails and
metrics grabbing gets disabled.

Logging is checked instead of actual metrics retrieval because the
latter is more complex and thus more likely to fail for other reasons.
2021-06-16 12:02:41 +02:00
Patrick Ohly
5e9076da93 e2e: grab controller and scheduler metrics via port forwarding
The previous approach with grabbing via a nginx proxy had some
drawbacks:
- it did not work when the pods only listened on localhost (as
  configured by kubeadm) and the proxy got deployed on a different
  node
- starting the proxy raced with starting the pods, causing
  sporadic test failures because the proxy was not set up
  properly unless it saw all pods when starting the e2e.test
- the proxy was always started, whether it is needed or not
- the proxy was left running after a test and then the next
  test run triggered potentially confusing messages when
  it failed to create objects for the proxy

The new approach is similar to "kubectl port-forward" + "kubectl get
--raw". It uses the port forwarding feature to establish a TCP
connection via a custom dialer, then lets client-go handle TLS and
credentials.

Somehow verifying the server certificate did not work. As this
shouldn't be a big concern for E2E testing, certificate checking gets
disabled on the client side instead of investigating this further.
2021-06-16 12:02:40 +02:00
Kubernetes Prow Robot
c495744436
Merge pull request #101960 from knight42/fix/deflake-metrics-proxy
Deflake tests that need to grab metrics from controller-manager or scheduler
2021-05-27 03:40:23 -07:00
Jian Zeng
781c65a40c fix: skip pods with empty ip 2021-05-27 16:06:34 +08:00
Grant Griffiths
564e531aa7 Add Snapshot Controller e2e metric tests
Signed-off-by: Grant Griffiths <ggriffiths@purestorage.com>
2021-05-20 23:29:23 -07:00
Jian Zeng
32c14da902
fix(metrics-proxy): wait for enough component pods to show up first
Signed-off-by: Jian Zeng <zengjian.zj@bytedance.com>
2021-05-15 22:07:05 +08:00
pacoxu
c496b1d335 e2e: waiting for scheduler pod to expose metrics once
Signed-off-by: pacoxu <paco.xu@daocloud.io>
2021-05-13 16:54:35 +08:00
Jian Zeng
c4c2574778
refactor(e2e): grab metrics from controller-manager via nginx
Signed-off-by: Jian Zeng <zengjian.zj@bytedance.com>
2021-05-03 00:12:06 +08:00
Benjamin Elder
56e092e382 hack/update-bazel.sh 2021-02-28 15:17:29 -08:00
Kenichi Omichi
176c8e219f Avoid DeprecatedMightBeMasterNode() in e2e metrics
As its name, DeprecatedMightBeMasterNode is deprecated.
In e2e metrics, the function was used for knowing master node name to
get metrics from kube-scheduler and kube-controller-manager pods.
This make e2e metrics get these metrics directly by getting those pod
names without calling DeprecatedMightBeMasterNode().
2020-06-25 23:08:24 +00:00
Davanum Srinivas
07d88617e5
Run hack/update-vendor.sh
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2020-05-16 07:54:33 -04:00
Davanum Srinivas
442a69c3bd
switch over k/k to use klog v2
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2020-05-16 07:54:27 -04:00
gavinfish
e50afd00e9 e2e/framework: remove direct imports to /pkg/kubelet/... 2020-03-31 09:31:54 +08:00
Andrew Sy Kim
f0f6c6fc81 e2e/framework: remove imports to pkg/master/ports
Signed-off-by: Andrew Sy Kim <kim.andrewsy@gmail.com>
2020-03-17 17:42:43 -04:00
Antonio Ojea
2a095f434b e2e wait until controller manager pod ready 2020-03-14 12:17:25 +01:00
Antonio Ojea
334d46eed5
fix logging on e2e metrics grabber test 2020-03-13 09:48:39 +01:00
Antonio Ojea
4361f8f052 wait until /metrics are ready on e2e test
Some e2e tests depend on the controller-manager to expose metrics
on the path /metrics.

It may happen that when the test runs, the pod is not available or the
URL not ready, causing it to fail.

Previously, the test were waiting until the pod was running, but we
need to wait until the /metrics URL is ready.
2020-03-11 14:32:03 +01:00
Kubernetes Prow Robot
a35f54e3e8
Merge pull request #88982 from aojea/flakyvolumes
e2e: wait for controller manager pod to be ready
2020-03-10 03:29:36 -07:00
Kubernetes Prow Robot
b1c1187cca e2e: wait for controller manager pod to be ready
The MetricsGrabber may use the controller-manager pod
to gather metrics, however, it doesn't wait until
it is ready to serve, failing the test if this is the
case.

We wait until the controller-manager pod is running
before trying to get metrics from it.
2020-03-09 22:04:16 +01:00
andrewsykim
674e539fca test/e2e/framework: remove dependencies to internal APIs
Signed-off-by: andrewsykim <kim.andrewsy@gmail.com>
2020-03-02 16:09:15 -05:00
tanjunchen
efec7e64ce remove TODO and use framework.SingleCallTimeout 2020-02-14 01:12:46 +08:00
Mike Danese
3aa59f7f30 generated: run refactor 2020-02-07 18:16:47 -08:00
Mike Danese
d55d6175f8 refactor 2020-01-29 08:50:45 -08:00
Haosdent Huang
8d3a8d5a6c e2e: move funs of framework/metrics to e2e_node 2019-12-16 00:27:58 +08:00
YuikoTakada
cd7859901c Fix func VerifyLatencyWithinThreshold() to local 2019-12-03 06:53:41 +00:00
RainbowMango
5e0695e339 Hide apiserver metrics that have been deprecated in 1.14
Update E2E test accordingly.
2019-11-14 09:56:48 +08:00
YuikoTakada
2eac9a0f17 Remove unused func and struct from pod.go 2019-11-13 04:17:24 +00:00
YuikoTakada
3ebe59c8df delete unused func in latencies.go 2019-11-07 08:21:00 +00:00
Ziheng Liu
2ca513a15d Prevent 2 goroutines from being leaked if proxy hangs
Signed-off-by: Ziheng Liu <lzhfromustc@gmail.com>
2019-10-28 19:06:43 -04:00
Marek Siarkowicz
09329b5bbc Remove prometheus references in test/integration
This PR does minimal changes to interface to allow removing all
references to prometheus from `test` directory. In future I would expect
wrapping prometheus samples to provide better abstraction. Changes:

Move generic_metrics.go to testutil/metrics.go
Remove etcd.go as it was not called
Move prometheus label consts to testutil.
2019-10-28 11:40:32 +01:00
Kenichi Omichi
7c23ba1b34 Copy PrettyPrintJSON to core framework
PrettyPrintJSON is most used e2emetrics function and that doesn't seem
specific for metrics. The implementation itself is generic, so it is
nice to move it to core framework for avoiding circular dependency.
2019-09-23 18:10:50 +00:00
Clayton Coleman
a49a554211
Move the IsMasterNode function to tests and mark it Deprecated
A future change will stop using this signal and instead use a
label selector passed on creation.
2019-08-28 11:17:27 -04:00
Kenichi Omichi
47a4d1a8ec Rename MetricsForE2E for golint failure
This renames MetricsForE2E to ComponentCollection for solving golint
failure.
2019-08-08 04:15:36 +00:00
WanLinghao
92b0310cc5 Refactor and clean up e2e framework utils, this patch handles test/e2e/framework/kubelet_stats.go file 2019-08-01 17:40:02 +08:00
mlmhl
f2cf68b2a0 report error message when reset scheduler metrics in e2e test 2019-07-30 14:30:48 +08:00
alejandrox1
348fd0805e Refactored metrics-related functions from framework/metrics_util.go
This a refactoring of framework/metrics_utils.go into framework/metrics.

Signed-off-by: alejandrox1 <alarcj137@gmail.com>
2019-07-08 19:35:10 -04:00
qingsenLi
f98bbdec32 fix a little spelling error 2019-05-28 01:38:44 +08:00
Kubernetes Prow Robot
535064773a
Merge pull request #73946 from dashpole/prometheus_core_metrics
Add kubelet resource metrics v1alpha1 endpoint
2019-03-07 22:43:28 -08:00
David Ashpole
6051664c0f add kubelet prometheus resource metrics endpoint 2019-03-07 15:39:37 -08:00
Kenichi Omichi
89f6f1d0cc Fix golint failures under e2e/framework/metrics 2019-02-13 18:07:16 +00:00
Kenichi Omichi
dbe669aeb1 Move PrintSample() to place which uses it
PrintSample() was used at metrics_util.go only, so this moves
the method to metrics_util.go and makes it local.
2019-02-13 01:32:53 +00:00
Davanum Srinivas
954996e231
Move from glog to klog
- Move from the old github.com/golang/glog to k8s.io/klog
- klog as explicit InitFlags() so we add them as necessary
- we update the other repositories that we vendor that made a similar
change from glog to klog
  * github.com/kubernetes/repo-infra
  * k8s.io/gengo/
  * k8s.io/kube-openapi/
  * github.com/google/cadvisor
- Entirely remove all references to glog
- Fix some tests by explicit InitFlags in their init() methods

Change-Id: I92db545ff36fcec83afe98f550c9e630098b3135
2018-11-10 07:50:31 -05:00
tanshanshan
cb95edafe8 kube-scheduler: enable secure ports 10259 2018-11-08 16:43:59 +01:00
Jeff Grafton
23ceebac22 Run hack/update-bazel.sh 2018-06-22 16:22:57 -07:00
stewart-yu
0cbe0a6034 controller-manager: switch to config/option struct pattern 2018-02-13 11:16:17 +01:00