실습

Manual Scaling

  1. Deployment 생성

    kubectl create deployment nginx --image=nginx --replicas=1
  2. Pod 갯수 확인

    kubectl get pod -l app=nginx
  3. Deployment의 replica를 3개로 수정

    kubectl scale deployment nginx --replicas=3 
  4. Pod 갯수 확인

    kubectl get pod -l app=nginx
  5. ReplicaSet 확인

    kubectl get rs -l app=nginx
  6. Deployment의 replica를 2개로 수정

    kubectl scale deployment nginx --replicas=2
  7. Deployment의 replica가 1개라면 replica를 3개로 변경

    kubectl scale deployment nginx --current-replicas=1 --replicas=3 
  8. 새로운 Deployment 생성

    kubectl create deployment httpd --image=httpd --replicas=1
  9. Deployment 중에서 replica가 1개인 Deployment가 있으면 replica를 3개로 변경

    kubectl scale deployment --current-replicas=1 --replicas=3 --all
  10. Pod 갯수 확인

    kubectl get pod -l 'app in (nginx,httpd)'
  11. 모든 Deployment의 replica를 5개로 변경

    kubectl scale deployment --replicas=5 --all
  12. Pod 갯수 확인

    kubectl get pod -l 'app in (nginx,httpd)'
  13. 모든 Deployment 삭제

    kubectl delete deployment -l 'app in (nginx,httpd)'

HPA (Horizontal Pod Autoscaler)

  1. Pod의 리소스 사용량 확인

  2. API 서버에 등록된 API 목록 확인

  3. v1beta1.metrics.k8s.io API의 상세 내용 확인

  4. 모든 Pod의 리소스 사용량 확인

  5. 모든 Node의 리소스 사용량 확인

  6. Metrics Server 로그 확인

  7. Metrics Server 로그 레벨 변경

  8. Metrics Server 로그 확인 - 새로운 Pod가 뜬 다음에 확인

  9. kubelet에서 제공하는 지표에 대한 접근 권한을 가진 Pod 생성

  10. 위에서 생성한 Pod에서 Metrics Server가 지표를 수집할때 호출하는 Endpoint 호출 - https://github.com/kubernetes-sigs/metrics-server/blob/4436807eec6b07ea649444529eb3b46ddbbd8914/pkg/scraper/client/resource/client.go#L77

  11. kubelet에서 제공하는 모든 지표 확인

  12. kubelet에서 제공하는 지표중에서 CPU 및 Memory에 대한 지표만 확인

  13. API 서버를 통해서 Metrics Server가 지표를 수집할때 호출하는 Endpoint 호출

  14. Autoscaling (HPA)설정

  15. 위에서 생성한 HPA 상태 확인

  16. 데모 애플리케이션에 부하를 발생시키는 Pod 생성

  17. HPA 상태 모니터링

  18. Ctrl+C를 입력해서 HPA 모니터링을 중지하고 실제로 Pod가 생겼는지 확인

  19. Pod의 리소스 사용량 확인

  20. 데모 애플리케이션에 부하를 발생시키는 Pod 삭제

  21. HPA 상태 모니터링

  22. Ctrl+C를 입력해서 HPA 모니터링을 중지하고 HPA 상세 내용 확인

  23. Pod의 리소스 사용량 확인

  24. HPA 상태 확인

  25. Pod 갯수 확인

  26. 데모 애플리케이션 및 리소스 삭제

Cluster Autoscaler

  1. Deployment 생성

  2. 생성된 Deployment 및 Pod 확인

  3. Pending 상태의 Pod가 있다면 아래의 명령어를 통해서 그 이유를 확인

  4. Cluster Autoscaler에게 부여할 IAM 정책 JSON 파일 생성

  5. IAM 정책 생성

  6. Node에 부여된 Label을 통해서 EKS 클러스터 이름 확인하고 환경변수로 저장

  7. EKS 클러스터가 생성되어 있는 AWS 계정번호 확인하고 환경변수로 저장

  8. IAM OIDC 제공자 활성화

  9. ServiceAccount 생성

  10. ServiceAccount가 생성되었는지 확인

  11. ServiceAccount에 명시된 IAM 역할 이름을 확인하고 환경변수로 지정

  12. ServiceAccount와 연동된 IAM 역할에 부여된 IAM 정책 확인

  13. ServiceAccount와 연동된 IAM 역할에 부여된 신뢰관계 정책 확인

  14. Cluster Autoscaler 설치

  15. Cluster Autoscaler 로그 확인 - ASG map 확인

  16. Cluster Autoscaler 설정값 확인

  17. EKS 노드그룹와 연동된 오토스케일링 그룹 이름을 확인하고 환경변수로 지정

  18. 오토스케일링 그룹의 인스턴스 현황 확인

  19. 오토스케일링 그룹에 부여된 태그 확인 - https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html

  20. 설치한 Helm 차트의 기본 변수값 확인

  21. Cluster Autoscaler 설정값 수정

  22. Cluster Autoscaler 설정값 확인

  23. Cluster Autoscaler 로그 확인 - ASG map 확인

  24. Pending 상태였던 Pod가 생성 되었는지 확인

  25. Node 갯수 확인

  26. 오토스케일링 그룹의 인스턴스 현황 확인

  27. 오토스케일링 그룹의 활동 로그 확인

  28. Deployment 삭제

  29. Pod 목록 확인

  30. Node가 삭제 되는지 확인

  31. Cluster Autoscaler 로그 확인

  32. 리소스 삭제

Karpenter

  1. Fargate 실행에 필요한 역할에 부여할 신뢰관계 정책 문서 생성

  2. Fargate 실행에 필요한 역할 생성

  3. Fargate 실행에 필요한 역할에 필요한 권한 부여

  4. Fargate 프로필 생성

  5. Fargate 프로필 상태 확인

  6. CoreDNS Pod 재생성

  7. CoreDNS Pod 상태 확인

  8. CoreDNS Pod가 생성된 노드 확인

  9. Karpenter에 부여할 IAM 정책 문서 생성

  10. Karpenter에 부여할 IAM 정책 생성

  11. Karpenter에 부여할 ServiceAccount 생성

  12. Fargate 프로필 생성

  13. Fargate 프로필 상태 확인

  14. Karpenter 설치

  15. Karpenter 생성 확인

  16. Karpenter 로그 확인

  17. 노드에 부여할 IAM 역할 생성

  18. EKS 노드에 요구되는 필수 권한 부여

  19. 노드에 부여할 역할에 EKS Access Entry 생성

  20. EC2NodeClass 생성

  21. 생성된 EC2NodeClass 상태 확인

  22. NodePool 생성

  23. 생성된 NodePool 상태 확인

  24. Cluster Autoscaler 비활성화

  25. 노드그룹 삭제

  26. Pod 상태 확인

  27. Node 목록 확인

  28. Deployment 생성

  29. Pod 상태 확인

  30. Node 목록 확인

  31. NodeClaim 확인

  32. Karpenter 로그 확인

  33. Cluster Autoscaler 삭제

  34. Deployment 삭제

  35. Pod 목록 확인

  36. Karpenter 로그 확인

  37. Node 목록 확인

  38. NodeClaim 확인

KEDA

  1. 데모 애플리케이션 배포

  2. Pod 생성 확인

  3. SQS 대기열 생성

  4. SQS 대기열에 메세지 생성

  5. 메세지 확인

  6. 데모 애플리케이션을 통해서 SQS 대기열에 있는 메시지 확인

  7. EKS Pod Identity Agent 설치

  8. EKS Pod Identity Agent 생성 확인

  9. Pod Identity Association 생성

  10. 생성된 Pod Identity Association 확인

  11. 생성된 ServiceAccount 확인

  12. 데모 애플리케이션 Pod에 위에서 생성한 ServiceAccount 부여

  13. ServiceAccount가 부여되었는지 확인

  14. 데모 애플리케이션을 통해서 SQS 대기열에 있는 메시지 확인

  15. KEDA 설치

  16. KEDA 설치 확인

  17. SQS 대기열의 메시지 갯수 기반 오토스케일링 설정

  18. ScaledObject 상태 확인

  19. Pod Identity Association 생성

  20. KEDA Operator Pod 재생성

  21. ScaledObject에 발생한 이벤트 확인

  22. ScaledObject 상태 확인

  23. HPA 확인

  24. SQS 대기열에 10개의 메세지 전송

  25. ScaledObject에 발생한 이벤트 확인

  26. ScaledObject 상태 확인

  27. HPA 확인

  28. HPA에 발생한 이벤트 확인

  29. SQS 대기열에 있는 모든 메세지 삭제

  30. HPA 확인

  31. HPA에 발생한 이벤트 확인

  32. 리소스 삭제

Last updated