AWS

[ 13 ] - Karpenter 모니터링

zhuxiclover 2024. 10. 8. 16:12

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