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
eWeight
ficam fora da seçãospec.template
Os campos
Labels
eAnnotations
ficam 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.instanceProfile
foi removido em favor dospec.role
. Além disso foi removido o suporte para o campodefaultInstanceProfile
, o que torna o campospec.role
obrigatórioOs campos
spec.subnetSelector
,spec.securityGroupSelector
espec.amiSelector
foram modificados para suportar múltiplos termos e chaves como id e name
Outras informações relevantes
Machine
agora é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.