ipvs icon indicating copy to clipboard operation
ipvs copied to clipboard

Using this package without ipvs doesn't return error

Open uablrek opened this issue 2 years ago • 3 comments

I use you example, slightly modified;

package main

import (
	"log"

	"github.com/moby/ipvs"
)

func main() {
	handle, err := ipvs.New("")
	if err != nil {
		log.Fatalf("ipvs.New: %s", err)
	}
	log.Println("ipvs.New did NOT give an error!!")
	_, err = handle.GetServices()
	if err != nil {
		log.Fatalf("handle.GetServices: %s", err)
	}
	log.Println("handle.GetServices did NOT give an error!!")
}

And run on a kernel where ipvs is not configured. Output:

# moby-example 
WARN[0000] Running modprobe ip_vs failed with message: `modprobe: WARNING: Module ip_vs not found in directory /lib/modules/6.1.0`, error: exit status 1 
ERRO[0000] Could not get ipvs family information from the kernel. It is possible that ipvs is not enabled in your kernel. Native loadbalancing will not work until this is fixed. 
2022/12/23 18:09:43 ipvs.New did NOT give an error!!
2022/12/23 18:09:43 handle.GetServices did NOT give an error!!

So, that ipvs can't be loaded is obviously noted, but even so err==nil is returned.

This is a serious bug, which enforces weird work-arounds do detect if ipvs can be used:

https://github.com/Nordix/kubernetes/blob/68d78c89eccf2d2f381033c836472d53f3ba41c9/pkg/proxy/ipvs/proxier.go#L692-L694

uablrek avatar Dec 23 '22 18:12 uablrek

This is output on a statically linked kernel where ipvs is configured:

# moby-example 
WARN[0000] Running modprobe ip_vs failed with message: `modprobe: WARNING: Module ip_vs not found in directory /lib/modules/6.0.0`, error: exit status 1 
2022/12/23 18:22:09 ipvs.New did NOT give an error!!
2022/12/23 18:22:09 handle.GetServices did NOT give an error!!

Please drop the "WARN". To use a statically linked kernel is not an "odd thing". When using moby/ipvs in a system that tries to use structured logging, printouts like this from a library is an annoyance.

uablrek avatar Dec 23 '22 18:12 uablrek

Is this project still active?

uablrek avatar Feb 01 '23 05:02 uablrek

@thaJeztah, can you help see this problem

lojies avatar Oct 14 '23 08:10 lojies