Skip to content

Commit 09b552d

Browse files
Merge pull request #92 from qiangzii/master
reserve 64 ip for vlan when vxnet mask is 24; fix hostnic-controller and hostnic-node log;
2 parents 7d6d621 + d9a5342 commit 09b552d

File tree

5 files changed

+24
-12
lines changed

5 files changed

+24
-12
lines changed

cmd/controller/main.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ var qps, burst int
4545

4646
func main() {
4747
klog.InitFlags(goflag.CommandLine)
48-
goflag.Set("logtostderr", "false")
49-
goflag.Set("alsologtostderr", "true")
5048
flag.IntVar(&qps, "k8s-api-qps", 80, "maximum QPS to k8s apiserver from this client.")
5149
flag.IntVar(&burst, "k8s-api-burst", 100, "maximum burst for throttle from this client.")
5250
flag.CommandLine.AddGoFlagSet(goflag.CommandLine)

cmd/hostnic/ipam/ipam.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ func AddrUnalloc(args *skel.CmdArgs, peek bool) (*rpc.IPAMMessage, error) {
146146
} else {
147147
if err := networkutils.NetworkHelper.CleanupPodNetwork(reply.Nic, reply.IP); err != nil {
148148
logrus.Errorf("clean %v %s network failed: %v", reply.Nic, reply.IP, err)
149+
//HOSTNIC_TODO: try to cleanup ebtables rules once there
149150
}
150151
}
151152

cmd/ipam/main.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ var qps, burst, metricsPort int
4747
func main() {
4848
//parse flag and setup klog
4949
log.InitFlags(flag.CommandLine)
50-
flag.Set("logtostderr", "false")
51-
flag.Set("alsologtostderr", "true")
5250
flag.IntVar(&qps, "k8s-api-qps", 80, "maximum QPS to k8s apiserver from this client.")
5351
flag.IntVar(&burst, "k8s-api-burst", 100, "maximum burst for throttle from this client.")
5452
flag.IntVar(&metricsPort, "metrics-port", 9191, "metrics port")

pkg/allocator/allocator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ func (a *Allocator) FreeHostNic(args *rpc.PodInfo, peek bool) (*rpc.HostNic, str
261261
for _, status := range a.nics {
262262
if pod, ok := status.Pods[getContainterKey(args)]; ok {
263263
if err := a.delNicPod(status.Nic, pod); err != nil {
264-
log.Errorf("delNicPod failed: %s %s %v", getNicKey(status.Nic), getPodKey(args), err)
264+
log.Errorf("delNicPod failed: %s %s %v", getNicKey(status.Nic), getPodKey(args), err) //HOSTNIC_TODO:the error was not return, why?
265265
}
266266
return status.Nic, pod.PodIP, nil
267267
}

pkg/qcclient/wrapper.go

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"encoding/json"
55
"fmt"
66
"math/big"
7+
"net"
78
"os"
89
"time"
910

@@ -25,11 +26,15 @@ const (
2526
defaultWaitInterval = 5 * time.Second
2627

2728
reservedVIPCount = 12
28-
reservedVIPCountForVlan int64 = 7
29+
reservedVIPCountForVlan int64 = 7 //reserve 1/7 ip for hostnic br
2930

3031
TunnelTypeVlan = "vlan"
3132
)
3233

34+
var (
35+
customReservedIPCount int64 = 0
36+
)
37+
3338
type Options struct {
3439
Tag string
3540
}
@@ -468,9 +473,19 @@ func (q *qingcloudAPIWrapper) getVxNets(ids []string, public bool) ([]*rpc.VxNet
468473
vxnetItem.TunnelType = *qcVxNet.TunnelType
469474
}
470475
if vxnetItem.TunnelType == TunnelTypeVlan {
471-
vxnetItem.IPEnd = getIPEndAfterReservedForVlan(*qcVxNet.Router.DYNIPStart, *qcVxNet.Router.DYNIPEnd, reservedVIPCountForVlan)
476+
// parse ip_network to get mask; if mask is 24, reserve more ip than specifc in config
477+
_, ipNet, err := net.ParseCIDR(vxnetItem.Network)
478+
if err != nil {
479+
log.Errorf("parse ip_network to get mask error: %v", err)
480+
}
481+
maskLength, _ := ipNet.Mask.Size()
482+
if maskLength == 24 {
483+
log.Infof("vxnet %s ip network %s mask is 24, reserve another 64 ip", *qcVxNet.VxNetID, vxnetItem.Network)
484+
customReservedIPCount = 64
485+
}
486+
vxnetItem.IPEnd = getIPEndAfterReservedForVlan(*qcVxNet.Router.DYNIPStart, *qcVxNet.Router.DYNIPEnd, reservedVIPCountForVlan, customReservedIPCount)
472487
} else {
473-
vxnetItem.IPEnd = getIPEndAfterReserved(*qcVxNet.Router.DYNIPEnd, reservedVIPCount)
488+
vxnetItem.IPEnd = getIPEndAfterReserved(*qcVxNet.Router.DYNIPEnd, reservedVIPCount, customReservedIPCount)
474489
}
475490
} else {
476491
return nil, fmt.Errorf("vxnet %s should bind to vpc", *qcVxNet.VxNetID)
@@ -746,15 +761,15 @@ func IPRangeCount(from, to string) int {
746761
return int(big.NewInt(0).Sub(endInt, startInt).Int64() + 1)
747762
}
748763

749-
func getIPEndAfterReserved(end string, reservedCount int64) string {
764+
func getIPEndAfterReserved(end string, reservedCount, customReservedCount int64) string {
750765
e := cnet.ParseIP(end)
751-
i := big.NewInt(0).Sub(cnet.IPToBigInt(*e), big.NewInt(reservedCount))
766+
i := big.NewInt(0).Sub(cnet.IPToBigInt(*e), big.NewInt(reservedCount+customReservedCount))
752767
return cnet.BigIntToIP(i).String()
753768
}
754769

755-
func getIPEndAfterReservedForVlan(start, end string, reservedCount int64) string {
770+
func getIPEndAfterReservedForVlan(start, end string, reservedCount, customReservedCount int64) string {
756771
s := cnet.ParseIP(start)
757772
e := cnet.ParseIP(end)
758-
i := big.NewInt(0).Sub(cnet.IPToBigInt(*e), big.NewInt((cnet.IPToBigInt(*e).Int64()-cnet.IPToBigInt(*s).Int64()+1)/reservedCount))
773+
i := big.NewInt(0).Sub(cnet.IPToBigInt(*e), big.NewInt((cnet.IPToBigInt(*e).Int64()-cnet.IPToBigInt(*s).Int64()+1)/reservedCount+customReservedCount))
759774
return cnet.BigIntToIP(i).String()
760775
}

0 commit comments

Comments
 (0)