mirror of https://github.com/kubernetes/kops.git
Set provider name on karpenter-managed node
This commit is contained in:
parent
1ccb7840ac
commit
75d2b97754
|
@ -31,6 +31,7 @@ import (
|
||||||
corev1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
expirationcache "k8s.io/client-go/tools/cache"
|
expirationcache "k8s.io/client-go/tools/cache"
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
|
|
||||||
"k8s.io/kops/pkg/nodeidentity"
|
"k8s.io/kops/pkg/nodeidentity"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -42,6 +43,7 @@ const (
|
||||||
ClusterAutoscalerNodeTemplateLabel = "k8s.io/cluster-autoscaler/node-template/label/"
|
ClusterAutoscalerNodeTemplateLabel = "k8s.io/cluster-autoscaler/node-template/label/"
|
||||||
// The expiration time of nodeidentity.Info cache.
|
// The expiration time of nodeidentity.Info cache.
|
||||||
cacheTTL = 60 * time.Minute
|
cacheTTL = 60 * time.Minute
|
||||||
|
KarpenterNodeLabel = "karpenter.sh/"
|
||||||
)
|
)
|
||||||
|
|
||||||
// nodeIdentifier identifies a node from EC2
|
// nodeIdentifier identifies a node from EC2
|
||||||
|
@ -145,10 +147,18 @@ func (i *nodeIdentifier) IdentifyNode(ctx context.Context, node *corev1.Node) (*
|
||||||
Labels: labels,
|
Labels: labels,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isKarpenterManaged := false
|
||||||
for _, tag := range instance.Tags {
|
for _, tag := range instance.Tags {
|
||||||
if strings.HasPrefix(aws.StringValue(tag.Key), ClusterAutoscalerNodeTemplateLabel) {
|
key := aws.StringValue(tag.Key)
|
||||||
|
if strings.HasPrefix(key, ClusterAutoscalerNodeTemplateLabel) {
|
||||||
info.Labels[strings.TrimPrefix(aws.StringValue(tag.Key), ClusterAutoscalerNodeTemplateLabel)] = aws.StringValue(tag.Value)
|
info.Labels[strings.TrimPrefix(aws.StringValue(tag.Key), ClusterAutoscalerNodeTemplateLabel)] = aws.StringValue(tag.Value)
|
||||||
}
|
}
|
||||||
|
if strings.HasPrefix(key, KarpenterNodeLabel) {
|
||||||
|
isKarpenterManaged = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if isKarpenterManaged {
|
||||||
|
info.Labels["karpenter.sh/provisioner-name"] = info.Labels[CloudTagInstanceGroupName]
|
||||||
}
|
}
|
||||||
|
|
||||||
// If caching is enabled add the nodeidentity.Info to cache.
|
// If caching is enabled add the nodeidentity.Info to cache.
|
||||||
|
|
|
@ -92,6 +92,10 @@ func BuildNodeLabels(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) m
|
||||||
nodeLabels[k] = v
|
nodeLabels[k] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if instanceGroup.Spec.InstanceManager == kops.InstanceManagerKarpenter {
|
||||||
|
nodeLabels["karpenter.sh/provisioner-name"] = instanceGroup.ObjectMeta.Name
|
||||||
|
}
|
||||||
|
|
||||||
return nodeLabels
|
return nodeLabels
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -160,7 +160,7 @@ CloudProvider: aws
|
||||||
ConfigBase: memfs://clusters.example.com/minimal.example.com
|
ConfigBase: memfs://clusters.example.com/minimal.example.com
|
||||||
InstanceGroupName: karpenter-nodes
|
InstanceGroupName: karpenter-nodes
|
||||||
InstanceGroupRole: Node
|
InstanceGroupRole: Node
|
||||||
NodeupConfigHash: ehZK5PooPMXQw0YD3dy5oARwClEXIj8ymh6DR1XYbQ0=
|
NodeupConfigHash: 82WPA9hO1RdHX0zXhyshQojhW4qQug4izPAWZkgZkN4=
|
||||||
|
|
||||||
__EOF_KUBE_ENV
|
__EOF_KUBE_ENV
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@ KubeletConfig:
|
||||||
logLevel: 2
|
logLevel: 2
|
||||||
networkPluginName: cni
|
networkPluginName: cni
|
||||||
nodeLabels:
|
nodeLabels:
|
||||||
|
karpenter.sh/provisioner-name: karpenter-nodes
|
||||||
kubernetes.io/role: node
|
kubernetes.io/role: node
|
||||||
node-role.kubernetes.io/node: ""
|
node-role.kubernetes.io/node: ""
|
||||||
nonMasqueradeCIDR: 100.64.0.0/10
|
nonMasqueradeCIDR: 100.64.0.0/10
|
||||||
|
|
|
@ -416,6 +416,7 @@ resource "aws_launch_template" "karpenter-nodes-minimal-example-com" {
|
||||||
tags = {
|
tags = {
|
||||||
"KubernetesCluster" = "minimal.example.com"
|
"KubernetesCluster" = "minimal.example.com"
|
||||||
"Name" = "karpenter-nodes.minimal.example.com"
|
"Name" = "karpenter-nodes.minimal.example.com"
|
||||||
|
"k8s.io/cluster-autoscaler/node-template/label/karpenter.sh/provisioner-name" = "karpenter-nodes"
|
||||||
"k8s.io/cluster-autoscaler/node-template/label/kubernetes.io/role" = "node"
|
"k8s.io/cluster-autoscaler/node-template/label/kubernetes.io/role" = "node"
|
||||||
"k8s.io/cluster-autoscaler/node-template/label/node-role.kubernetes.io/node" = ""
|
"k8s.io/cluster-autoscaler/node-template/label/node-role.kubernetes.io/node" = ""
|
||||||
"k8s.io/role/node" = "1"
|
"k8s.io/role/node" = "1"
|
||||||
|
@ -428,6 +429,7 @@ resource "aws_launch_template" "karpenter-nodes-minimal-example-com" {
|
||||||
tags = {
|
tags = {
|
||||||
"KubernetesCluster" = "minimal.example.com"
|
"KubernetesCluster" = "minimal.example.com"
|
||||||
"Name" = "karpenter-nodes.minimal.example.com"
|
"Name" = "karpenter-nodes.minimal.example.com"
|
||||||
|
"k8s.io/cluster-autoscaler/node-template/label/karpenter.sh/provisioner-name" = "karpenter-nodes"
|
||||||
"k8s.io/cluster-autoscaler/node-template/label/kubernetes.io/role" = "node"
|
"k8s.io/cluster-autoscaler/node-template/label/kubernetes.io/role" = "node"
|
||||||
"k8s.io/cluster-autoscaler/node-template/label/node-role.kubernetes.io/node" = ""
|
"k8s.io/cluster-autoscaler/node-template/label/node-role.kubernetes.io/node" = ""
|
||||||
"k8s.io/role/node" = "1"
|
"k8s.io/role/node" = "1"
|
||||||
|
@ -438,6 +440,7 @@ resource "aws_launch_template" "karpenter-nodes-minimal-example-com" {
|
||||||
tags = {
|
tags = {
|
||||||
"KubernetesCluster" = "minimal.example.com"
|
"KubernetesCluster" = "minimal.example.com"
|
||||||
"Name" = "karpenter-nodes.minimal.example.com"
|
"Name" = "karpenter-nodes.minimal.example.com"
|
||||||
|
"k8s.io/cluster-autoscaler/node-template/label/karpenter.sh/provisioner-name" = "karpenter-nodes"
|
||||||
"k8s.io/cluster-autoscaler/node-template/label/kubernetes.io/role" = "node"
|
"k8s.io/cluster-autoscaler/node-template/label/kubernetes.io/role" = "node"
|
||||||
"k8s.io/cluster-autoscaler/node-template/label/node-role.kubernetes.io/node" = ""
|
"k8s.io/cluster-autoscaler/node-template/label/node-role.kubernetes.io/node" = ""
|
||||||
"k8s.io/role/node" = "1"
|
"k8s.io/role/node" = "1"
|
||||||
|
|
Loading…
Reference in New Issue