mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 01:40:07 +00:00
Merge pull request #120954 from HirazawaUi/deprecate-kubeProxyVersione-field
deprecate the kubeProxyVersion field of v1.Node
This commit is contained in:
commit
d475c249da
@ -4640,7 +4640,7 @@ type NodeSystemInfo struct {
|
|||||||
ContainerRuntimeVersion string
|
ContainerRuntimeVersion string
|
||||||
// Kubelet Version reported by the node.
|
// Kubelet Version reported by the node.
|
||||||
KubeletVersion string
|
KubeletVersion string
|
||||||
// KubeProxy Version reported by the node.
|
// Deprecated: KubeProxy Version reported by the node.
|
||||||
KubeProxyVersion string
|
KubeProxyVersion string
|
||||||
// The Operating System reported by the node
|
// The Operating System reported by the node
|
||||||
OperatingSystem string
|
OperatingSystem string
|
||||||
|
@ -236,6 +236,12 @@ const (
|
|||||||
// Disable in-tree functionality in kubelet to authenticate to cloud provider container registries for image pull credentials.
|
// Disable in-tree functionality in kubelet to authenticate to cloud provider container registries for image pull credentials.
|
||||||
DisableKubeletCloudCredentialProviders featuregate.Feature = "DisableKubeletCloudCredentialProviders"
|
DisableKubeletCloudCredentialProviders featuregate.Feature = "DisableKubeletCloudCredentialProviders"
|
||||||
|
|
||||||
|
// owner: @HirazawaUi
|
||||||
|
// kep: http://kep.k8s.io/4004
|
||||||
|
// alpha: v1.29
|
||||||
|
// DisableNodeKubeProxyVersion disable the status.nodeInfo.kubeProxyVersion field of v1.Node
|
||||||
|
DisableNodeKubeProxyVersion featuregate.Feature = "DisableNodeKubeProxyVersion"
|
||||||
|
|
||||||
// owner: @pohly
|
// owner: @pohly
|
||||||
// kep: http://kep.k8s.io/3063
|
// kep: http://kep.k8s.io/3063
|
||||||
// alpha: v1.26
|
// alpha: v1.26
|
||||||
@ -1000,6 +1006,8 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS
|
|||||||
|
|
||||||
DisableKubeletCloudCredentialProviders: {Default: true, PreRelease: featuregate.Beta},
|
DisableKubeletCloudCredentialProviders: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
|
DisableNodeKubeProxyVersion: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
|
||||||
DevicePluginCDIDevices: {Default: true, PreRelease: featuregate.Beta},
|
DevicePluginCDIDevices: {Default: true, PreRelease: featuregate.Beta},
|
||||||
|
|
||||||
DynamicResourceAllocation: {Default: false, PreRelease: featuregate.Alpha},
|
DynamicResourceAllocation: {Default: false, PreRelease: featuregate.Alpha},
|
||||||
|
@ -32,11 +32,13 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/errors"
|
"k8s.io/apimachinery/pkg/util/errors"
|
||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
cloudproviderapi "k8s.io/cloud-provider/api"
|
cloudproviderapi "k8s.io/cloud-provider/api"
|
||||||
cloudprovidernodeutil "k8s.io/cloud-provider/node/helpers"
|
cloudprovidernodeutil "k8s.io/cloud-provider/node/helpers"
|
||||||
"k8s.io/component-base/version"
|
"k8s.io/component-base/version"
|
||||||
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
|
||||||
|
"k8s.io/kubernetes/pkg/features"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cadvisor"
|
"k8s.io/kubernetes/pkg/kubelet/cadvisor"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
@ -410,8 +412,14 @@ func VersionInfo(versionInfoFunc func() (*cadvisorapiv1.VersionInfo, error), //
|
|||||||
node.Status.NodeInfo.ContainerRuntimeVersion = fmt.Sprintf("%s://%s", runtimeTypeFunc(), runtimeVersion)
|
node.Status.NodeInfo.ContainerRuntimeVersion = fmt.Sprintf("%s://%s", runtimeTypeFunc(), runtimeVersion)
|
||||||
|
|
||||||
node.Status.NodeInfo.KubeletVersion = version.Get().String()
|
node.Status.NodeInfo.KubeletVersion = version.Get().String()
|
||||||
// TODO: kube-proxy might be different version from kubelet in the future
|
|
||||||
node.Status.NodeInfo.KubeProxyVersion = version.Get().String()
|
if utilfeature.DefaultFeatureGate.Enabled(features.DisableNodeKubeProxyVersion) {
|
||||||
|
// This field is deprecated and should be cleared if it was previously set.
|
||||||
|
node.Status.NodeInfo.KubeProxyVersion = ""
|
||||||
|
} else {
|
||||||
|
node.Status.NodeInfo.KubeProxyVersion = version.Get().String()
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,8 @@ import (
|
|||||||
|
|
||||||
cadvisorapiv1 "github.com/google/cadvisor/info/v1"
|
cadvisorapiv1 "github.com/google/cadvisor/info/v1"
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
v1 "k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
apiequality "k8s.io/apimachinery/pkg/api/equality"
|
||||||
@ -35,9 +37,12 @@ import (
|
|||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/rand"
|
"k8s.io/apimachinery/pkg/util/rand"
|
||||||
"k8s.io/apimachinery/pkg/util/uuid"
|
"k8s.io/apimachinery/pkg/util/uuid"
|
||||||
|
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||||
cloudprovider "k8s.io/cloud-provider"
|
cloudprovider "k8s.io/cloud-provider"
|
||||||
fakecloud "k8s.io/cloud-provider/fake"
|
fakecloud "k8s.io/cloud-provider/fake"
|
||||||
|
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||||
"k8s.io/component-base/version"
|
"k8s.io/component-base/version"
|
||||||
|
"k8s.io/kubernetes/pkg/features"
|
||||||
"k8s.io/kubernetes/pkg/kubelet/cm"
|
"k8s.io/kubernetes/pkg/kubelet/cm"
|
||||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||||
kubecontainertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
|
kubecontainertest "k8s.io/kubernetes/pkg/kubelet/container/testing"
|
||||||
@ -46,9 +51,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
||||||
netutils "k8s.io/utils/net"
|
netutils "k8s.io/utils/net"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -1259,6 +1261,7 @@ func TestVersionInfo(t *testing.T) {
|
|||||||
runtimeVersionError error
|
runtimeVersionError error
|
||||||
expectNode *v1.Node
|
expectNode *v1.Node
|
||||||
expectError error
|
expectError error
|
||||||
|
kubeProxyVersion bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
desc: "versions set in node info",
|
desc: "versions set in node info",
|
||||||
@ -1282,6 +1285,7 @@ func TestVersionInfo(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
kubeProxyVersion: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
desc: "error getting version info",
|
desc: "error getting version info",
|
||||||
@ -1289,6 +1293,7 @@ func TestVersionInfo(t *testing.T) {
|
|||||||
versionInfoError: fmt.Errorf("foo"),
|
versionInfoError: fmt.Errorf("foo"),
|
||||||
expectNode: &v1.Node{},
|
expectNode: &v1.Node{},
|
||||||
expectError: fmt.Errorf("error getting version info: foo"),
|
expectError: fmt.Errorf("error getting version info: foo"),
|
||||||
|
kubeProxyVersion: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
desc: "error getting runtime version results in Unknown runtime",
|
desc: "error getting runtime version results in Unknown runtime",
|
||||||
@ -1305,11 +1310,70 @@ func TestVersionInfo(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
kubeProxyVersion: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "DisableNodeKubeProxyVersion FeatureGate enable, versions set in node info",
|
||||||
|
node: &v1.Node{},
|
||||||
|
versionInfo: &cadvisorapiv1.VersionInfo{
|
||||||
|
KernelVersion: "KernelVersion",
|
||||||
|
ContainerOsVersion: "ContainerOSVersion",
|
||||||
|
},
|
||||||
|
runtimeType: "RuntimeType",
|
||||||
|
runtimeVersion: &kubecontainertest.FakeVersion{
|
||||||
|
Version: "RuntimeVersion",
|
||||||
|
},
|
||||||
|
expectNode: &v1.Node{
|
||||||
|
Status: v1.NodeStatus{
|
||||||
|
NodeInfo: v1.NodeSystemInfo{
|
||||||
|
KernelVersion: "KernelVersion",
|
||||||
|
OSImage: "ContainerOSVersion",
|
||||||
|
ContainerRuntimeVersion: "RuntimeType://RuntimeVersion",
|
||||||
|
KubeletVersion: version.Get().String(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
kubeProxyVersion: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "DisableNodeKubeProxyVersion FeatureGate enable, KubeProxyVersion will be cleared if it is set.",
|
||||||
|
node: &v1.Node{
|
||||||
|
Status: v1.NodeStatus{
|
||||||
|
NodeInfo: v1.NodeSystemInfo{
|
||||||
|
KernelVersion: "KernelVersion",
|
||||||
|
OSImage: "ContainerOSVersion",
|
||||||
|
ContainerRuntimeVersion: "RuntimeType://RuntimeVersion",
|
||||||
|
KubeletVersion: version.Get().String(),
|
||||||
|
KubeProxyVersion: version.Get().String(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
versionInfo: &cadvisorapiv1.VersionInfo{
|
||||||
|
KernelVersion: "KernelVersion",
|
||||||
|
ContainerOsVersion: "ContainerOSVersion",
|
||||||
|
},
|
||||||
|
runtimeType: "RuntimeType",
|
||||||
|
runtimeVersion: &kubecontainertest.FakeVersion{
|
||||||
|
Version: "RuntimeVersion",
|
||||||
|
},
|
||||||
|
expectNode: &v1.Node{
|
||||||
|
Status: v1.NodeStatus{
|
||||||
|
NodeInfo: v1.NodeSystemInfo{
|
||||||
|
KernelVersion: "KernelVersion",
|
||||||
|
OSImage: "ContainerOSVersion",
|
||||||
|
ContainerRuntimeVersion: "RuntimeType://RuntimeVersion",
|
||||||
|
KubeletVersion: version.Get().String(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
kubeProxyVersion: false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range cases {
|
for _, tc := range cases {
|
||||||
t.Run(tc.desc, func(t *testing.T) {
|
t.Run(tc.desc, func(t *testing.T) {
|
||||||
|
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.DisableNodeKubeProxyVersion, !tc.kubeProxyVersion)()
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
versionInfoFunc := func() (*cadvisorapiv1.VersionInfo, error) {
|
versionInfoFunc := func() (*cadvisorapiv1.VersionInfo, error) {
|
||||||
return tc.versionInfo, tc.versionInfoError
|
return tc.versionInfo, tc.versionInfoError
|
||||||
|
Loading…
Reference in New Issue
Block a user