Skip to content

Commit b3e9b19

Browse files
authored
Merge pull request #818 from l1b0k/fix/eni
fix(demon): update config and logging for ENIOnly mode
2 parents 2418fb9 + 4799f6d commit b3e9b19

File tree

2 files changed

+66
-25
lines changed

2 files changed

+66
-25
lines changed

daemon/builder.go

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ func (b *NetworkServiceBuilder) InitK8S() *NetworkServiceBuilder {
120120

121121
if types.NodeExclusiveENIMode(b.service.k8s.Node().Labels) == types.ExclusiveENIOnly {
122122
b.service.daemonMode = daemon.ModeENIOnly
123+
b.daemonMode = daemon.ModeENIOnly
124+
b.service.ipamType = types.IPAMTypeCRD
123125
}
124126

125127
if utils.ISLinJunNode(b.service.k8s.Node().Labels) {
@@ -382,34 +384,40 @@ func (b *NetworkServiceBuilder) setupENIManager() error {
382384

383385
var eniList []eni.NetworkInterface
384386

385-
var (
386-
normalENICount int
387-
erdmaENICount int
388-
)
389-
for _, ni := range attached {
390-
serviceLog.V(5).Info("found attached eni", "eni", ni)
391-
if b.config.EnableENITrunking && ni.Trunk && trunkENIID == ni.ID {
392-
lo := eni.NewLocal(ni, "trunk", factory, poolConfig)
393-
normalENICount++
394-
eniList = append(eniList, eni.NewTrunk(b.service.k8s.GetClient(), lo))
395-
} else if b.config.EnableERDMA && ni.ERdma {
396-
erdmaENICount++
397-
eniList = append(eniList, eni.NewLocal(ni, "erdma", factory, poolConfig))
398-
} else {
399-
normalENICount++
400-
eniList = append(eniList, eni.NewLocal(ni, "secondary", factory, poolConfig))
387+
if b.daemonMode == daemon.ModeENIOnly {
388+
eniList = append(eniList, eni.NewRemote(b.service.k8s.GetClient(), nil))
389+
} else {
390+
var (
391+
normalENICount int
392+
erdmaENICount int
393+
)
394+
for _, ni := range attached {
395+
serviceLog.Info("found attached eni", "eni", ni)
396+
if b.config.EnableENITrunking && ni.Trunk && trunkENIID == ni.ID {
397+
lo := eni.NewLocal(ni, "trunk", factory, poolConfig)
398+
399+
serviceLog.Info("trunk inited")
400+
normalENICount++
401+
eniList = append(eniList, eni.NewTrunk(b.service.k8s.GetClient(), lo))
402+
} else if b.config.EnableERDMA && ni.ERdma {
403+
erdmaENICount++
404+
eniList = append(eniList, eni.NewLocal(ni, "erdma", factory, poolConfig))
405+
} else {
406+
normalENICount++
407+
eniList = append(eniList, eni.NewLocal(ni, "secondary", factory, poolConfig))
408+
}
401409
}
402-
}
403-
normalENINeeded := poolConfig.MaxENI - normalENICount
404-
if b.config.EnableERDMA {
405-
normalENINeeded = poolConfig.MaxENI - b.limit.ERDMARes() - normalENICount
406-
for i := 0; i < b.limit.ERDMARes()-erdmaENICount; i++ {
407-
eniList = append(eniList, eni.NewLocal(nil, "erdma", factory, poolConfig))
410+
normalENINeeded := poolConfig.MaxENI - normalENICount
411+
if b.config.EnableERDMA {
412+
normalENINeeded = poolConfig.MaxENI - b.limit.ERDMARes() - normalENICount
413+
for i := 0; i < b.limit.ERDMARes()-erdmaENICount; i++ {
414+
eniList = append(eniList, eni.NewLocal(nil, "erdma", factory, poolConfig))
415+
}
408416
}
409-
}
410417

411-
for i := 0; i < normalENINeeded; i++ {
412-
eniList = append(eniList, eni.NewLocal(nil, "secondary", factory, poolConfig))
418+
for i := 0; i < normalENINeeded; i++ {
419+
eniList = append(eniList, eni.NewLocal(nil, "secondary", factory, poolConfig))
420+
}
413421
}
414422

415423
eniManager := eni.NewManager(poolConfig.MinPoolSize, poolConfig.MaxPoolSize, poolConfig.Capacity, 30*time.Second, eniList, daemon.EniSelectionPolicy(b.config.EniSelectionPolicy), b.service.k8s)

daemon/config.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,39 @@ func getPoolConfig(cfg *daemon.Config, daemonMode string, limit *client.Limits)
8484
maxMemberENI := 0
8585

8686
switch daemonMode {
87+
case daemon.ModeENIOnly:
88+
maxENI = limit.Adapters
89+
maxENI = int(float64(maxENI)*cfg.EniCapRatio) + cfg.EniCapShift - 1
90+
91+
// set max eni node can use
92+
if cfg.MaxENI > 0 && cfg.MaxENI < maxENI {
93+
maxENI = cfg.MaxENI
94+
}
95+
96+
capacity = maxENI
97+
98+
if cfg.MaxPoolSize > maxENI {
99+
poolConfig.MaxPoolSize = maxENI
100+
} else {
101+
poolConfig.MaxPoolSize = cfg.MaxPoolSize
102+
}
103+
104+
poolConfig.MinPoolSize = cfg.MinPoolSize
105+
106+
if cfg.MinENI > 0 {
107+
poolConfig.MinPoolSize = cfg.MinENI
108+
}
109+
110+
if poolConfig.MinPoolSize > poolConfig.MaxPoolSize {
111+
poolConfig.MinPoolSize = poolConfig.MaxPoolSize
112+
}
113+
114+
poolConfig.MaxIPPerENI = 1
115+
if cfg.EnableERDMA {
116+
poolConfig.ERdmaCapacity = limit.ERdmaAdapters
117+
}
118+
poolConfig.MaxPoolSize = 0
119+
poolConfig.MinPoolSize = 0
87120
case daemon.ModeENIMultiIP:
88121
maxENI = limit.Adapters
89122
maxENI = int(float64(maxENI)*cfg.EniCapRatio) + cfg.EniCapShift - 1

0 commit comments

Comments
 (0)