1. 설치 확인
➜ kubectl get all -n karpenter
➜ kubectl get crd | grep karpenter

2. Karpenter를 사용하여 Kubernetes 클러스터에서 노드를 프로비저닝하기 위한 설정을 정의
cat <<EOF | kubectl apply -f -
apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
metadata:
name: default
spec:
requirements:
- key: karpenter.sh/capacity-type
operator: In
values: ["spot"]
limits:
resources:
cpu: "10000" # 문자열로 감싸야 할 수 있습니다.
providerRef:
name: default
ttlSecondsAfterEmpty: 30 # 노드에 파드가 없는 비어있는 상태가 30초 이면 노드 삭제, -> deprovisioning
---
apiVersion: karpenter.k8s.aws/v1alpha1
kind: AWSNodeTemplate
metadata:
name: default
spec:
subnetSelector:
karpenter.sh/discovery: ${CLUSTER_NAME}
securityGroupSelector:
karpenter.sh/discovery: ${CLUSTER_NAME}
EOF
➜ 확인
✅ kubectl get awsnodetemplates,provisioners

3. Test Deploy 배포
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: inflate
spec:
replicas: 0
selector:
matchLabels:
app: inflate
template:
metadata:
labels:
app: inflate
spec:
terminationGracePeriodSeconds: 0
containers:
- name: inflate
image: public.ecr.aws/eks-distro/kubernetes/pause:3.7
resources:
requests:
cpu: 1
EOF
➜ Deployment 확인
✅ kubectl get deploy
✅ kubectl scale deployment inflate --replicas=3
✅ http://ac4583f9111424c7ba4fabaf362d1246-1624474523.ap-northeast-3.elb.amazonaws.com:8080

➜ kubectl get node --label-columns=eks.amazonaws.com/capacityType,karpenter.sh/capacity-type,no

➜ inflate 배포의 모든 pod 삭제 ✅ kubectl scale deployment inflate --replicas=0
✅ kubectl delete provisioners default
➜ up-karpenter
cat <<EOF | kubectl apply -f -
apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
metadata:
name: default
spec:
consolidation:
enabled: true
labels:
type: karpenter
limits:
resources:
cpu: 1000
memory: 1000Gi
providerRef:
name: default
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- on-demand
- key: node.kubernetes.io/instance-type
operator: In
values:
- c5.large
- m5.large
- m5.xlarge
EOF
✅ 최종적으로 리소스를 스스로 만들어줌 [ 인스턴스 ]
** 지우기 **
helm uninstall -n kube-system kube-ops-view
helm uninstall karpenter --namespace karpenter
// karpenter 관련 cloudformation 스택 삭제
aws cloudformation delete-stack --stack-name "Karpenter-${CLUSTER_NAME}"
// 기본 cloudformation 스택 삭제
aws cloudformation delete-stack --stack-name ${CLUSTER_NAME}
aws cloudformation delete-stack --stack-name myeks2
eksctl delete cluster --name $CLUSTER_NAME \ && aws cloudformation delete-stack --stack-name $CLUSTER_NAME
'AWS' 카테고리의 다른 글
| [ restart ] (0) | 2024.10.10 |
|---|---|
| [ 14 ] - 보안 모니터링 (0) | 2024.10.10 |
| [ 12 ] - karpenter 배포 (0) | 2024.10.07 |
| [ 11 ] - AWS EKS - Autoscaling (0) | 2024.10.04 |
| [ 10 ] - prometheus (0) | 2024.10.02 |