Aide-mémoire CKAD

exemple YAML Karpenter k8s

Le HPA ajoute des Pods. Karpenter ajoute des nœuds. Un NodePool est la politique. Un NodeClass est le compte cloud.

De nouvelles tours s’élèvent sur des échafaudages pendant que d’autres s’effondrent au loin ; un officier observe depuis le toit. De nouvelles tours s’élèvent sur des échafaudages pendant que d’autres s’effondrent au loin ; un officier observe depuis le toit.
Inspecter
kubectl get nodepool
kubectl get nodeclaim
kubectl describe nodepool default
kubectl get nodes -l karpenter.sh/nodepool
NodePool
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: default
spec:
  template:
    spec:
      nodeClassRef:
        group: karpenter.k8s.aws
        kind: EC2NodeClass
        name: default
      requirements:
        - key: kubernetes.io/arch
          operator: In
          values: ["amd64"]
        - key: karpenter.sh/capacity-type
          operator: In
          values: ["on-demand"]
  limits:
    cpu: "100"
  disruption:
    consolidationPolicy: WhenEmptyOrUnderutilized
    consolidateAfter: 1m

Champs

nodeClassRef
Pointe sur le NodeClass cloud (EC2NodeClass, AKSNodeClass, …). Doit déjà exister.
requirements
Quels nœuds ce pool peut créer. arch, capacity-type, instance-category.
limits
Plafond pour tout le pool. cpu : 100 = arrêter de provisionner au-delà de 100 cœurs.
disruption
WhenEmptyOrUnderutilized + consolidateAfter. C’est ce qui supprime les nœuds inactifs.

Pièges

  • Pas un objet CKAD. Le HPA n’y peut rien si le cluster n’a plus de place. C’est cette page.
  • NodePool = la politique. NodeClass = spécifique au cloud. Les deux doivent exister sinon les pods restent Pending.
  • apiVersion : karpenter.sh/v1. L’ancien provisioners.karpenter.sh n’existe plus.

Doc officielle Karpenter NodePool

S’entraîner sur un cluster réel →