Ssoon

[5주차] EKS Autoscaling - KARPENTER - SET UP THE ENVIRONMENT 본문

AWS EKS Workshop Study

[5주차] EKS Autoscaling - KARPENTER - SET UP THE ENVIRONMENT

구구달스 2023. 5. 25. 06:29
CloudNet@ 팀의 AWS EKS Workshop Study 5주차 정리입니다.
# Karpenter Workshop 의 내용입니다.

Deploying CloudFormation

  • Cloudformation 스택을 파일(eks-spot-workshop-quickstarter-cnf.yml)로 로컬에서 다운로드합니다.

https://github.com/awslabs/ec2-spot-workshops/blob/master/content/karpenter/010_prerequisites/prerequisites.files/eks-spot-workshop-quickstart-cnf.yml

 

GitHub - awslabs/ec2-spot-workshops: Collection of workshops to demonstrate best practices in using Amazon EC2 Spot Instances. h

Collection of workshops to demonstrate best practices in using Amazon EC2 Spot Instances. https://aws.amazon.com/ec2/spot/ - GitHub - awslabs/ec2-spot-workshops: Collection of workshops to demonstr...

github.com

  • CloudFormation 콘솔로 이동하여 새 스택 생성을 선택합니다. Template is ready 을 선택한 다음 Upload a template file를 선택하고 컴퓨터에 다운로드한 파일을 선택하고 다음을 클릭합니다.

  • 'karpenter-workshop'을 사용하여 스택 이름을 채우고 매개변수 섹션의 모든 설정을 기본 매개변수로 두고 다음을 클릭합니다.
  • 마지막으로 Review karpenter-workshop에서 페이지 하단으로 이동하여 AWS CloudFormation이 IAM 리소스를 생성할 수 있음을 인정하는 기능 섹션을 선택합니다. 그런 다음 스택 생성을 클릭합니다.

Cloud9에 액세스하기

Cloud9은 일반적으로 IAM 자격 증명을 동적으로 관리합니다. 
이것은 현재 EKS IAM 인증과 호환되지 않으므로 비활성화하고 대신 IAM 역할에 의존합니다.
  • 스프로킷[]을 클릭
  • AWS SETTINGS 선택
  • AWS managed temporary credentials 끄기

  • 임시 자격 증명이 아직 없는지 확인하기 위해 기존 자격 증명 파일도 제거합니다.
rm -vf ${HOME}/.aws/credentials
  • GetCallerIdentity CLI 명령을 사용하여 Cloud9 IDE가 올바른 IAM 역할을 사용하고 있는지 확인합니다.


Cluster 테스트

  • 2개의 노드가 표시됩니다.

  • 클러스터 설정을 ".bash_profile"에 저장합니다.
export CLUSTER_NAME=eksworkshop-eksctl
NODE_GROUP_NAME=$(eksctl get nodegroup --cluster eksworkshop-eksctl -o json | jq -r '.[].Name')
ROLE_NAME=$(aws eks describe-nodegroup --cluster-name eksworkshop-eksctl --nodegroup-name $NODE_GROUP_NAME | jq -r '.nodegroup["nodeRole"]' | cut -f2 -d/)
echo "export ROLE_NAME=${ROLE_NAME}" >> ~/.bash_profile
echo "export CLUSTER_NAME=eksworkshop-eksctl" >> ~/.bash_profile
echo "export AWS_DEFAULT_REGION=$AWS_REGION" >> ~/.bash_profile
echo "export CLUSTER_ENDPOINT=$(aws eks describe-cluster --name ${CLUSTER_NAME} --query "cluster.endpoint" --output json)" >> ~/.bash_profile
echo "export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)" >> ~/.bash_profile
source ~/.bash_profile

[ INSTALL KUBERNETES TOOLS ]

  • Helm (패키지 관리자)
  • Metric Server (리소스 사용량 데이터 수집기)
  • Kube-Ops-View (클러스터 시각화 도구)
  • EKS-Node-Viewer (클러스터 내에서 동적 노드 사용을 시각화하기 위한 도구)

HELM CLI 설치

Helm은 여러 Kubernetes 리소스를 Chart라는 단일 논리적 배포 단위로 패키징하는 Kubernetes용 패키지 관리자

export DESIRED_VERSION=v3.9.4
curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

helm version --short


Metrics Server 배포

Kubernetes에 내장된 자동 확장 파이프라인을 위한 컨테이너 리소스 메트릭의 확장 가능하고 효율적인 소스입니다. 이러한 메트릭은 배포의 확장 동작을 주도합니다. Kubernetes Metrics Server를 사용하여 메트릭 서버를 배포합니다.

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.1/components.yaml

메트릭 서버 APIService의 상태를 확인

kubectl get apiservice v1beta1.metrics.k8s.io -o json | jq '.status'


KUBE-OPS-VIEW 설치

LoadBalancer 서비스 유형을 사용하고 읽기 전용 서비스 계정이 클러스터에서 노드 및 포드 정보를 읽을 수 있도록 RBAC(Resource Base Access Control) 항목을 생성하여 kube-ops-view를 배포하는 데 필요한 사양을 다운로드합니다.

mkdir $HOME/environment/kube-ops-view
for file in kustomization.yaml rbac.yaml deployment.yaml service.yaml; do mkdir -p $HOME/environment/kube-ops-view/; curl "https://raw.githubusercontent.com/awslabs/ec2-spot-workshops/master/content/karpenter/040_k8s_tools/k8_tools.files/kube_ops_view/${file}" > $HOME/environment/kube-ops-view/${file}; done
kubectl apply -k $HOME/environment/kube-ops-view

설치 정보를 확인합니다.

서비스에 대한 세부 정보를 확인하고 해당 URL로 접속하여 kube-ops-view 를 확인합니다.

kubectl get svc kube-ops-view | tail -n 1 | awk '{ print "Kube-ops-view URL = http://"$4 }'


EKS-NODE-VIEWER 설치

eks-node-viewer는 클러스터 내에서 동적 노드 사용을 시각화하기 위한 도구입니다. 원래 Karpenter와의 통합을 시연하기 위해 AWS에서 내부 도구로 개발되었습니다. 예약된 포드 리소스 요청과 노드의 할당 가능한 용량을 표시합니다. 실제 Pod 리소스 사용량은 확인하지 않습니다.

go install github.com/awslabs/eks-node-viewer/cmd/eks-node-viewer@latest
echo "export PATH=$HOME/go/bin:$PATH" >> $HOME/.bashrc
source $HOME/.bashrc

실행하고 정보를 확인합니다.

eks-node-viewer

 

 

Comments