Post

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 Limits e Weight ficam fora da seção spec.template

  • Os campos Labels e Annotations ficam dentro da seção spec.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.instanceProfile foi removido em favor do spec.role . Além disso foi removido o suporte para o campo defaultInstanceProfile, o que torna o campo spec.role obrigatório

  • Os campos spec.subnetSelector, spec.securityGroupSelector e spec.amiSelector foram modificados para suportar múltiplos termos e chaves como id e name

Outras informações relevantes


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.

This post is licensed under CC BY 4.0 by the author.