diff --git a/build/build-image/Dockerfile b/build/build-image/Dockerfile index 57b4300508c..e37a241de86 100644 --- a/build/build-image/Dockerfile +++ b/build/build-image/Dockerfile @@ -19,7 +19,7 @@ FROM gcr.io/google_containers/kube-cross:KUBE_BUILD_IMAGE_CROSS_TAG RUN touch /kube-build-image # To run as non-root we sometimes need to rebuild go stdlib packages. -RUN chmod -R a+rwx /usr/local/go/pkg ${K8S_PATCHED_GOROOT}/pkg +RUN chmod -R a+rwx /usr/local/go/pkg # For running integration tests /var/run/kubernetes is required # and should be writable by user diff --git a/build/build-image/cross/Dockerfile b/build/build-image/cross/Dockerfile index d2887e9b555..d3ec13ebf7e 100644 --- a/build/build-image/cross/Dockerfile +++ b/build/build-image/cross/Dockerfile @@ -15,7 +15,7 @@ # This file creates a standard build environment for building cross # platform go binary for the architecture kubernetes cares about. -FROM golang:1.8.1 +FROM golang:1.8.3 ENV GOARM 7 ENV KUBE_DYNAMIC_CROSSPLATFORMS \ @@ -77,22 +77,3 @@ RUN export ETCD_VERSION=v3.0.17; \ && cd /usr/local/src/etcd \ && curl -fsSL https://github.com/coreos/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz | tar -xz \ && ln -s ../src/etcd/etcd-${ETCD_VERSION}-linux-amd64/etcd /usr/local/bin/ - - -# There is a significant performance regression in Go 1.8 comparing to Go 1.7. -# Until this is solved in Go itself, we are patching 1.8.1 version of Go to -# reduce the impact of this regression - for more detailed discussion see: -# https://github.com/kubernetes/kubernetes/issues/45216 -# -# TODO: Once this issue is fixed in Go itself, we can get rid of the code below. -ENV K8S_PATCHED_GOLANG_VERSION=1.8.1 \ - K8S_PATCHED_GOROOT=/usr/local/go_k8s_patched -RUN mkdir -p ${K8S_PATCHED_GOROOT} \ - && curl -sSL https://github.com/golang/go/archive/go${K8S_PATCHED_GOLANG_VERSION}.tar.gz | tar -xz -C ${K8S_PATCHED_GOROOT} --strip-components=1 - -COPY go_181_performance_fix.patch ${K8S_PATCHED_GOROOT}/ -RUN cd ${K8S_PATCHED_GOROOT} \ - && patch -p1 < go_181_performance_fix.patch \ - && cd src \ - && GOROOT_FINAL=${K8S_PATCHED_GOROOT} GOROOT_BOOTSTRAP=/usr/local/go ./make.bash \ - && for platform in ${KUBE_CROSSPLATFORMS}; do GOOS=${platform%/*} GOARCH=${platform##*/} GOROOT=${K8S_PATCHED_GOROOT} go install std; done diff --git a/build/build-image/cross/VERSION b/build/build-image/cross/VERSION index de541432f17..490e779dc9b 100644 --- a/build/build-image/cross/VERSION +++ b/build/build-image/cross/VERSION @@ -1 +1 @@ -v1.8.1-2 +v1.8.3-1 diff --git a/build/build-image/cross/go_181_performance_fix.patch b/build/build-image/cross/go_181_performance_fix.patch deleted file mode 100644 index 64f942937c6..00000000000 --- a/build/build-image/cross/go_181_performance_fix.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/src/net/http/h2_bundle.go b/src/net/http/h2_bundle.go -index 4536b2ff5d..84e78534a9 100644 ---- a/src/net/http/h2_bundle.go -+++ b/src/net/http/h2_bundle.go -@@ -3536,9 +3536,17 @@ func (sc *http2serverConn) serve() { - sc.idleTimerCh = sc.idleTimer.C - } - -- var gracefulShutdownCh <-chan struct{} -+ var gracefulShutdownCh chan struct{} - if sc.hs != nil { -- gracefulShutdownCh = http2h1ServerShutdownChan(sc.hs) -+ ch := http2h1ServerShutdownChan(sc.hs) -+ gracefulShutdownCh = make(chan struct{}) -+ go func() { -+ select { -+ case <-sc.doneServing: -+ case <-ch: -+ close(gracefulShutdownCh) -+ } -+ }() - } - - go sc.readFrames() diff --git a/build/root/WORKSPACE b/build/root/WORKSPACE index fe0c36382ce..e01bbb336ac 100644 --- a/build/root/WORKSPACE +++ b/build/root/WORKSPACE @@ -1,8 +1,8 @@ http_archive( name = "io_bazel_rules_go", - sha256 = "a1cae429e9d591017421150e3173478c46c693bc594322c7fa7e6cb5f672ef59", - strip_prefix = "rules_go-805fd1566500997379806373feb05e138a4dfe28", - urls = ["https://github.com/bazelbuild/rules_go/archive/805fd1566500997379806373feb05e138a4dfe28.tar.gz"], + sha256 = "64294fd0e74d2aafa03ec3a1f2f9c167e27d17c9a5cf393e8bf79e43258de73d", + strip_prefix = "rules_go-a9df110cf04e167b33f10473c7e904d780d921e6", + urls = ["https://github.com/bazelbuild/rules_go/archive/a9df110cf04e167b33f10473c7e904d780d921e6.tar.gz"], ) http_archive( @@ -33,7 +33,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_repositories") load("@io_bazel_rules_docker//docker:docker.bzl", "docker_repositories") go_repositories( - go_version = "1.8.1", + go_version = "1.8.3", ) docker_repositories() diff --git a/cluster/images/etcd-version-monitor/Makefile b/cluster/images/etcd-version-monitor/Makefile index 1149f4a0ae1..09fb29607dc 100644 --- a/cluster/images/etcd-version-monitor/Makefile +++ b/cluster/images/etcd-version-monitor/Makefile @@ -15,10 +15,10 @@ # Build the etcd-version-monitor image # # Usage: -# [GOLANG_VERSION=1.8.1] [REGISTRY=gcr.io/google-containers] [TAG=test] make (build|push) +# [GOLANG_VERSION=1.8.3] [REGISTRY=gcr.io/google-containers] [TAG=test] make (build|push) # TODO(shyamjvs): Support architectures other than amd64 if needed. ARCH:=amd64 -GOLANG_VERSION?=1.8.1 +GOLANG_VERSION?=1.8.3 REGISTRY?=gcr.io/google-containers TAG?=0.1.0 IMAGE:=$(REGISTRY)/etcd-version-monitor:$(TAG) diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index 1156f9c516b..ce3bea0fa22 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -267,11 +267,6 @@ kube::golang::set_platform_envs() { # Do not set CC when building natively on a platform, only if cross-compiling from linux/amd64 if [[ $(kube::golang::host_platform) == "linux/amd64" ]]; then - # We are currently using go 1.8.1, which has significant performance - # regression. Until this is fixed in Golang head, we are using patched - # version of Go that eliminates this problem. - export GOROOT=${K8S_PATCHED_GOROOT:-${GOROOT}} - # Dynamic CGO linking for other server architectures than linux/amd64 goes here # If you want to include support for more server platforms than these, add arch-specific gcc names here case "${platform}" in diff --git a/test/images/serve_hostname/Makefile b/test/images/serve_hostname/Makefile index 9cb104ec730..fce55966e40 100644 --- a/test/images/serve_hostname/Makefile +++ b/test/images/serve_hostname/Makefile @@ -31,7 +31,7 @@ ALL_ARCH = amd64 arm arm64 ppc64le s390x GOARM=7 TEMP_DIR := $(shell mktemp -d) -GOLANG_VERSION=1.8.1 +GOLANG_VERSION=1.8.3 BIN = serve_hostname SRCS = serve_hostname.go