Commit Graph

9307 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
cbb164efe6
Merge pull request #109277 from MikeSpreitzer/add-weighted-histogram
Start drafting weighted and timing histograms
2022-05-03 19:30:31 -07:00
Mike Spreitzer
b4a40cd43e Draft weighted and timing histograms
The following investigation occurred during development.

Add TimingHistogram impl that shares lock with WeightedHistogram

Benchmarking and profiling shows that two layers of locking is
noticeably more expensive than one.

After adding this new alternative, I now get the following benchmark
results.

```
(base) mspreitz@mjs12 kubernetes % go test -benchmem -run=^$ -bench ^BenchmarkTimingHistogram$ k8s.io/component-base/metrics/prometheusextension
goos: darwin
goarch: amd64
pkg: k8s.io/component-base/metrics/prometheusextension
cpu: Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
BenchmarkTimingHistogram-16    	22232037	        52.79 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	k8s.io/component-base/metrics/prometheusextension	1.404s

(base) mspreitz@mjs12 kubernetes % go test -benchmem -run=^$ -bench ^BenchmarkTimingHistogram$ k8s.io/component-base/metrics/prometheusextension
goos: darwin
goarch: amd64
pkg: k8s.io/component-base/metrics/prometheusextension
cpu: Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
BenchmarkTimingHistogram-16    	22190997	        54.50 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	k8s.io/component-base/metrics/prometheusextension	1.435s
```

and

```
(base) mspreitz@mjs12 kubernetes % go test -benchmem -run=^$ -bench ^BenchmarkTimingHistogramDirect$ k8s.io/component-base/metrics/prometheusextension
goos: darwin
goarch: amd64
pkg: k8s.io/component-base/metrics/prometheusextension
cpu: Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
BenchmarkTimingHistogramDirect-16    	28863244	        40.99 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	k8s.io/component-base/metrics/prometheusextension	1.890s
(base) mspreitz@mjs12 kubernetes %
(base) mspreitz@mjs12 kubernetes %
(base) mspreitz@mjs12 kubernetes % go test -benchmem -run=^$ -bench ^BenchmarkTimingHistogramDirect$ k8s.io/component-base/metrics/prometheusextension
goos: darwin
goarch: amd64
pkg: k8s.io/component-base/metrics/prometheusextension
cpu: Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
BenchmarkTimingHistogramDirect-16    	27994173	        40.37 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	k8s.io/component-base/metrics/prometheusextension	1.384s
```

So the new implementation is roughly 20% faster than the original.

Add overlooked exception, rename timingHistogram to timingHistogramLayered

Use the direct (one mutex) style of TimingHistogram impl

This is about a 20% gain in CPU speed on my development machine, in
benchmarks without lock contention.  Following are two consecutive
trials.

(base) mspreitz@mjs12 prometheusextension % go test  -benchmem -run=^$ -bench Histogram .
goos: darwin
goarch: amd64
pkg: k8s.io/component-base/metrics/prometheusextension
cpu: Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
BenchmarkTimingHistogramLayered-16    	21650905	        51.91 ns/op	       0 B/op	       0 allocs/op
BenchmarkTimingHistogramDirect-16     	29876860	        39.33 ns/op	       0 B/op	       0 allocs/op
BenchmarkWeightedHistogram-16         	49227044	        24.13 ns/op	       0 B/op	       0 allocs/op
BenchmarkHistogram-16                 	41063907	        28.82 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	k8s.io/component-base/metrics/prometheusextension	5.432s

(base) mspreitz@mjs12 prometheusextension % go test  -benchmem -run=^$ -bench Histogram .
goos: darwin
goarch: amd64
pkg: k8s.io/component-base/metrics/prometheusextension
cpu: Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
BenchmarkTimingHistogramLayered-16    	22483816	        51.72 ns/op	       0 B/op	       0 allocs/op
BenchmarkTimingHistogramDirect-16     	29697291	        39.39 ns/op	       0 B/op	       0 allocs/op
BenchmarkWeightedHistogram-16         	48919845	        24.03 ns/op	       0 B/op	       0 allocs/op
BenchmarkHistogram-16                 	41153044	        29.26 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	k8s.io/component-base/metrics/prometheusextension	5.044s

Remove layered implementation of TimingHistogram
2022-04-28 17:36:06 -04:00
Kubernetes Prow Robot
10dcc6c5f4
Merge pull request #109484 from liggitt/go-min-version
Update min golang version to 1.18.1
2022-04-14 09:20:47 -07:00
Kubernetes Prow Robot
a8c582a765
Merge pull request #109312 from MadhavJivrajani/remove-sha1-godebug
hack/jenkins: Remove GODEBUG workaround for sha1 changes
2022-04-14 07:06:46 -07:00
Jordan Liggitt
f97bc825d5 Update min golang version to 1.18.1 2022-04-14 09:53:20 -04:00
Stephen Augustus
3f85937b11
etcd: Update to v3.5.3
Signed-off-by: Stephen Augustus <foo@auggie.dev>
2022-04-13 19:04:00 -04:00
James Laverack
7d57d5c70d Revert "Introduce APIs to support multiple ClusterCIDRs (#108290)"
This reverts commit b9792a9dae.
2022-04-13 13:58:19 +01:00
Madhav Jivrajani
ae55bcda44 hack/jenkins: Remove GODEBUG workaround for sha1 changes
This commit undoes the GODEBUG=x509sha1=1 workaround.
The problem should be fixed in Go 1.18.1 now.

Signed-off-by: Madhav Jivrajani <madhav.jiv@gmail.com>
2022-04-05 20:41:19 +05:30
Jordan Liggitt
3e9cdf6193 Fix local-up-cluster for running only an API server 2022-04-03 22:28:30 -04:00
Jordan Liggitt
975bfaf8ba set parallelism in integration tests with GOMAXPROCS 2022-04-01 12:55:41 -04:00
Jordan Liggitt
ddd15e1d8c omit enums from static openapi snapshots used to generate clients 2022-03-31 12:31:47 -04:00
Sarvesh Rangnekar
b9792a9dae
Introduce APIs to support multiple ClusterCIDRs (#108290)
* Introduce networking/v1alpha1 api, ClusterCIDRConfig type

Introduce networking/v1alpha1 api group.

Add `ClusterCIDRConfig` type to networking/v1alpha1 api group, this type
will enable the NodeIPAM controller to support multiple ClusterCIDRs.

* Change ClusterCIDRConfig.NodeSelector type in api

* Fix review comments for API

* Update ClusterCIDRConfig API Spec

Introduce PerNodeHostBits field, remove PerNodeMaskSize
2022-03-30 19:39:00 -07:00
Kubernetes Prow Robot
c0e7b15c75
Merge pull request #109112 from dims/prune-junit-xml-files
Prune junit xml files to avoid issues with test grid.
2022-03-30 14:50:08 -07:00
Kubernetes Prow Robot
64c5ed3804
Merge pull request #109084 from dims/add-some-sudo-in-local-up-cluster
Add some sudo in local-up-cluster.sh
2022-03-30 10:58:35 -07:00
Davanum Srinivas
d20df79545
prune junit xml files in ci harness
Over time the size of our junit xml has exploded to the point where
test-grid fails to process them. We still have the original/full
*.stdout files from where the junit xml files are generated from so the
junit xml files need NOT have the fill/exact output for
processing/display. So let us prune the large messages with an
indicator that we have "[... clipped...]" some of the content so folks
can see that they have to consult the full *.stdout files.

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-03-30 12:58:43 -04:00
Davanum Srinivas
89b1accf4d
switch owner for CERT_DIR
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-03-29 20:04:33 -04:00
Davanum Srinivas
f7ad09c447
Switch to pause 3.7
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-03-29 15:36:38 -04:00
Davanum Srinivas
43bf01e080
bash verbose around admin-kube-aggregator.kubeconfig
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-03-28 18:08:16 -04:00
Davanum Srinivas
5b1086b897
Add some sudo in local-up-cluster.sh
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-03-28 16:57:05 -04:00
Davanum Srinivas
b1fa9e2deb
Turn down log level for etcd
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-03-27 15:21:28 -04:00
Kevin Delgado
fe3772890f add server-side validation support to kubectl 2022-03-26 03:45:13 +00:00
Kubernetes Prow Robot
d60df5ba04
Merge pull request #108159 from pohly/logcheck
logcheck update and golangci-lint integration
2022-03-24 18:37:50 -07:00
Alex Zielenski
11b3a18cca
Update kube-openapi (#108895)
* upgrade k8s.io/kube-openapi

* fix open-api v3 blank aggregator output

* use keys as API group

in ./hack/update-openapi-spec.sh

* fix import grouping

* update openapiv3 integration tests
2022-03-24 14:01:01 -07:00
Katrina Verey
44e63e8ff8
kubectl version should include bundled kustomize version 2022-03-24 13:31:57 -04:00
Katrina Verey
af059a0731
Colorize string test helper results 2022-03-24 13:31:57 -04:00
Patrick Ohly
17e3c555c5 hack: integrate logcheck into golangci-lint
Running logcheck as part of golangci-lint has several advantages:
- faster checking because finding files and parsing is shared
  with other linters
- gets rid of the complex and buggy
  hack/verify-structured-logging.sh (https://github.com/kubernetes/kubernetes/issues/106746)
- support for // nolint:logcheck
- works with Go 1.18
2022-03-24 11:21:03 +01:00
Kubernetes Prow Robot
190f974dd8
Merge pull request #108902 from kolyshkin/bump-golangci-lint
Fix verify:* after go 1.18 upgrade
2022-03-24 02:59:06 -07:00
Kubernetes Prow Robot
c3d372dc47
Merge pull request #108857 from KnVerey/script_kustomize_update
Script kubectl kustomize update process
2022-03-23 13:22:34 -07:00
Kir Kolyshkin
d8fdb00b34 Fix verify: generated-stable-metrics wrt go 1.18
This should fix the following error when running
./hack/update-generated-stable-metrics.sh:

	'go get' is no longer supported outside a module.
	To build and install a command, use 'go install' with a version,
	like 'go install example.com/cmd@latest'
	For more information, see https://golang.org/doc/go-get-install-deprecation
	or run 'go help get' or 'go help install'.

Using `go get` to download gopkg.in/yaml.v2 package into
KUBE_EXTRA_GOPATH directory no longer works. Interestingly, main repo
already has gopkg.in/yaml.v2@v2.4.0, same version that was installed by
that go get.

I guess that GOPATH with multiple elements no longer works either,
and since this code was the only user of KUBE_EXTRA_GOPATH, let's remove
it as well.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2022-03-23 10:19:59 -07:00
Kir Kolyshkin
e3ed3ba7c9 update golangci-lint to 1.45.0
This should fix Go 1.18 compatibility woes.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2022-03-23 10:19:16 -07:00
Davanum Srinivas
0a5f9115f2
re-add govet and stable metrics
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-03-23 08:02:54 -04:00
Madhav Jivrajani
b6c00355f8
hack/jenkins: set GODEBUG=x509sha1=1
Temporary fix for Go 1.18 changes made in
https://tip.golang.org/doc/go1.18#sha1

Signed-off-by: Madhav Jivrajani <madhav.jiv@gmail.com>
2022-03-23 08:02:53 -04:00
Davanum Srinivas
031da66841
Temporarily ignore some verify failures in go1.18"
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-03-22 20:42:03 -04:00
Davanum Srinivas
d8f1da5ecb
golang: Update to 1.18 from 1.18rc1
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-03-22 09:47:35 -04:00
Katrina Verey
be5e14521f
Script kubectl kustomize update process 2022-03-21 15:47:30 -04:00
Jordan Liggitt
60b9af476f Update cobra to v1.4.0 2022-03-10 16:19:43 -05:00
Kubernetes Prow Robot
fabfb03bd2
Merge pull request #108618 from eddiezane/ez/fix-flake-107702
Add env var to verify-typecheck for serial execution
2022-03-09 20:01:47 -08:00
Kubernetes Prow Robot
1a54b398f4
Merge pull request #108603 from chendave/binary
Switch to use the DBG flag to build debug binaries
2022-03-09 18:57:34 -08:00
Eddie Zaneski
50bdc98754
Add env to verify-typecheck for serial execution
Signed-off-by: Eddie Zaneski <eddiezane@gmail.com>
2022-03-09 18:21:27 -07:00
Dave Chen
ace64c0138 Switch to use the DBG flag to build debug binaries
With the merging of #108371, the old way to build the debug binaries
won't work anymore.

Signed-off-by: Dave Chen <dave.chen@arm.com>
2022-03-09 14:57:59 +08:00
Kubernetes Prow Robot
19935de5a9
Merge pull request #107410 from margocrawf/master
Ensure static certs in kubeconfig override exec plugin
2022-03-08 11:34:21 -08:00
Margo Crawford
f015fd66ce Check whether static cert is already configured in UpdateTransportConfig
- Also update test-cmd.sh to pass a signing ca to the kube controller
  manager, so CSRs work properly in integration tests.

Signed-off-by: Margo Crawford <margaretc@vmware.com>
2022-03-07 13:54:32 -08:00
Kubernetes Prow Robot
4dda76588f
Merge pull request #108371 from thockin/makefile-dbg-flag
Makefile: add a DBG variable
2022-03-03 12:47:28 -08:00
Mo Khan
4baefef99a
Add enj to hack OWNERS 2022-03-02 10:04:11 -05:00
Tim Hockin
bf27cad256 Build flags: use all= syntax
This has somewhat subtle implications.  For a concrete example, this
changes the `-trimpath` behavior from only affecting the named pkg to
affecting all pkgs, which broke ginkgo, which seems to try to strip its
own `pwd` prefix.  But since that runs in run-in-gopath, and not in
KUBE_ROOT, it fails to strip anything.

e.g.

before this, strings in the binary would be like
    /home/user/kube/_output/local/go/src/k8s.io/kubernetes/vendor/github.com/onsi/ginkgo/...
Ginkgo would find its own root as
    /home/user/kube/_output/local/go/src/k8s.io/kubernetes/
so it would produce
    vendor/github.com/onsi/ginkgo/...
in logs.

after this, strings in the binary strip the KUBE_ROOT and be like:
    _output/local/go/src/k8s.io/kubernetes/vendor/github.com/onsi/ginkgo/...
Ginkgo would find its own root as
    /home/user/kube/_output/local/go/src/k8s.io/kubernetes/
so it would not strip anything, and produce
    _output/local/go/src/k8s.io/kubernetes/vendor/github.com/onsi/ginkgo/...
in logs.
2022-03-01 08:48:31 -08:00
Tim Hockin
ed5e549cde Makefile: Add a DBG flag to build debug binaries
Now `make DBG=1` will produce binaries with no optimizaions and no
inlining, but with symbols and DWARF information.
2022-03-01 08:47:34 -08:00
Tim Hockin
4a0c6c2444 Slightly nicer output when building
before:

```
$ make generated_files
+++ [0226 13:42:17] Building go targets for linux/amd64:
    hack/make-rules/helpers/go2make
> non-static build: k8s.io/kubernetes/hack/make-rules/helpers/go2make
```

after:

```
$ make generated_files
+++ [0226 14:30:08] Building go targets for linux/amd64
    k8s.io/kubernetes/hack/make-rules/helpers/go2make (non-static)
```
2022-02-27 10:29:59 -08:00
Tim Hockin
e671fea954 Remove hack/tools/Makefile 2022-02-26 12:57:10 -08:00
Aditi Sharma
2e7b7832f8 Detect CNI installtion in local-up-cluster.sh
Signed-off-by: Aditi Sharma <adi.sky17@gmail.com>
2022-02-23 21:35:58 +05:30
Kubernetes Prow Robot
d5c26190ac
Merge pull request #108160 from adisky/fix-pull-node-e2e
[Fix pull-local-node-e2e] Install CNI and Enable containerd for kubekins docker
2022-02-22 04:35:47 -08:00