From b620deba0fcf4436a1fc202d148acd696da9a7da Mon Sep 17 00:00:00 2001 From: Chris Phillips Date: Tue, 6 Feb 2018 10:56:15 -0800 Subject: [PATCH] adds CONN_LIMIT to the WeaveNetworkingSpec Weave limits the number of connections between peers and the default is 30. As described here: https://github.com/weaveworks/weave/blob/ce9c5162bd94018ad5caca2c914cb5780727147c/site/kubernetes/kube-addon.md Setting the CONN_LIMIT environment variable controls this setting. Adding a field in the WeaveNetworkingSpec and adding the env var to the associated templates lets users have clusters larger than 30 nodes and still use weave's peer discovery The weave authors have indicated that 100 is not an unreasonable setting. https://github.com/weaveworks/weave/issues/1621#issuecomment-152713060 --- pkg/apis/kops/networking.go | 3 ++- pkg/apis/kops/v1alpha1/networking.go | 3 ++- pkg/apis/kops/v1alpha2/networking.go | 3 ++- .../resources/addons/networking.weave/k8s-1.6.yaml.template | 4 ++++ .../resources/addons/networking.weave/k8s-1.7.yaml.template | 4 ++++ .../addons/networking.weave/pre-k8s-1.6.yaml.template | 4 ++++ upup/pkg/fi/cloudup/bootstrapchannelbuilder.go | 4 ++-- .../tests/bootstrapchannelbuilder/weave/manifest.yaml | 6 +++--- 8 files changed, 23 insertions(+), 8 deletions(-) diff --git a/pkg/apis/kops/networking.go b/pkg/apis/kops/networking.go index 4bf539dd6b..781b650626 100644 --- a/pkg/apis/kops/networking.go +++ b/pkg/apis/kops/networking.go @@ -57,7 +57,8 @@ type KopeioNetworkingSpec struct { // WeaveNetworkingSpec declares that we want Weave networking type WeaveNetworkingSpec struct { - MTU *int32 `json:"mtu,omitempty"` + MTU *int32 `json:"mtu,omitempty"` + ConnLimit *int32 `json:"connLimit,omitempty"` } // FlannelNetworkingSpec declares that we want Flannel networking diff --git a/pkg/apis/kops/v1alpha1/networking.go b/pkg/apis/kops/v1alpha1/networking.go index 825c38981f..f66bc63029 100644 --- a/pkg/apis/kops/v1alpha1/networking.go +++ b/pkg/apis/kops/v1alpha1/networking.go @@ -57,7 +57,8 @@ type KopeioNetworkingSpec struct { // WeaveNetworkingSpec declares that we want Weave networking type WeaveNetworkingSpec struct { - MTU *int32 `json:"mtu,omitempty"` + MTU *int32 `json:"mtu,omitempty"` + ConnLimit *int32 `json:"connLimit,omitempty"` } // FlannelNetworkingSpec declares that we want Flannel networking diff --git a/pkg/apis/kops/v1alpha2/networking.go b/pkg/apis/kops/v1alpha2/networking.go index 01d0e5dc4e..fc3f32be26 100644 --- a/pkg/apis/kops/v1alpha2/networking.go +++ b/pkg/apis/kops/v1alpha2/networking.go @@ -57,7 +57,8 @@ type KopeioNetworkingSpec struct { // WeaveNetworkingSpec declares that we want Weave networking type WeaveNetworkingSpec struct { - MTU *int32 `json:"mtu,omitempty"` + MTU *int32 `json:"mtu,omitempty"` + ConnLimit *int32 `json:"connLimit,omitempty"` } // FlannelNetworkingSpec declares that we want Flannel networking diff --git a/upup/models/cloudup/resources/addons/networking.weave/k8s-1.6.yaml.template b/upup/models/cloudup/resources/addons/networking.weave/k8s-1.6.yaml.template index 924e3d855e..35d6b50c4f 100644 --- a/upup/models/cloudup/resources/addons/networking.weave/k8s-1.6.yaml.template +++ b/upup/models/cloudup/resources/addons/networking.weave/k8s-1.6.yaml.template @@ -123,6 +123,10 @@ spec: - name: WEAVE_MTU value: "{{ .Networking.Weave.MTU }}" {{- end }} + {{- if .Networking.Weave.ConnLimit }} + - name: CONN_LIMIT + value: "{{ .Networking.Weave.ConnLimit }}" + {{- end }} image: 'weaveworks/weave-kube:2.1.3' livenessProbe: httpGet: diff --git a/upup/models/cloudup/resources/addons/networking.weave/k8s-1.7.yaml.template b/upup/models/cloudup/resources/addons/networking.weave/k8s-1.7.yaml.template index a083522ce4..0dd92d4332 100644 --- a/upup/models/cloudup/resources/addons/networking.weave/k8s-1.7.yaml.template +++ b/upup/models/cloudup/resources/addons/networking.weave/k8s-1.7.yaml.template @@ -131,6 +131,10 @@ spec: - name: WEAVE_MTU value: "{{ .Networking.Weave.MTU }}" {{- end }} + {{- if .Networking.Weave.ConnLimit }} + - name: CONN_LIMIT + value: "{{ .Networking.Weave.ConnLimit }}" + {{- end }} image: 'weaveworks/weave-kube:2.1.3' livenessProbe: httpGet: diff --git a/upup/models/cloudup/resources/addons/networking.weave/pre-k8s-1.6.yaml.template b/upup/models/cloudup/resources/addons/networking.weave/pre-k8s-1.6.yaml.template index aa4ce188a7..c42f58ece3 100644 --- a/upup/models/cloudup/resources/addons/networking.weave/pre-k8s-1.6.yaml.template +++ b/upup/models/cloudup/resources/addons/networking.weave/pre-k8s-1.6.yaml.template @@ -42,6 +42,10 @@ spec: - name: WEAVE_MTU value: "{{ .Networking.Weave.MTU }}" {{- end }} + {{- if .Networking.Weave.ConnLimit }} + - name: CONN_LIMIT + value: "{{ .Networking.Weave.ConnLimit }}" + {{- end }} image: 'weaveworks/weave-kube:2.1.3' livenessProbe: httpGet: diff --git a/upup/pkg/fi/cloudup/bootstrapchannelbuilder.go b/upup/pkg/fi/cloudup/bootstrapchannelbuilder.go index 44a2062848..bc7abd2aeb 100644 --- a/upup/pkg/fi/cloudup/bootstrapchannelbuilder.go +++ b/upup/pkg/fi/cloudup/bootstrapchannelbuilder.go @@ -388,8 +388,8 @@ func (b *BootstrapChannelBuilder) buildManifest() (*channelsapi.Addons, map[stri if b.cluster.Spec.Networking.Weave != nil { key := "networking.weave" - // 2.1.3-kops.1 = 2.1.3, kops packaging version 1. - version := "2.1.3-kops.1" + // 2.1.3-kops.2 = 2.1.3, kops packaging version 2. + version := "2.1.3-kops.2" { location := key + "/pre-k8s-1.6.yaml" diff --git a/upup/pkg/fi/cloudup/tests/bootstrapchannelbuilder/weave/manifest.yaml b/upup/pkg/fi/cloudup/tests/bootstrapchannelbuilder/weave/manifest.yaml index 4574ea5e25..203c926be8 100644 --- a/upup/pkg/fi/cloudup/tests/bootstrapchannelbuilder/weave/manifest.yaml +++ b/upup/pkg/fi/cloudup/tests/bootstrapchannelbuilder/weave/manifest.yaml @@ -69,18 +69,18 @@ spec: name: networking.weave selector: role.kubernetes.io/networking: "1" - version: 2.1.3-kops.1 + version: 2.1.3-kops.2 - id: k8s-1.6 kubernetesVersion: '>=1.6.0 <1.7.0' manifest: networking.weave/k8s-1.6.yaml name: networking.weave selector: role.kubernetes.io/networking: "1" - version: 2.1.3-kops.1 + version: 2.1.3-kops.2 - id: k8s-1.7 kubernetesVersion: '>=1.7.0' manifest: networking.weave/k8s-1.7.yaml name: networking.weave selector: role.kubernetes.io/networking: "1" - version: 2.1.3-kops.1 + version: 2.1.3-kops.2