diff --git a/pkg/kubelet/dockershim/network/cni/cni.go b/pkg/kubelet/dockershim/network/cni/cni.go index b257952af8..c2f5b25734 100644 --- a/pkg/kubelet/dockershim/network/cni/cni.go +++ b/pkg/kubelet/dockershim/network/cni/cni.go @@ -398,11 +398,14 @@ func (plugin *cniNetworkPlugin) buildCNIRuntimeConf(podName string, podNs string if ingress != nil || egress != nil { bandwidthParam := cniBandwidthEntry{} if ingress != nil { - bandwidthParam.IngressRate = int(ingress.Value() / 1000) + // see: https://github.com/containernetworking/cni/blob/master/CONVENTIONS.md and + // https://github.com/containernetworking/plugins/blob/master/plugins/meta/bandwidth/README.md + // Rates are in bits per second, burst values are in bits. + bandwidthParam.IngressRate = int(ingress.Value()) bandwidthParam.IngressBurst = math.MaxInt32 // no limit } if egress != nil { - bandwidthParam.EgressRate = int(egress.Value() / 1000) + bandwidthParam.EgressRate = int(egress.Value()) bandwidthParam.EgressBurst = math.MaxInt32 // no limit } rt.CapabilityArgs["bandwidth"] = bandwidthParam diff --git a/pkg/kubelet/dockershim/network/cni/cni_test.go b/pkg/kubelet/dockershim/network/cni/cni_test.go index 241bd1fca5..997bf973b7 100644 --- a/pkg/kubelet/dockershim/network/cni/cni_test.go +++ b/pkg/kubelet/dockershim/network/cni/cni_test.go @@ -291,7 +291,7 @@ func TestCNIPlugin(t *testing.T) { t.Errorf("mismatch in expected port mappings. expected %v got %v", expectedMappings, inputConfig.RuntimeConfig.PortMappings) } expectedBandwidth := map[string]interface{}{ - "ingressRate": 1000.0, "egressRate": 1000.0, + "ingressRate": 1000000.0, "egressRate": 1000000.0, "ingressBurst": 2147483647.0, "egressBurst": 2147483647.0, } if !reflect.DeepEqual(inputConfig.RuntimeConfig.Bandwidth, expectedBandwidth) {