code: func GetKernelVersionAndIPVSMods(Executor exec.Interface) (kernelVersion string, ipvsModules []string, err error) {
  	kernelVersionFile := "/proc/sys/kernel/osrelease"
  	out, err := Executor.Command("cut", "-f1", "-d", " ", kernelVersionFile).CombinedOutput()
  	if err != nil {
  		return "", nil, fmt.Errorf("error getting os release kernel version: %v(%s)", err, out)
  	}
  	kernelVersion = strings.TrimSpace(string(out))
  	// parse kernel version
  	ver1, err := version.ParseGeneric(kernelVersion)
  	if err != nil {
  		return kernelVersion, nil, fmt.Errorf("error parsing kernel version: %v(%s)", err, kernelVersion)
  	}
  	// "nf_conntrack_ipv4" has been removed since v4.19
  	// see https://github.com/torvalds/linux/commit/a0ae2562c6c4b2721d9fddba63b7286c13517d9f
  	ver2, _ := version.ParseGeneric("4.19")
  	// get required ipvs modules
  	if ver1.LessThan(ver2) {
  		ipvsModules = append(ipvsModules, ModIPVS, ModIPVSRR, ModIPVSWRR, ModIPVSSH, ModNfConntrackIPV4)
  	} else {
  		ipvsModules = append(ipvsModules, ModIPVS, ModIPVSRR, ModIPVSWRR, ModIPVSSH, ModNfConntrack)
  	}
  
  	return kernelVersion, ipvsModules, nil
  }
docs: // GetKernelVersionAndIPVSMods returns the linux kernel version and the required ipvs modules