@@ -19,10 +19,7 @@ package controller
19
19
import (
20
20
"context"
21
21
"fmt"
22
- "io/ioutil"
23
22
"net"
24
- "os"
25
- "strings"
26
23
"time"
27
24
28
25
ctrl "sigs.k8s.io/controller-runtime"
@@ -32,21 +29,14 @@ import (
32
29
"sigs.k8s.io/controller-runtime/pkg/predicate"
33
30
"sigs.k8s.io/controller-runtime/pkg/source"
34
31
35
- "github.com/go-logr/logr"
36
-
37
32
"k8s.io/apimachinery/pkg/types"
38
33
39
34
"sigs.k8s.io/controller-runtime/pkg/client"
40
35
"sigs.k8s.io/controller-runtime/pkg/log"
41
36
"sigs.k8s.io/controller-runtime/pkg/reconcile"
42
37
43
- "github.com/containernetworking/plugins/pkg/ip"
44
- "github.com/containernetworking/plugins/pkg/ns"
45
- "github.com/vishvananda/netlink"
46
-
47
38
networkingv1 "github.com/alibaba/hybridnet/pkg/apis/networking/v1"
48
39
"github.com/alibaba/hybridnet/pkg/constants"
49
- "github.com/alibaba/hybridnet/pkg/daemon/containernetwork"
50
40
daemonutils "github.com/alibaba/hybridnet/pkg/daemon/utils"
51
41
)
52
42
@@ -64,13 +54,6 @@ func (r *ipInstanceReconciler) Reconcile(ctx context.Context, request reconcile.
64
54
logger .V (2 ).Info ("IPInstance information reconciled" , "time" , endTime )
65
55
}()
66
56
67
- if ! r .ctrlHubRef .upgradeWorkDone {
68
- if err := ensureExistPodConfigs (r .ctrlHubRef .config .LocalDirectTableNum , logger ); err != nil {
69
- return reconcile.Result {Requeue : true }, fmt .Errorf ("failed to ensure exist pod config: %v" , err )
70
- }
71
- r .ctrlHubRef .upgradeWorkDone = true
72
- }
73
-
74
57
ipInstanceList := & networkingv1.IPInstanceList {}
75
58
if err := r .List (ctx , ipInstanceList ,
76
59
client.MatchingLabels {constants .LabelNode : r .ctrlHubRef .config .NodeName }); err != nil {
@@ -219,140 +202,3 @@ func (r *ipInstanceReconciler) SetupWithManager(mgr ctrl.Manager) error {
219
202
220
203
return nil
221
204
}
222
-
223
- // TODO: update logic, need to be removed further
224
- func ensureExistPodConfigs (localDirectTableNum int , logger logr.Logger ) error {
225
- var netnsPaths []string
226
- var netnsDir string
227
-
228
- if daemonutils .ValidDockerNetnsDir (constants .DockerNetnsDir ) {
229
- netnsDir = constants .DockerNetnsDir
230
- } else {
231
- logger .Info ("docker netns path not exist, try containerd netns path" ,
232
- "docker-netns-path" , constants .DockerNetnsDir ,
233
- "containerd-netns-path" , constants .ContainerdNetnsDir )
234
- netnsDir = constants .ContainerdNetnsDir
235
- }
236
-
237
- files , err := ioutil .ReadDir (netnsDir )
238
- if err != nil && ! os .IsNotExist (err ) {
239
- return err
240
- }
241
-
242
- for _ , f := range files {
243
- if f .Name () == "default" {
244
- continue
245
- }
246
- fpath := netnsDir + "/" + f .Name ()
247
- if daemonutils .IsProcFS (fpath ) || daemonutils .IsNsFS (fpath ) {
248
- netnsPaths = append (netnsPaths , fpath )
249
- }
250
- }
251
-
252
- logger .Info ("load exist netns" , "netns-path" , netnsPaths )
253
-
254
- var hostLinkIndex int
255
- allocatedIPs := map [networkingv1.IPVersion ]* daemonutils.IPInfo {}
256
-
257
- for _ , netns := range netnsPaths {
258
- nsHandler , err := ns .GetNS (netns )
259
- if err != nil {
260
- return fmt .Errorf ("get ns error: %v" , err )
261
- }
262
-
263
- err = nsHandler .Do (func (netNS ns.NetNS ) error {
264
- link , err := netlink .LinkByName (constants .ContainerNicName )
265
- if err != nil {
266
- return fmt .Errorf ("get container interface error: %v" , err )
267
- }
268
-
269
- v4Addrs , err := netlink .AddrList (link , netlink .FAMILY_V4 )
270
- if err != nil {
271
- return fmt .Errorf ("failed to get v4 container interface addr: %v" , err )
272
- }
273
-
274
- var v4GatewayIP net.IP
275
- if len (v4Addrs ) == 0 {
276
- allocatedIPs [networkingv1 .IPv4 ] = nil
277
- } else {
278
- defaultRoute , err := daemonutils .GetDefaultRoute (netlink .FAMILY_V4 )
279
- if err != nil {
280
- return fmt .Errorf ("failed to get ipv4 default route: %v" , err )
281
- }
282
- v4GatewayIP = defaultRoute .Gw
283
- }
284
-
285
- for _ , addr := range v4Addrs {
286
- allocatedIPs [networkingv1 .IPv4 ] = & daemonutils.IPInfo {
287
- Addr : addr .IP ,
288
- Gw : v4GatewayIP ,
289
- }
290
- }
291
-
292
- v6Addrs , err := netlink .AddrList (link , netlink .FAMILY_V6 )
293
- if err != nil {
294
- return fmt .Errorf ("failed to get v6 container interface addr: %v" , err )
295
- }
296
-
297
- var v6GatewayIP net.IP
298
- if len (v6Addrs ) == 0 {
299
- allocatedIPs [networkingv1 .IPv6 ] = nil
300
- } else {
301
- defaultRoute , err := daemonutils .GetDefaultRoute (netlink .FAMILY_V6 )
302
- if err != nil {
303
- return fmt .Errorf ("failed to get ipv6 default route: %v" , err )
304
- }
305
- v6GatewayIP = defaultRoute .Gw
306
- }
307
-
308
- for _ , addr := range v6Addrs {
309
- allocatedIPs [networkingv1 .IPv6 ] = & daemonutils.IPInfo {
310
- Addr : addr .IP ,
311
- Gw : v6GatewayIP ,
312
- }
313
- }
314
-
315
- _ , hostLinkIndex , err = ip .GetVethPeerIfindex (constants .ContainerNicName )
316
- if err != nil {
317
- return fmt .Errorf ("get host link index error: %v" , err )
318
- }
319
-
320
- return nil
321
- })
322
-
323
- if err != nil {
324
- logger .Error (err , "get pod addresses and host link index error" )
325
- }
326
-
327
- if hostLinkIndex == 0 {
328
- continue
329
- }
330
-
331
- hostLink , err := netlink .LinkByIndex (hostLinkIndex )
332
- if err != nil {
333
- return fmt .Errorf ("failed to get host link by index %v: %v" , hostLinkIndex , err )
334
- }
335
-
336
- // this container doesn't belong to k8s
337
- if ! strings .HasSuffix (hostLink .Attrs ().Name , "_h" ) {
338
- continue
339
- }
340
-
341
- if hostLink .Attrs ().MasterIndex != 0 {
342
- bridge , err := netlink .LinkByIndex (hostLink .Attrs ().MasterIndex )
343
- if err != nil {
344
- return fmt .Errorf ("failed to get bridge by index %v: %v" , hostLink .Attrs ().MasterIndex , err )
345
- }
346
-
347
- if err := netlink .LinkDel (bridge ); err != nil {
348
- return fmt .Errorf ("failed to delete bridge %v: %v" , bridge .Attrs ().Name , err )
349
- }
350
- }
351
-
352
- if err := containernetwork .ConfigureHostNic (hostLink .Attrs ().Name , allocatedIPs , localDirectTableNum ); err != nil {
353
- return fmt .Errorf ("failed to reconfigure host nic %v: %v" , hostLink .Attrs ().Name , err )
354
- }
355
- }
356
-
357
- return nil
358
- }
0 commit comments