실습
Manual Scaling
Deployment 생성
Pod 갯수 확인
Deployment의 replica를 3개로 수정
Pod 갯수 확인
ReplicaSet 확인
Deployment의 replica를 2개로 수정
Deployment의 replica가 1개라면 replica를 3개로 변경
새로운 Deployment 생성
Deployment 중에서 replica가 1개인 Deployment가 있으면 replica를 3개로 변경
Pod 갯수 확인
모든 Deployment의 replica를 5개로 변경
Pod 갯수 확인
모든 Deployment 삭제
HPA (Horizontal Pod Autoscaler)
Pod의 리소스 사용량 확인
Metrics Server 설치 - https://github.com/kubernetes-sigs/metrics-server#kubernetes-metrics-server
API 서버에 등록된 API 목록 확인
v1beta1.metrics.k8s.io API의 상세 내용 확인
모든 Pod의 리소스 사용량 확인
모든 Node의 리소스 사용량 확인
Metrics Server 로그 확인
Metrics Server 로그 레벨 변경
Metrics Server 로그 확인 - 새로운 Pod가 뜬 다음에 확인
kubelet에서 제공하는 지표에 대한 접근 권한을 가진 Pod 생성
위에서 생성한 Pod에서 Metrics Server가 지표를 수집할때 호출하는 Endpoint 호출 - https://github.com/kubernetes-sigs/metrics-server/blob/4436807eec6b07ea649444529eb3b46ddbbd8914/pkg/scraper/client/resource/client.go#L77
kubelet에서 제공하는 모든 지표 확인
kubelet에서 제공하는 지표중에서 CPU 및 Memory에 대한 지표만 확인
API 서버를 통해서 Metrics Server가 지표를 수집할때 호출하는 Endpoint 호출
Autoscaling (HPA)설정
위에서 생성한 HPA 상태 확인
데모 애플리케이션에 부하를 발생시키는 Pod 생성
HPA 상태 모니터링
Ctrl+C를 입력해서 HPA 모니터링을 중지하고 실제로 Pod가 생겼는지 확인
Pod의 리소스 사용량 확인
데모 애플리케이션에 부하를 발생시키는 Pod 삭제
HPA 상태 모니터링
Ctrl+C를 입력해서 HPA 모니터링을 중지하고 HPA 상세 내용 확인
Pod의 리소스 사용량 확인
HPA 상태 확인
Pod 갯수 확인
데모 애플리케이션 및 리소스 삭제
Cluster Autoscaler
Deployment 생성
생성된 Deployment 및 Pod 확인
Pending 상태의 Pod가 있다면 아래의 명령어를 통해서 그 이유를 확인
Cluster Autoscaler에게 부여할 IAM 정책 JSON 파일 생성
IAM 정책 생성
Node에 부여된 Label을 통해서 EKS 클러스터 이름 확인하고 환경변수로 저장
EKS 클러스터가 생성되어 있는 AWS 계정번호 확인하고 환경변수로 저장
IAM OIDC 제공자 활성화
ServiceAccount 생성
ServiceAccount가 생성되었는지 확인
ServiceAccount에 명시된 IAM 역할 이름을 확인하고 환경변수로 지정
ServiceAccount와 연동된 IAM 역할에 부여된 IAM 정책 확인
ServiceAccount와 연동된 IAM 역할에 부여된 신뢰관계 정책 확인
Cluster Autoscaler 설치
Cluster Autoscaler 로그 확인 - ASG map 확인
Cluster Autoscaler 설정값 확인
EKS 노드그룹와 연동된 오토스케일링 그룹 이름을 확인하고 환경변수로 지정
오토스케일링 그룹의 인스턴스 현황 확인
오토스케일링 그룹에 부여된 태그 확인 - https://docs.aws.amazon.com/eks/latest/userguide/autoscaling.html
설치한 Helm 차트의 기본 변수값 확인
Cluster Autoscaler 설정값 수정
Cluster Autoscaler 설정값 확인
Cluster Autoscaler 로그 확인 - ASG map 확인
Pending 상태였던 Pod가 생성 되었는지 확인
Node 갯수 확인
오토스케일링 그룹의 인스턴스 현황 확인
오토스케일링 그룹의 활동 로그 확인
Cluster Autoscaler에 의해서 삭제 되지 않는 Node 확인 - https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-types-of-pods-can-prevent-ca-from-removing-a-node
Deployment 삭제
Pod 목록 확인
Node가 삭제 되는지 확인
Cluster Autoscaler 로그 확인
Cluster Autoscaler 스케일 다운 동작방식 리뷰 - https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#how-does-scale-down-work
리소스 삭제
Karpenter
Fargate 실행에 필요한 역할에 부여할 신뢰관계 정책 문서 생성
Fargate 실행에 필요한 역할 생성
Fargate 실행에 필요한 역할에 필요한 권한 부여
Fargate 프로필 생성
Fargate 프로필 상태 확인
CoreDNS Pod 재생성
CoreDNS Pod 상태 확인
CoreDNS Pod가 생성된 노드 확인
Karpenter에 부여할 IAM 정책 문서 생성
Karpenter에 부여할 IAM 정책 생성
Karpenter에 부여할 ServiceAccount 생성
Fargate 프로필 생성
Fargate 프로필 상태 확인
Karpenter 설치
Karpenter 생성 확인
Karpenter 로그 확인
노드에 부여할 IAM 역할 생성
EKS 노드에 요구되는 필수 권한 부여
노드에 부여할 역할에 EKS Access Entry 생성
EC2NodeClass 생성
생성된 EC2NodeClass 상태 확인
NodePool 생성
생성된 NodePool 상태 확인
Cluster Autoscaler 비활성화
노드그룹 삭제
Pod 상태 확인
Node 목록 확인
Deployment 생성
Pod 상태 확인
Node 목록 확인
NodeClaim 확인
Karpenter 로그 확인
Cluster Autoscaler 삭제
Deployment 삭제
Pod 목록 확인
Karpenter 로그 확인
Node 목록 확인
NodeClaim 확인
Last updated