mirror of https://github.com/kubernetes/kops.git
Make Weave MTU configurable and set AWS default config for jumbo frames
This commit is contained in:
parent
05d5c8c0cd
commit
6213c519e1
|
@ -354,30 +354,6 @@ func RunCreateCluster(f *util.Factory, out io.Writer, c *CreateClusterOptions) e
|
||||||
}
|
}
|
||||||
cluster.Spec.ConfigBase = configBase.Path()
|
cluster.Spec.ConfigBase = configBase.Path()
|
||||||
|
|
||||||
cluster.Spec.Networking = &api.NetworkingSpec{}
|
|
||||||
switch c.Networking {
|
|
||||||
case "classic":
|
|
||||||
cluster.Spec.Networking.Classic = &api.ClassicNetworkingSpec{}
|
|
||||||
case "kubenet":
|
|
||||||
cluster.Spec.Networking.Kubenet = &api.KubenetNetworkingSpec{}
|
|
||||||
case "external":
|
|
||||||
cluster.Spec.Networking.External = &api.ExternalNetworkingSpec{}
|
|
||||||
case "cni":
|
|
||||||
cluster.Spec.Networking.CNI = &api.CNINetworkingSpec{}
|
|
||||||
case "kopeio-vxlan", "kopeio":
|
|
||||||
cluster.Spec.Networking.Kopeio = &api.KopeioNetworkingSpec{}
|
|
||||||
case "weave":
|
|
||||||
cluster.Spec.Networking.Weave = &api.WeaveNetworkingSpec{}
|
|
||||||
case "flannel":
|
|
||||||
cluster.Spec.Networking.Flannel = &api.FlannelNetworkingSpec{}
|
|
||||||
case "calico":
|
|
||||||
cluster.Spec.Networking.Calico = &api.CalicoNetworkingSpec{}
|
|
||||||
case "canal":
|
|
||||||
cluster.Spec.Networking.Canal = &api.CanalNetworkingSpec{}
|
|
||||||
default:
|
|
||||||
return fmt.Errorf("unknown networking mode %q", c.Networking)
|
|
||||||
}
|
|
||||||
|
|
||||||
glog.V(4).Infof("networking mode=%s => %s", c.Networking, fi.DebugAsJsonString(cluster.Spec.Networking))
|
glog.V(4).Infof("networking mode=%s => %s", c.Networking, fi.DebugAsJsonString(cluster.Spec.Networking))
|
||||||
|
|
||||||
// In future we could change the default if the flag is not specified, e.g. in 1.7 maybe the default is RBAC?
|
// In future we could change the default if the flag is not specified, e.g. in 1.7 maybe the default is RBAC?
|
||||||
|
@ -668,6 +644,37 @@ func RunCreateCluster(f *util.Factory, out io.Writer, c *CreateClusterOptions) e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cluster.Spec.Networking = &api.NetworkingSpec{}
|
||||||
|
switch c.Networking {
|
||||||
|
case "classic":
|
||||||
|
cluster.Spec.Networking.Classic = &api.ClassicNetworkingSpec{}
|
||||||
|
case "kubenet":
|
||||||
|
cluster.Spec.Networking.Kubenet = &api.KubenetNetworkingSpec{}
|
||||||
|
case "external":
|
||||||
|
cluster.Spec.Networking.External = &api.ExternalNetworkingSpec{}
|
||||||
|
case "cni":
|
||||||
|
cluster.Spec.Networking.CNI = &api.CNINetworkingSpec{}
|
||||||
|
case "kopeio-vxlan", "kopeio":
|
||||||
|
cluster.Spec.Networking.Kopeio = &api.KopeioNetworkingSpec{}
|
||||||
|
case "weave":
|
||||||
|
cluster.Spec.Networking.Weave = &api.WeaveNetworkingSpec{}
|
||||||
|
|
||||||
|
if cluster.Spec.CloudProvider == "aws" {
|
||||||
|
// AWS supports "jumbo frames" of 9001 bytes and weave adds up to 87 bytes overhead
|
||||||
|
// sets the default to the largest number that leaves enough overhead and is divisible by 4
|
||||||
|
jumboFrameMTUSize := int32(8912)
|
||||||
|
cluster.Spec.Networking.Weave.MTU = &jumboFrameMTUSize
|
||||||
|
}
|
||||||
|
case "flannel":
|
||||||
|
cluster.Spec.Networking.Flannel = &api.FlannelNetworkingSpec{}
|
||||||
|
case "calico":
|
||||||
|
cluster.Spec.Networking.Calico = &api.CalicoNetworkingSpec{}
|
||||||
|
case "canal":
|
||||||
|
cluster.Spec.Networking.Canal = &api.CanalNetworkingSpec{}
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("unknown networking mode %q", c.Networking)
|
||||||
|
}
|
||||||
|
|
||||||
if c.VPCID != "" {
|
if c.VPCID != "" {
|
||||||
cluster.Spec.NetworkID = c.VPCID
|
cluster.Spec.NetworkID = c.VPCID
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,6 +101,19 @@ Daemonset installation for K8s 1.4.x or 1.5.x.
|
||||||
$ kubectl create -f https://git.io/weave-kube
|
$ kubectl create -f https://git.io/weave-kube
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Configuring Weave MTU
|
||||||
|
|
||||||
|
The Weave MTU is configurable by editing the cluster and setting `mtu` option in the weave configuration.
|
||||||
|
AWS VPCs support jumbo frames, so on cluster creation kops sets the weave MTU to 8912 bytes (9001 minus overhead).
|
||||||
|
|
||||||
|
```
|
||||||
|
spec:
|
||||||
|
networking:
|
||||||
|
weave:
|
||||||
|
mtu: 8912
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Calico Example for CNI and Network Policy
|
### Calico Example for CNI and Network Policy
|
||||||
|
|
||||||
#### Installing Calico on a new Cluster
|
#### Installing Calico on a new Cluster
|
||||||
|
|
|
@ -54,6 +54,7 @@ type KopeioNetworkingSpec struct {
|
||||||
|
|
||||||
// Weave declares that we want Weave networking
|
// Weave declares that we want Weave networking
|
||||||
type WeaveNetworkingSpec struct {
|
type WeaveNetworkingSpec struct {
|
||||||
|
MTU *int32 `json:"mtu,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flannel declares that we want Flannel networking
|
// Flannel declares that we want Flannel networking
|
||||||
|
|
|
@ -54,6 +54,7 @@ type KopeioNetworkingSpec struct {
|
||||||
|
|
||||||
// Weave declares that we want Weave networking
|
// Weave declares that we want Weave networking
|
||||||
type WeaveNetworkingSpec struct {
|
type WeaveNetworkingSpec struct {
|
||||||
|
MTU *int32 `json:"mtu,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flannel declares that we want Flannel networking
|
// Flannel declares that we want Flannel networking
|
||||||
|
|
|
@ -1765,6 +1765,7 @@ func Convert_kops_RBACAuthorizationSpec_To_v1alpha1_RBACAuthorizationSpec(in *ko
|
||||||
}
|
}
|
||||||
|
|
||||||
func autoConvert_v1alpha1_WeaveNetworkingSpec_To_kops_WeaveNetworkingSpec(in *WeaveNetworkingSpec, out *kops.WeaveNetworkingSpec, s conversion.Scope) error {
|
func autoConvert_v1alpha1_WeaveNetworkingSpec_To_kops_WeaveNetworkingSpec(in *WeaveNetworkingSpec, out *kops.WeaveNetworkingSpec, s conversion.Scope) error {
|
||||||
|
out.MTU = in.MTU
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1773,6 +1774,7 @@ func Convert_v1alpha1_WeaveNetworkingSpec_To_kops_WeaveNetworkingSpec(in *WeaveN
|
||||||
}
|
}
|
||||||
|
|
||||||
func autoConvert_kops_WeaveNetworkingSpec_To_v1alpha1_WeaveNetworkingSpec(in *kops.WeaveNetworkingSpec, out *WeaveNetworkingSpec, s conversion.Scope) error {
|
func autoConvert_kops_WeaveNetworkingSpec_To_v1alpha1_WeaveNetworkingSpec(in *kops.WeaveNetworkingSpec, out *WeaveNetworkingSpec, s conversion.Scope) error {
|
||||||
|
out.MTU = in.MTU
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,6 +54,7 @@ type KopeioNetworkingSpec struct {
|
||||||
|
|
||||||
// Weave declares that we want Weave networking
|
// Weave declares that we want Weave networking
|
||||||
type WeaveNetworkingSpec struct {
|
type WeaveNetworkingSpec struct {
|
||||||
|
MTU *int32 `json:"mtu,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flannel declares that we want Flannel networking
|
// Flannel declares that we want Flannel networking
|
||||||
|
|
|
@ -1919,6 +1919,7 @@ func Convert_kops_TopologySpec_To_v1alpha2_TopologySpec(in *kops.TopologySpec, o
|
||||||
}
|
}
|
||||||
|
|
||||||
func autoConvert_v1alpha2_WeaveNetworkingSpec_To_kops_WeaveNetworkingSpec(in *WeaveNetworkingSpec, out *kops.WeaveNetworkingSpec, s conversion.Scope) error {
|
func autoConvert_v1alpha2_WeaveNetworkingSpec_To_kops_WeaveNetworkingSpec(in *WeaveNetworkingSpec, out *kops.WeaveNetworkingSpec, s conversion.Scope) error {
|
||||||
|
out.MTU = in.MTU
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1927,6 +1928,7 @@ func Convert_v1alpha2_WeaveNetworkingSpec_To_kops_WeaveNetworkingSpec(in *WeaveN
|
||||||
}
|
}
|
||||||
|
|
||||||
func autoConvert_kops_WeaveNetworkingSpec_To_v1alpha2_WeaveNetworkingSpec(in *kops.WeaveNetworkingSpec, out *WeaveNetworkingSpec, s conversion.Scope) error {
|
func autoConvert_kops_WeaveNetworkingSpec_To_v1alpha2_WeaveNetworkingSpec(in *kops.WeaveNetworkingSpec, out *WeaveNetworkingSpec, s conversion.Scope) error {
|
||||||
|
out.MTU = in.MTU
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -97,6 +97,11 @@ spec:
|
||||||
limits:
|
limits:
|
||||||
cpu: 100m
|
cpu: 100m
|
||||||
memory: 200Mi
|
memory: 200Mi
|
||||||
|
{{if .Networking.Weave.MTU }}
|
||||||
|
env:
|
||||||
|
- name: WEAVE_MTU
|
||||||
|
value: "{{ .Networking.Weave.MTU }}"
|
||||||
|
{{end}}
|
||||||
- name: weave-npc
|
- name: weave-npc
|
||||||
image: weaveworks/weave-npc:1.9.4
|
image: weaveworks/weave-npc:1.9.4
|
||||||
resources:
|
resources:
|
|
@ -58,6 +58,11 @@ spec:
|
||||||
limits:
|
limits:
|
||||||
cpu: 100m
|
cpu: 100m
|
||||||
memory: 200Mi
|
memory: 200Mi
|
||||||
|
{{if .Networking.Weave.MTU }}
|
||||||
|
env:
|
||||||
|
- name: WEAVE_MTU
|
||||||
|
value: "{{ .Networking.Weave.MTU }}"
|
||||||
|
{{end}}
|
||||||
- name: weave-npc
|
- name: weave-npc
|
||||||
image: weaveworks/weave-npc:1.9.4
|
image: weaveworks/weave-npc:1.9.4
|
||||||
resources:
|
resources:
|
|
@ -241,7 +241,9 @@ func (b *BootstrapChannelBuilder) buildManifest() (*channelsapi.Addons, map[stri
|
||||||
|
|
||||||
if b.cluster.Spec.Networking.Weave != nil {
|
if b.cluster.Spec.Networking.Weave != nil {
|
||||||
key := "networking.weave"
|
key := "networking.weave"
|
||||||
version := "1.9.4"
|
|
||||||
|
// 1.9.5-kops.1 = 1.9.4 with WEAVE_MTU configured
|
||||||
|
version := "1.9.5-kops.1"
|
||||||
|
|
||||||
{
|
{
|
||||||
location := key + "/pre-k8s-1.6.yaml"
|
location := key + "/pre-k8s-1.6.yaml"
|
||||||
|
|
Loading…
Reference in New Issue