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.
kubectl get nodepool
kubectl get nodeclaim
kubectl describe nodepool default
kubectl get nodes -l karpenter.sh/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.