diff --git a/pkg/kubelet/BUILD b/pkg/kubelet/BUILD index 4f2779ed865..80b7ec96a1c 100644 --- a/pkg/kubelet/BUILD +++ b/pkg/kubelet/BUILD @@ -42,6 +42,7 @@ go_library( "//pkg/capabilities:go_default_library", "//pkg/features:go_default_library", "//pkg/fieldpath:go_default_library", + "//pkg/kubelet/apis:go_default_library", "//pkg/kubelet/apis/config:go_default_library", "//pkg/kubelet/apis/cri:go_default_library", "//pkg/kubelet/apis/cri/runtime/v1alpha2:go_default_library", @@ -177,6 +178,7 @@ go_test( "//pkg/apis/core/install:go_default_library", "//pkg/capabilities:go_default_library", "//pkg/features:go_default_library", + "//pkg/kubelet/apis:go_default_library", "//pkg/kubelet/cadvisor/testing:go_default_library", "//pkg/kubelet/cm:go_default_library", "//pkg/kubelet/config:go_default_library", diff --git a/pkg/kubelet/apis/well_known_labels.go b/pkg/kubelet/apis/well_known_labels.go index b87c4bf7d37..ada371c6b83 100644 --- a/pkg/kubelet/apis/well_known_labels.go +++ b/pkg/kubelet/apis/well_known_labels.go @@ -24,6 +24,12 @@ import ( ) const ( + // The OS/Arch labels are promoted to GA in 1.14. kubelet applies both beta + // and GA labels to ensure backward compatibility. + // TODO: stop applying the beta OS/Arch labels in Kubernetes 1.18. + LabelOS = "beta.kubernetes.io/os" + LabelArch = "beta.kubernetes.io/arch" + // GA versions of the legacy beta labels. // TODO: update kubelet and controllers to set both beta and GA labels, then export these constants labelZoneFailureDomainGA = "failure-domain.kubernetes.io/zone" @@ -36,11 +42,11 @@ var kubeletLabels = sets.NewString( v1.LabelZoneFailureDomain, v1.LabelZoneRegion, v1.LabelInstanceType, - v1.LabelOS, - v1.LabelArch, + v1.LabelOSStable, + v1.LabelArchStable, - v1.LegacyLabelOS, - v1.LegacyLabelArch, + LabelOS, + LabelArch, labelZoneFailureDomainGA, labelZoneRegionGA, diff --git a/pkg/kubelet/kubelet_node_status.go b/pkg/kubelet/kubelet_node_status.go index 4441d282e5f..a9a2547c9e2 100644 --- a/pkg/kubelet/kubelet_node_status.go +++ b/pkg/kubelet/kubelet_node_status.go @@ -37,6 +37,7 @@ import ( k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1" v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" "k8s.io/kubernetes/pkg/features" + kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis" "k8s.io/kubernetes/pkg/kubelet/events" "k8s.io/kubernetes/pkg/kubelet/nodestatus" "k8s.io/kubernetes/pkg/kubelet/util" @@ -148,10 +149,10 @@ func (kl *Kubelet) updateDefaultLabels(initialNode, existingNode *v1.Node) bool v1.LabelZoneFailureDomain, v1.LabelZoneRegion, v1.LabelInstanceType, - v1.LabelOS, - v1.LabelArch, - v1.LegacyLabelOS, - v1.LegacyLabelArch, + v1.LabelOSStable, + v1.LabelArchStable, + kubeletapis.LabelOS, + kubeletapis.LabelArch, } needsUpdate := false @@ -214,11 +215,11 @@ func (kl *Kubelet) initialNode() (*v1.Node, error) { ObjectMeta: metav1.ObjectMeta{ Name: string(kl.nodeName), Labels: map[string]string{ - v1.LabelHostname: kl.hostname, - v1.LabelOS: goruntime.GOOS, - v1.LabelArch: goruntime.GOARCH, - v1.LegacyLabelOS: goruntime.GOOS, - v1.LegacyLabelArch: goruntime.GOARCH, + v1.LabelHostname: kl.hostname, + v1.LabelOSStable: goruntime.GOOS, + v1.LabelArchStable: goruntime.GOARCH, + kubeletapis.LabelOS: goruntime.GOOS, + kubeletapis.LabelArch: goruntime.GOARCH, }, }, Spec: v1.NodeSpec{ diff --git a/pkg/kubelet/kubelet_node_status_test.go b/pkg/kubelet/kubelet_node_status_test.go index c365ea01191..02a9723ac37 100644 --- a/pkg/kubelet/kubelet_node_status_test.go +++ b/pkg/kubelet/kubelet_node_status_test.go @@ -49,6 +49,7 @@ import ( "k8s.io/client-go/rest" core "k8s.io/client-go/testing" "k8s.io/kubernetes/pkg/features" + kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis" cadvisortest "k8s.io/kubernetes/pkg/kubelet/cadvisor/testing" "k8s.io/kubernetes/pkg/kubelet/cm" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" @@ -1253,11 +1254,11 @@ func TestRegisterWithApiServer(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Name: testKubeletHostname, Labels: map[string]string{ - v1.LabelHostname: testKubeletHostname, - v1.LabelOS: goruntime.GOOS, - v1.LabelArch: goruntime.GOARCH, - v1.LegacyLabelOS: goruntime.GOOS, - v1.LegacyLabelArch: goruntime.GOARCH, + v1.LabelHostname: testKubeletHostname, + v1.LabelOSStable: goruntime.GOOS, + v1.LabelArchStable: goruntime.GOARCH, + kubeletapis.LabelOS: goruntime.GOOS, + kubeletapis.LabelArch: goruntime.GOARCH, }, }, }, nil @@ -1300,11 +1301,11 @@ func TestTryRegisterWithApiServer(t *testing.T) { node := &v1.Node{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ - v1.LabelHostname: testKubeletHostname, - v1.LabelOS: goruntime.GOOS, - v1.LabelArch: goruntime.GOARCH, - v1.LegacyLabelOS: goruntime.GOOS, - v1.LegacyLabelArch: goruntime.GOARCH, + v1.LabelHostname: testKubeletHostname, + v1.LabelOSStable: goruntime.GOOS, + v1.LabelArchStable: goruntime.GOARCH, + kubeletapis.LabelOS: goruntime.GOOS, + kubeletapis.LabelArch: goruntime.GOARCH, }, }, } @@ -1536,8 +1537,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, }, @@ -1552,8 +1553,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, { @@ -1565,8 +1566,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, }, @@ -1577,8 +1578,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "old-zone-failure-domain", v1.LabelZoneRegion: "old-zone-region", v1.LabelInstanceType: "old-instance-type", - v1.LabelOS: "old-os", - v1.LabelArch: "old-arch", + kubeletapis.LabelOS: "old-os", + kubeletapis.LabelArch: "old-arch", }, }, }, @@ -1588,8 +1589,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, { @@ -1601,8 +1602,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, }, @@ -1613,8 +1614,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", "please-persist": "foo", }, }, @@ -1625,8 +1626,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", "please-persist": "foo", }, }, @@ -1644,8 +1645,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", "please-persist": "foo", }, }, @@ -1656,8 +1657,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", "please-persist": "foo", }, }, @@ -1670,8 +1671,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, }, @@ -1682,8 +1683,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, }, @@ -1693,8 +1694,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, { @@ -1706,8 +1707,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, }, @@ -1720,8 +1721,8 @@ func TestUpdateDefaultLabels(t *testing.T) { v1.LabelZoneFailureDomain: "new-zone-failure-domain", v1.LabelZoneRegion: "new-zone-region", v1.LabelInstanceType: "new-instance-type", - v1.LabelOS: "new-os", - v1.LabelArch: "new-arch", + kubeletapis.LabelOS: "new-os", + kubeletapis.LabelArch: "new-arch", }, }, } diff --git a/staging/src/k8s.io/api/core/v1/well_known_labels.go b/staging/src/k8s.io/api/core/v1/well_known_labels.go index 8b05c0ce7d0..4497760d3f6 100644 --- a/staging/src/k8s.io/api/core/v1/well_known_labels.go +++ b/staging/src/k8s.io/api/core/v1/well_known_labels.go @@ -23,13 +23,8 @@ const ( LabelInstanceType = "beta.kubernetes.io/instance-type" - LabelOS = "kubernetes.io/os" - LabelArch = "kubernetes.io/arch" - // The OS/Arch labels are promoted to GA in 1.14. kubelet applies both beta - // and GA labels to ensure backward compatibility. - // TODO: stop applying the beta OS/Arch labels in Kubernetes 1.17. - LegacyLabelOS = "beta.kubernetes.io/os" - LegacyLabelArch = "beta.kubernetes.io/arch" + LabelOSStable = "kubernetes.io/os" + LabelArchStable = "kubernetes.io/arch" // LabelNamespaceSuffixKubelet is an allowed label namespace suffix kubelets can self-set ([*.]kubelet.kubernetes.io/*) LabelNamespaceSuffixKubelet = "kubelet.kubernetes.io"