O que muda no Karpenter a partir das versões 0.32.x?
Com o objetivo de se preparar para uma versão v1, o Karpenter trouxe mudanças significativas nas versões 0.32.x que devem ser levadas em conta caso queira fazer upgrade.
Nesse blog post vou fazer um resumo das principais mudanças das APIs v1alpha5 para v1beta1 , que foi introduzida a partir das versões 0.32.x .
O que era Provisioner agora é NodePool
Antes:
1
2
3
apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
...
Depois:
1
2
3
apiVersion: karpenter.sh/v1beta1
kind: NodePool
...
Além das seguintes mudanças no manifesto:
-
Os campos
LimitseWeightficam fora da seçãospec.template -
Os campos
LabelseAnnotationsficam dentro da seçãospec.template.metadata -
Todos os outros campos como requirements, taints, kubelet e outros ficam dentro da seção
spec.template.spec -
Não existe mais suporte para
spec.template.spec.kubelet.containerRuntime. Se você usa EKS 1.23 deve fazer upgrade pra usar containerd antes de atualizar
Importante:
O campo spec.ttlSecondsAfterEmpty foi removido em favor dos campos consolidationPolicy e consolidateAfter .
Antes:
1
2
3
4
5
apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
...
spec:
ttlSecondsAfterEmpty: 120
Depois:
1
2
3
4
5
6
7
apiVersion: karpenter.sh/v1beta1
kind: NodePool
...
spec:
disruption:
consolidationPolicy: WhenEmpty
consolidateAfter: 2m
AWSNodeTemplate agora é EC2NodeClass
Antes:
1
2
3
apiVersion: karpenter.k8s.aws/v1alpha1
kind: AWSNodeTemplate
...
Depois:
1
2
3
apiVersion: karpenter.k8s.aws/v1beta1
kind: EC2NodeClass
...
Além das seguintes mudanças no manifesto:
-
O campo
spec.instanceProfilefoi removido em favor dospec.role. Além disso foi removido o suporte para o campodefaultInstanceProfile, o que torna o campospec.roleobrigatório -
Os campos
spec.subnetSelector,spec.securityGroupSelectorespec.amiSelectorforam modificados para suportar múltiplos termos e chaves como id e name
Outras informações relevantes
-
Machineagora éNodeClaim -
Mudanças em algumas labels e annotations e status conditions
Para ajudar no processo de atualização, foi disponibilizada uma ferramenta para conversão dos manifestos.
Para instalar:
1
go install github.com/aws/karpenter/tools/karpenter-convert/cmd/karpenter-convert@latest
O repositório da ferramenta pode ser acessado aqui.
Referências
Todas as informações aqui citadas, foram tiradas da documentação de upgrade que pode ser consultada aqui.