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.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))
|
||||
|
||||
// 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 != "" {
|
||||
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
|
||||
```
|
||||
|
||||
### 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
|
||||
|
||||
#### Installing Calico on a new Cluster
|
||||
|
|
|
@ -54,6 +54,7 @@ type KopeioNetworkingSpec struct {
|
|||
|
||||
// Weave declares that we want Weave networking
|
||||
type WeaveNetworkingSpec struct {
|
||||
MTU *int32 `json:"mtu,omitempty"`
|
||||
}
|
||||
|
||||
// Flannel declares that we want Flannel networking
|
||||
|
|
|
@ -54,6 +54,7 @@ type KopeioNetworkingSpec struct {
|
|||
|
||||
// Weave declares that we want Weave networking
|
||||
type WeaveNetworkingSpec struct {
|
||||
MTU *int32 `json:"mtu,omitempty"`
|
||||
}
|
||||
|
||||
// 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 {
|
||||
out.MTU = in.MTU
|
||||
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 {
|
||||
out.MTU = in.MTU
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ type KopeioNetworkingSpec struct {
|
|||
|
||||
// Weave declares that we want Weave networking
|
||||
type WeaveNetworkingSpec struct {
|
||||
MTU *int32 `json:"mtu,omitempty"`
|
||||
}
|
||||
|
||||
// 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 {
|
||||
out.MTU = in.MTU
|
||||
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 {
|
||||
out.MTU = in.MTU
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -97,6 +97,11 @@ spec:
|
|||
limits:
|
||||
cpu: 100m
|
||||
memory: 200Mi
|
||||
{{if .Networking.Weave.MTU }}
|
||||
env:
|
||||
- name: WEAVE_MTU
|
||||
value: "{{ .Networking.Weave.MTU }}"
|
||||
{{end}}
|
||||
- name: weave-npc
|
||||
image: weaveworks/weave-npc:1.9.4
|
||||
resources:
|
|
@ -58,6 +58,11 @@ spec:
|
|||
limits:
|
||||
cpu: 100m
|
||||
memory: 200Mi
|
||||
{{if .Networking.Weave.MTU }}
|
||||
env:
|
||||
- name: WEAVE_MTU
|
||||
value: "{{ .Networking.Weave.MTU }}"
|
||||
{{end}}
|
||||
- name: weave-npc
|
||||
image: weaveworks/weave-npc:1.9.4
|
||||
resources:
|
|
@ -241,7 +241,9 @@ func (b *BootstrapChannelBuilder) buildManifest() (*channelsapi.Addons, map[stri
|
|||
|
||||
if b.cluster.Spec.Networking.Weave != nil {
|
||||
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"
|
||||
|
|
Loading…
Reference in New Issue