mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #82049 from andrewsykim/ga-node-instance-type-label
Promote Node Instance Type Label to GA
This commit is contained in:
commit
9cf309ed59
@ -70,6 +70,14 @@ var labelReconcileInfo = []struct {
|
|||||||
secondaryKey: v1.LabelZoneRegionStable,
|
secondaryKey: v1.LabelZoneRegionStable,
|
||||||
ensureSecondaryExists: true,
|
ensureSecondaryExists: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
// Reconcile the beta and the stable instance-type label using the beta label as
|
||||||
|
// the source of truth
|
||||||
|
// TODO: switch the primary key to GA labels in v1.21
|
||||||
|
primaryKey: v1.LabelInstanceType,
|
||||||
|
secondaryKey: v1.LabelInstanceTypeStable,
|
||||||
|
ensureSecondaryExists: true,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
var UpdateNodeSpecBackoff = wait.Backoff{
|
var UpdateNodeSpecBackoff = wait.Backoff{
|
||||||
@ -375,6 +383,8 @@ func (cnc *CloudNodeController) initializeNode(ctx context.Context, node *v1.Nod
|
|||||||
} else if instanceType != "" {
|
} else if instanceType != "" {
|
||||||
klog.V(2).Infof("Adding node label from cloud provider: %s=%s", v1.LabelInstanceType, instanceType)
|
klog.V(2).Infof("Adding node label from cloud provider: %s=%s", v1.LabelInstanceType, instanceType)
|
||||||
curNode.ObjectMeta.Labels[v1.LabelInstanceType] = instanceType
|
curNode.ObjectMeta.Labels[v1.LabelInstanceType] = instanceType
|
||||||
|
klog.V(2).Infof("Adding node label from cloud provider: %s=%s", v1.LabelInstanceTypeStable, instanceType)
|
||||||
|
curNode.ObjectMeta.Labels[v1.LabelInstanceTypeStable] = instanceType
|
||||||
}
|
}
|
||||||
|
|
||||||
if zones, ok := cnc.cloud.Zones(); ok {
|
if zones, ok := cnc.cloud.Zones(); ok {
|
||||||
|
@ -689,12 +689,15 @@ func Test_reconcileNodeLabels(t *testing.T) {
|
|||||||
labels: map[string]string{
|
labels: map[string]string{
|
||||||
v1.LabelZoneFailureDomain: "foo",
|
v1.LabelZoneFailureDomain: "foo",
|
||||||
v1.LabelZoneRegion: "bar",
|
v1.LabelZoneRegion: "bar",
|
||||||
|
v1.LabelInstanceType: "the-best-type",
|
||||||
},
|
},
|
||||||
expectedLabels: map[string]string{
|
expectedLabels: map[string]string{
|
||||||
v1.LabelZoneFailureDomain: "foo",
|
v1.LabelZoneFailureDomain: "foo",
|
||||||
v1.LabelZoneRegion: "bar",
|
v1.LabelZoneRegion: "bar",
|
||||||
v1.LabelZoneFailureDomainStable: "foo",
|
v1.LabelZoneFailureDomainStable: "foo",
|
||||||
v1.LabelZoneRegionStable: "bar",
|
v1.LabelZoneRegionStable: "bar",
|
||||||
|
v1.LabelInstanceType: "the-best-type",
|
||||||
|
v1.LabelInstanceTypeStable: "the-best-type",
|
||||||
},
|
},
|
||||||
expectedErr: nil,
|
expectedErr: nil,
|
||||||
},
|
},
|
||||||
@ -705,12 +708,16 @@ func Test_reconcileNodeLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegion: "bar",
|
v1.LabelZoneRegion: "bar",
|
||||||
v1.LabelZoneFailureDomainStable: "foo",
|
v1.LabelZoneFailureDomainStable: "foo",
|
||||||
v1.LabelZoneRegionStable: "bar",
|
v1.LabelZoneRegionStable: "bar",
|
||||||
|
v1.LabelInstanceType: "the-best-type",
|
||||||
|
v1.LabelInstanceTypeStable: "the-best-type",
|
||||||
},
|
},
|
||||||
expectedLabels: map[string]string{
|
expectedLabels: map[string]string{
|
||||||
v1.LabelZoneFailureDomain: "foo",
|
v1.LabelZoneFailureDomain: "foo",
|
||||||
v1.LabelZoneRegion: "bar",
|
v1.LabelZoneRegion: "bar",
|
||||||
v1.LabelZoneFailureDomainStable: "foo",
|
v1.LabelZoneFailureDomainStable: "foo",
|
||||||
v1.LabelZoneRegionStable: "bar",
|
v1.LabelZoneRegionStable: "bar",
|
||||||
|
v1.LabelInstanceType: "the-best-type",
|
||||||
|
v1.LabelInstanceTypeStable: "the-best-type",
|
||||||
},
|
},
|
||||||
expectedErr: nil,
|
expectedErr: nil,
|
||||||
},
|
},
|
||||||
@ -721,12 +728,16 @@ func Test_reconcileNodeLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegion: "bar",
|
v1.LabelZoneRegion: "bar",
|
||||||
v1.LabelZoneFailureDomainStable: "wrongfoo",
|
v1.LabelZoneFailureDomainStable: "wrongfoo",
|
||||||
v1.LabelZoneRegionStable: "wrongbar",
|
v1.LabelZoneRegionStable: "wrongbar",
|
||||||
|
v1.LabelInstanceType: "the-best-type",
|
||||||
|
v1.LabelInstanceTypeStable: "the-wrong-type",
|
||||||
},
|
},
|
||||||
expectedLabels: map[string]string{
|
expectedLabels: map[string]string{
|
||||||
v1.LabelZoneFailureDomain: "foo",
|
v1.LabelZoneFailureDomain: "foo",
|
||||||
v1.LabelZoneRegion: "bar",
|
v1.LabelZoneRegion: "bar",
|
||||||
v1.LabelZoneFailureDomainStable: "foo",
|
v1.LabelZoneFailureDomainStable: "foo",
|
||||||
v1.LabelZoneRegionStable: "bar",
|
v1.LabelZoneRegionStable: "bar",
|
||||||
|
v1.LabelInstanceType: "the-best-type",
|
||||||
|
v1.LabelInstanceTypeStable: "the-best-type",
|
||||||
},
|
},
|
||||||
expectedErr: nil,
|
expectedErr: nil,
|
||||||
},
|
},
|
||||||
|
@ -34,9 +34,6 @@ const (
|
|||||||
// and GA labels to ensure backward compatibility.
|
// and GA labels to ensure backward compatibility.
|
||||||
// TODO: stop applying the beta Arch labels in Kubernetes 1.18.
|
// TODO: stop applying the beta Arch labels in Kubernetes 1.18.
|
||||||
LabelArch = "beta.kubernetes.io/arch"
|
LabelArch = "beta.kubernetes.io/arch"
|
||||||
|
|
||||||
// TODO: update kubelet and controllers to set both beta and GA labels, then export these constants
|
|
||||||
labelInstanceTypeGA = "kubernetes.io/instance-type"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var kubeletLabels = sets.NewString(
|
var kubeletLabels = sets.NewString(
|
||||||
@ -46,13 +43,12 @@ var kubeletLabels = sets.NewString(
|
|||||||
v1.LabelZoneFailureDomain,
|
v1.LabelZoneFailureDomain,
|
||||||
v1.LabelZoneRegion,
|
v1.LabelZoneRegion,
|
||||||
v1.LabelInstanceType,
|
v1.LabelInstanceType,
|
||||||
|
v1.LabelInstanceTypeStable,
|
||||||
v1.LabelOSStable,
|
v1.LabelOSStable,
|
||||||
v1.LabelArchStable,
|
v1.LabelArchStable,
|
||||||
|
|
||||||
LabelOS,
|
LabelOS,
|
||||||
LabelArch,
|
LabelArch,
|
||||||
|
|
||||||
labelInstanceTypeGA,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var kubeletLabelNamespaces = sets.NewString(
|
var kubeletLabelNamespaces = sets.NewString(
|
||||||
|
@ -154,6 +154,7 @@ func (kl *Kubelet) updateDefaultLabels(initialNode, existingNode *v1.Node) bool
|
|||||||
v1.LabelZoneRegionStable,
|
v1.LabelZoneRegionStable,
|
||||||
v1.LabelZoneFailureDomain,
|
v1.LabelZoneFailureDomain,
|
||||||
v1.LabelZoneRegion,
|
v1.LabelZoneRegion,
|
||||||
|
v1.LabelInstanceTypeStable,
|
||||||
v1.LabelInstanceType,
|
v1.LabelInstanceType,
|
||||||
v1.LabelOSStable,
|
v1.LabelOSStable,
|
||||||
v1.LabelArchStable,
|
v1.LabelArchStable,
|
||||||
@ -333,6 +334,8 @@ func (kl *Kubelet) initialNode(ctx context.Context) (*v1.Node, error) {
|
|||||||
if instanceType != "" {
|
if instanceType != "" {
|
||||||
klog.Infof("Adding node label from cloud provider: %s=%s", v1.LabelInstanceType, instanceType)
|
klog.Infof("Adding node label from cloud provider: %s=%s", v1.LabelInstanceType, instanceType)
|
||||||
node.ObjectMeta.Labels[v1.LabelInstanceType] = instanceType
|
node.ObjectMeta.Labels[v1.LabelInstanceType] = instanceType
|
||||||
|
klog.Infof("Adding node label from cloud provider: %s=%s", v1.LabelInstanceTypeStable, instanceType)
|
||||||
|
node.ObjectMeta.Labels[v1.LabelInstanceTypeStable] = instanceType
|
||||||
}
|
}
|
||||||
// If the cloud has zone information, label the node with the zone information
|
// If the cloud has zone information, label the node with the zone information
|
||||||
zones, ok := kl.cloud.Zones()
|
zones, ok := kl.cloud.Zones()
|
||||||
|
@ -1414,6 +1414,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1432,6 +1433,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1447,6 +1449,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1461,6 +1464,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "old-zone-region",
|
v1.LabelZoneRegionStable: "old-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "old-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "old-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "old-zone-region",
|
v1.LabelZoneRegion: "old-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "old-instance-type",
|
||||||
v1.LabelInstanceType: "old-instance-type",
|
v1.LabelInstanceType: "old-instance-type",
|
||||||
kubeletapis.LabelOS: "old-os",
|
kubeletapis.LabelOS: "old-os",
|
||||||
kubeletapis.LabelArch: "old-arch",
|
kubeletapis.LabelArch: "old-arch",
|
||||||
@ -1474,6 +1478,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1489,6 +1494,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1503,6 +1509,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1517,6 +1524,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1538,6 +1546,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1552,6 +1561,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1568,6 +1578,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1582,6 +1593,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1595,6 +1607,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1610,6 +1623,7 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
@ -1626,11 +1640,58 @@ func TestUpdateDefaultLabels(t *testing.T) {
|
|||||||
v1.LabelZoneRegionStable: "new-zone-region",
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
v1.LabelZoneRegion: "new-zone-region",
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
v1.LabelInstanceType: "new-instance-type",
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
kubeletapis.LabelOS: "new-os",
|
kubeletapis.LabelOS: "new-os",
|
||||||
kubeletapis.LabelArch: "new-arch",
|
kubeletapis.LabelArch: "new-arch",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "backfill required for new stable labels for os/arch/zones/regions/instance-type",
|
||||||
|
initialNode: &v1.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Labels: map[string]string{
|
||||||
|
v1.LabelHostname: "new-hostname",
|
||||||
|
v1.LabelZoneFailureDomainStable: "new-zone-failure-domain",
|
||||||
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
|
kubeletapis.LabelOS: "new-os",
|
||||||
|
kubeletapis.LabelArch: "new-arch",
|
||||||
|
v1.LabelOSStable: "new-os",
|
||||||
|
v1.LabelArchStable: "new-arch",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
existingNode: &v1.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Labels: map[string]string{
|
||||||
|
v1.LabelHostname: "new-hostname",
|
||||||
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
|
kubeletapis.LabelOS: "new-os",
|
||||||
|
kubeletapis.LabelArch: "new-arch",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
needsUpdate: true,
|
||||||
|
finalLabels: map[string]string{
|
||||||
|
v1.LabelHostname: "new-hostname",
|
||||||
|
v1.LabelZoneFailureDomainStable: "new-zone-failure-domain",
|
||||||
|
v1.LabelZoneRegionStable: "new-zone-region",
|
||||||
|
v1.LabelZoneFailureDomain: "new-zone-failure-domain",
|
||||||
|
v1.LabelZoneRegion: "new-zone-region",
|
||||||
|
v1.LabelInstanceTypeStable: "new-instance-type",
|
||||||
|
v1.LabelInstanceType: "new-instance-type",
|
||||||
|
kubeletapis.LabelOS: "new-os",
|
||||||
|
kubeletapis.LabelArch: "new-arch",
|
||||||
|
v1.LabelOSStable: "new-os",
|
||||||
|
v1.LabelArchStable: "new-arch",
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range cases {
|
for _, tc := range cases {
|
||||||
|
@ -1067,6 +1067,41 @@ func TestMaxVolumeFuncM4(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMaxVolumeFuncM4WithOnlyStableLabels(t *testing.T) {
|
||||||
|
node := &v1.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "node-for-m4-instance",
|
||||||
|
Labels: map[string]string{
|
||||||
|
v1.LabelInstanceTypeStable: "m4.2xlarge",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
os.Unsetenv(KubeMaxPDVols)
|
||||||
|
maxVolumeFunc := getMaxVolumeFunc(EBSVolumeFilterType)
|
||||||
|
maxVolume := maxVolumeFunc(node)
|
||||||
|
if maxVolume != volumeutil.DefaultMaxEBSVolumes {
|
||||||
|
t.Errorf("Expected max volume to be %d got %d", volumeutil.DefaultMaxEBSVolumes, maxVolume)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestMaxVolumeFuncM4WithBothBetaAndStableLabels(t *testing.T) {
|
||||||
|
node := &v1.Node{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: "node-for-m4-instance",
|
||||||
|
Labels: map[string]string{
|
||||||
|
v1.LabelInstanceType: "m4.2xlarge",
|
||||||
|
v1.LabelInstanceTypeStable: "m4.2xlarge",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
os.Unsetenv(KubeMaxPDVols)
|
||||||
|
maxVolumeFunc := getMaxVolumeFunc(EBSVolumeFilterType)
|
||||||
|
maxVolume := maxVolumeFunc(node)
|
||||||
|
if maxVolume != volumeutil.DefaultMaxEBSVolumes {
|
||||||
|
t.Errorf("Expected max volume to be %d got %d", volumeutil.DefaultMaxEBSVolumes, maxVolume)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func getNodeWithPodAndVolumeLimits(limitSource string, pods []*v1.Pod, limit int64, driverNames ...string) (*schedulernodeinfo.NodeInfo, *v1beta1.CSINode) {
|
func getNodeWithPodAndVolumeLimits(limitSource string, pods []*v1.Pod, limit int64, driverNames ...string) (*schedulernodeinfo.NodeInfo, *v1beta1.CSINode) {
|
||||||
nodeInfo := schedulernodeinfo.NewNodeInfo(pods...)
|
nodeInfo := schedulernodeinfo.NewNodeInfo(pods...)
|
||||||
node := &v1.Node{
|
node := &v1.Node{
|
||||||
|
@ -305,8 +305,9 @@ func getMaxVolumeFunc(filterName string) func(node *v1.Node) int {
|
|||||||
|
|
||||||
var nodeInstanceType string
|
var nodeInstanceType string
|
||||||
for k, v := range node.ObjectMeta.Labels {
|
for k, v := range node.ObjectMeta.Labels {
|
||||||
if k == v1.LabelInstanceType {
|
if k == v1.LabelInstanceType || k == v1.LabelInstanceTypeStable {
|
||||||
nodeInstanceType = v
|
nodeInstanceType = v
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch filterName {
|
switch filterName {
|
||||||
|
@ -158,9 +158,9 @@ func setAllowedUpdateLabels(node *api.Node, value string) *api.Node {
|
|||||||
node.Labels["topology.kubernetes.io/zone"] = value
|
node.Labels["topology.kubernetes.io/zone"] = value
|
||||||
node.Labels["topology.kubernetes.io/region"] = value
|
node.Labels["topology.kubernetes.io/region"] = value
|
||||||
node.Labels["beta.kubernetes.io/instance-type"] = value
|
node.Labels["beta.kubernetes.io/instance-type"] = value
|
||||||
|
node.Labels["node.kubernetes.io/instance-type"] = value
|
||||||
node.Labels["beta.kubernetes.io/os"] = value
|
node.Labels["beta.kubernetes.io/os"] = value
|
||||||
node.Labels["beta.kubernetes.io/arch"] = value
|
node.Labels["beta.kubernetes.io/arch"] = value
|
||||||
node.Labels["kubernetes.io/instance-type"] = value
|
|
||||||
node.Labels["kubernetes.io/os"] = value
|
node.Labels["kubernetes.io/os"] = value
|
||||||
node.Labels["kubernetes.io/arch"] = value
|
node.Labels["kubernetes.io/arch"] = value
|
||||||
|
|
||||||
|
@ -24,7 +24,8 @@ const (
|
|||||||
LabelZoneFailureDomainStable = "topology.kubernetes.io/zone"
|
LabelZoneFailureDomainStable = "topology.kubernetes.io/zone"
|
||||||
LabelZoneRegionStable = "topology.kubernetes.io/region"
|
LabelZoneRegionStable = "topology.kubernetes.io/region"
|
||||||
|
|
||||||
LabelInstanceType = "beta.kubernetes.io/instance-type"
|
LabelInstanceType = "beta.kubernetes.io/instance-type"
|
||||||
|
LabelInstanceTypeStable = "node.kubernetes.io/instance-type"
|
||||||
|
|
||||||
LabelOSStable = "kubernetes.io/os"
|
LabelOSStable = "kubernetes.io/os"
|
||||||
LabelArchStable = "kubernetes.io/arch"
|
LabelArchStable = "kubernetes.io/arch"
|
||||||
|
Loading…
Reference in New Issue
Block a user