본 포스팅은 MLOps 환경을 위해 EKS에 Kubeflow를 설치하기 위한 과정은 담았습니다.
구축 프로세스
1. EKS 생성
2. EKS에 접근하기 위한 EC2 생성
3. EKS Cluster에 접근하기 위한 IAM을 생성하고 Role을 부여
4. EKS Cluster에 접근하기 위한 Kubectl, AWS CLI 등을 EC2에 설치 후 접근 확인
5. EKS에 Kubeflow 설치
EKS 생성
클러스터 구성
이름 : test_kubeflow_eks
클러스터 버전 : 1.29v (2025년 3월 23일 표준 지원 종료)
클러스터 인증 모드 : EKS API 및 ConfigMap
네트워킹 지정
VPC : default
Subnet : default-01a, default-01c
보안그룹 : default
클러스터 엔드포인트 액세스 : Private
관찰성 구성 : 비활성
추가 기능 선택
CoreDNS : v1.11.1
Kube-proxy : v1.29.0
Amazon VPC CNI : 1.16.0
Amazon EKS Pod Identity 에이전트 : v1.2.0
EKS에 접근하기 위한 EC2 생성
이름 : test_kubeflow_eks_admin
이미지 : Ubuntu 22.04LTS
타입 : t3.medium
키 페어 유형 : ED25519 (22.04LTS 버전부터 RSA 형식의 키페어 미지원)
VPC : default
보안그룹 : default
스토리지 구성 : / 30GiB
IAM 생성
일단 IAM은 테스트 구축이다 보니.. 대충 필요해보이는거 넣고 구축하며 추가하는 형식으로 진행함
사용자 명 : kubeflow_eks_admin
권한 정책 :
AmazonEKS_CNI_Policy
AmazonEKSClusterPolicy
AmazonEC2FullAccess
AWS CLI 사용을 위한 액세스 키 생성 후 .csv 파일 다운로드 -> 백업
Install kubectl, AWS CLI
kubectl 설치
kubectl은 Amazon EKS Cluster와 마이너 버전 차이가 1 이하인 버전을 사용해야 함
ex) kubectl 버전이 1.28일 경우, EKS Cluster 버전이 1.27 ~ 1.29 버전과 작동
# kubectl 최신버전 설치
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.0/2024-01-04/bin/linux/amd64/kubectl
# 퍼미션 변경
chmod +x ./kubectl
# path 지정
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
# 설치한 kubectl 버전 확인
kubectl version
AWS CLI 설치
# AWS CLI 설치
apt install awscli -y
# 버전 확인
aws --version
AWS Configure 설정
# AWS Configure 설정
aws configure
#AWS Access Key ID: 위에서 IAM 생성 시 만든 access key
#AWS Secret Access Key: 위에서 IAM 생성 시 만든 secret key
#Default region name: ap-northeast-2
#Default output format: json
aws-iam-authenticator 설치
# aws-iam-authenticator 설치
curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.14.6/2019-08-22/bin/linux/amd64/aws-iam-authenticator
# 권한 설정
chmod +x ./aws-iam-authenticator
# Path 설정
mkdir -p $HOME/bin && cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$HOME/bin:$PATH
# 환경 변수 추가
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
# 아래 명령어로 토큰값이 정상 출력되면 성공
aws-iam-authenticator token -i {클러스터 이름} | python3 -m json.tool
kubectl을 사용하기 위한 config 설정
aws eks --region {리전} update-kubeconfig --name {클러스터 이름}
명령어를 실행하면 다음과 같은 에러가 발생 함
이유는, IAM에 DescribeCluster 권한이 없기 때문, AmazonEKSWorkerNodePolicy 권한에 해당 규칙이 포함되어 있으니 추가하자...
추가하고 다시 명령어를 실행하면 설정이 완료된다.
(옵션) MFA 설정
IAM -> 사용자 -> 보안자격증명 -> 멀티 팩터 인증(MFA) -> MFA 디바이스 할당
# 할당한 MFA의 ARN을 복사 후 아래 양식으로 기입
aws sts get-session-token \
--serial-number {MFA Device의 ARN} \
--token-code {6자리 MFA 번호} \
--profile {사용할 profile 명} \
--duration-seconds 86400
# --profile 명은 옵션이라 default 계정이면 빼고 입력
# 이후 나오는 결과 값을 ~/.aws/credentials 에 기입하면 된다.
# 결과 예시
{
"Credentials": {
"AccessKeyId": "ASIAZJ3****",
"SecretAccessKey": "56tyuMw****",
"SessionToken": "IQoJb3JpZ2luX2VjEPj//////////wEaDmFwLW****koNfxmmrs=",
"Expiration": "2024-04-22T08:08:42+00:00"
}
}
~/.aws/credentials 파일에 profile 추가
aws cli 사용할 때 aws {command} --profile=mfa 로 호출
'Docker & Kubenetes' 카테고리의 다른 글
Kubernetes Service (0) | 2024.05.14 |
---|---|
MLOps를 위한 EKS 클러스터 구축 - 2 (with. Kubeflow) (0) | 2024.04.26 |
Deployments 와 StatefulSets (0) | 2024.04.17 |
Kubernetes - Cluster Node 제거 (1) | 2024.02.01 |
Kubernetes - Static Pod (0) | 2024.01.12 |