1. Cloud9 실행 ( eksworkshop )
1.1 EKS 테스트를 위한 VPC 및 Subnet 생성

서브넷 생성 후 자동IP 할당 활성화
1.2 Cloud9 실행하기
– AWS Console에서 Cloud9 서비스 검색
– Create environment 선택
– 이름을 입력하고, 미리 생성해둔 VPC 및 Subnet을 선택합니다. 나머지 설정은 기본값으로 진행.
– 실행이 완료되면, welcome tab과 하단 작업 영역을 닫고 새로운 터미널 화면을 메인 작업 영역에 열어둡니다.
2. Cloud9 주요 툴 설치 ( eksworkshop )
2.1 SSH 키 생성
ssh-keygen
2.2 공개 키를 사용중인 EC2 리전에 업로드
aws ec2 import-key-pair --key-name "eks-shin" --public-key-material file://~/.ssh/id_rsa.pub
2.3 kubectl 설정을 저장하기 위한 기본 ~/.kube 디렉토리 생성
mkdir -p ~/.kube
2.4 kubectl 설치 및 확인
- 확인 :
kubectl version --short --client
Client Version: v1.17.11-eks-cfdc40
2.5 AWS IAM Authenticator 설치(linux)
- 확인 :
aws-iam-authenticator help
2.6 JQ 설치
sudo yum -y install jq
2.7 Cloud9 IAM Role 생성 및 할당
- AWS Console에서 IAM 서비스 검색
- 액세스관리에서 역할선택
- 역할만들기 선택
- 생성한 역할을 Cloud9 서버에 할당
2.8 Cloud9 AWS Credential OFF
AWS Settings > AWS Managed Temporary credentials OFF
2.9 임시 자격증명 파일 제거
rm -vf ${HOME}/.aws/credentials
2.10 현재 리전을 기준으로 aws-cli를 구성
2.11 aws cli version 2 설치
- 확인 :
Cloud9콘솔에서 터미널을 닫고 다시 터미널 열기
aws --version
aws-cli/2.1.25 Python/3.7.3 Linux/4.14.214-160.339.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off
2.12 GetCallerIdentity CLI 명령을 사용하여 Cloud9 IDE가 올바른 IAM 역할을 사용하는지 확인
- 결과 예시 : eksworkshop-admin
2.13 위에 결과와 아래 역할 비교
aws sts get-caller-identity
- 결과 예시 :
"Arn": "arn:aws:sts::511914651445:assumed-role/eksworkshop-admin/i-045d83808a61a22e1"
2.14 EKSCTL 다운로드
- 확인 :
eksctl version0.38.0
3. Cluster 배포(기존 VPC에 생성)
3.1 Cluster yaml 파일 작성
3.2 Cluster yaml 파일 배포 및 노드 확인
eksctl create cluster -f 1.cluster.yaml
[✔] EKS cluster "eksctl" in "ap-northeast-2" region is ready
- 노드 생성 확인 :
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-10-20-2-195.ap-northeast-2.compute.internal Ready <none> 13m v1.17.12-eks-7684af
3.3 cluster 삭제(옵션)
eksctl delete cluster --name=eksctl
3.4 AWS EKS 콘솔에서 클러스터 정보 보기(옵션)
3.4.1 Cloud9에서 클러스터를 구축 한 경우 환경 내에서 다음을 호출하여 IAM 역할 또는 사용자 ARN을 확인합니다.
- 결과 확인 :
Role ARN: arn:aws:iam::853305886524:user/hanamiya80@comtec.co.kr
3.4.2 ARN을 사용하면 명령을 실행하여 클러스터 내에서 자격 증명 매핑을 생성 할 수 있습니다.
eksctl create iamidentitymapping --cluster eksctl --arn ${rolearn} --group system:masters --username admin
3.4.3 콘솔 자격 증명을 관리자로 추가합니다.
kubectl describe configmap -n kube-system aws-auth
- 확인 :
AWS 콘솔 -> EKS -> 클러스터 -> 클러스터 선택 -> 노드 및 워크로드 현황이 보이는지 확인
3.4.4 Cluster내 노드 그룹 보기
eksctl get nodegroup --cluster=eksctl
CLUSTER NODEGROUP STATUS CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE ID ASG NAME
eksctl nodegroup CREATE_COMPLETE 2021-02-16T06:59:20Z 1 1 1 t3.small eks-2abbd4d1-e433-2d9d-4467-ed8726875501
3.4.5 노드수 조정(Scale MAX수 1=>3, NODE수 1=>2)
eksctl scale nodegroup --cluster=eksctl --name=nodegroup --nodes-min=1 --nodes-max=3 --nodes=2
- 확인 :
eksctl get nodegroup --cluster=eksctl
CLUSTER NODEGROUP STATUS CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE ID ASG NAME
eksctl nodegroup CREATE_COMPLETE 2021-02-16T06:59:20Z 1 3 2 t3.small eks-2abbd4d1-e433-2d9d-4467-ed8726875501
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-10-20-2-195.ap-northeast-2.compute.internal Ready <none> 13m v1.17.12-eks-7684af
ip-10-20-4-128.ap-northeast-2.compute.internal Ready <none> 74s v1.17.12-eks-7684af
4. Docker Version Upgrade(옵션)
4.1 Docker 현재 버전 보기
docker --version
Docker version 19.03.13-ce, build 4484c46
4.2 Old Version Uninstall
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
4.3 Docker Repository 설치
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4.4 Docker Engine 설치
sudo yum install docker-ce docker-ce-cli containerd.io
4.5 Docker 시작
sudo systemctl start docker
sudo systemctl enable docker
docker --version
Docker version 20.10.3, build 48d30b5