Automatic merge from submit-queue (batch tested with PRs 55247, 55324, 55261, 55147, 54052). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Implement dummy device operation by netlink for ipvs proxier **What this PR does / why we need it**: Currently, we implement network interface operations, e.g. create a dummy device and delete a dummy interface via ip cmd and then collect the exist code. For example, we assume the following command: ``` ip link add kube-ipvs0 type dummy ``` returns 2 means the dummy device `kube-ipvs0` exists, see https://github.com/kubernetes/kubernetes/blob/master/pkg/proxy/ipvs/proxier.go#L1529 . However, from the man page of ip command, exit status 2 just means an error was reported by the kernel, see http://man7.org/linux/man-pages/man8/ip.8.html#EXIT_STATUS. So, that's a bug. This PR implements dummy device operation by netlink for ipvs proxier so that can get ride of ip command operations. **Which issue this PR fixes**: fixes #54054 **Special notes for your reviewer**: **Release note**: ```release-note NONE ``` /sig network /area kube-proxy /kind bug
93 lines
3.2 KiB
Python
93 lines
3.2 KiB
Python
package(default_visibility = ["//visibility:public"])
|
|
|
|
load(
|
|
"@io_bazel_rules_go//go:def.bzl",
|
|
"go_library",
|
|
"go_test",
|
|
)
|
|
|
|
go_test(
|
|
name = "go_default_test",
|
|
srcs = [
|
|
"proxier_test.go",
|
|
],
|
|
importpath = "k8s.io/kubernetes/pkg/proxy/ipvs",
|
|
library = ":go_default_library",
|
|
deps = [
|
|
"//pkg/api:go_default_library",
|
|
"//pkg/proxy:go_default_library",
|
|
"//pkg/proxy/ipvs/testing:go_default_library",
|
|
"//pkg/proxy/util:go_default_library",
|
|
"//pkg/util/iptables:go_default_library",
|
|
"//pkg/util/iptables/testing:go_default_library",
|
|
"//pkg/util/ipvs:go_default_library",
|
|
"//pkg/util/ipvs/testing:go_default_library",
|
|
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/util/intstr:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
|
"//vendor/k8s.io/utils/exec:go_default_library",
|
|
"//vendor/k8s.io/utils/exec/testing:go_default_library",
|
|
],
|
|
)
|
|
|
|
go_library(
|
|
name = "go_default_library",
|
|
srcs = [
|
|
"netlink.go",
|
|
"netlink_unsupported.go",
|
|
"proxier.go",
|
|
] + select({
|
|
"@io_bazel_rules_go//go/platform:linux_amd64": [
|
|
"netlink_linux.go",
|
|
],
|
|
"//conditions:default": [],
|
|
}),
|
|
importpath = "k8s.io/kubernetes/pkg/proxy/ipvs",
|
|
deps = [
|
|
"//pkg/api:go_default_library",
|
|
"//pkg/api/helper:go_default_library",
|
|
"//pkg/api/service:go_default_library",
|
|
"//pkg/features:go_default_library",
|
|
"//pkg/proxy:go_default_library",
|
|
"//pkg/proxy/healthcheck:go_default_library",
|
|
"//pkg/proxy/metrics:go_default_library",
|
|
"//pkg/proxy/util:go_default_library",
|
|
"//pkg/util/async:go_default_library",
|
|
"//pkg/util/iptables:go_default_library",
|
|
"//pkg/util/ipvs:go_default_library",
|
|
"//pkg/util/sysctl:go_default_library",
|
|
"//vendor/github.com/golang/glog:go_default_library",
|
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
|
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
|
|
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
|
"//vendor/k8s.io/client-go/tools/record:go_default_library",
|
|
"//vendor/k8s.io/utils/exec:go_default_library",
|
|
] + select({
|
|
"@io_bazel_rules_go//go/platform:linux_amd64": [
|
|
"//vendor/github.com/vishvananda/netlink:go_default_library",
|
|
],
|
|
"//conditions:default": [],
|
|
}),
|
|
)
|
|
|
|
filegroup(
|
|
name = "package-srcs",
|
|
srcs = glob(["**"]),
|
|
tags = ["automanaged"],
|
|
visibility = ["//visibility:private"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "all-srcs",
|
|
srcs = [
|
|
":package-srcs",
|
|
"//pkg/proxy/ipvs/testing:all-srcs",
|
|
],
|
|
tags = ["automanaged"],
|
|
)
|