반응형
1. k8s managed Server로 사용할 EC2 인스턴스 생성
private zone에 생성
2. k8s managed Server로 사용할 인스턴스 생성
참고: https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-linux.html
sudo apt-get install -y unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
3. eksctl 설치(EKS설치/운영 툴)
참고: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eksctl.html
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
4. kubectl 설치(k8s 관리툴)
참고: https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/install-kubectl.html
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.21.2/2021-07-05/bin/linux/amd64/kubectl
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
kubectl version --short --client
+ AWS IAM 생성 & 엑세스 키 생성( root 계정으로 실습할거라면 건너뛰기)
사용자이름(User name*) : eks-manager-user
기존 정책(Attach existing policies directly) : AdministratorAccess
6. aws 계정등록
위에서 IAM 계정을 만들었다면 해당 계정의 Access Key와 Secret Access Key 사용
aws configure
cat .aws/config
cat .aws/credentials
aws sts get-caller-identity
7. EKS 구성: yaml 파일 생성 및 실행
yaml 파일 생성
vi cluster.yaml
아래 코드 추가:
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: cluster-in-existing-vpc
region: ap-northeast-2
vpc:
subnets:
private:
ap-northeast-2c: { id: 서브넷ID }
ap-northeast-2a: { id: 서브넷ID }
managedNodeGroups: # 클러스터의 노드 그룹 생성
- name: ng-1-workers # 클러스터의 노드 그룹명
labels: { role: workers }
instanceType: t2.small # 클러스터 워커 노드의 인스턴스 타입
desiredCapacity: 2 # 클러스터 워커 노드의 갯수
privateNetworking: true
ssh: # ssh 접근 허용
publicKeyName: 키페어
allow: true
sourceSecurityGroupIds: ['보안그룹ID'] #원격 액세스 권한 허용 보안그룹id
- name: ng-2-builders # 클러스터의 노드 그룹명
labels: { role: builders }
instanceType: t2.small
desiredCapacity: 2
privateNetworking: true
ssh:
publicKeyName: 키페어이름
allow: true
sourceSecurityGroupIds: ['보안그룹ID']
iam:
withOIDC: true
yaml 파일 실행(약 20분 소요)
eksctl create cluster -f cluster.yaml
8. 생성 확인
Cloudformation, EKS, EC2에서 확인 가능
CLI 명령어로도 확인
kubectl get nodes
8. CLI 명령어 자동완성 기능 추가
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
9. Nginx 배포 테스트: nginx 컨테이너 5개 배포, 로드밸런서 서비스 실행
컨테이너 배포
kubectl create deployment webtest --image=nginx:1.14 --port=80 --replicas=5
파드 확인
kubectl get pods -o wide
로드밸런서 실행
kubectl expose deployment webtest --port=80 --type=LoadBalancer
위 파란 박스(external-ip)로 접속 확인
+ EKS 클러스터 삭제
방법1: yaml 파일
eksctl delete cluster -f cluster.yaml
방법2: 클러스터 이름
eksctl delete cluster --name <클러스터명>
반응형
'AWS > 인프라 구축' 카테고리의 다른 글
AWS EC2 인스턴스에 RDS 연결하는 방법 (0) | 2023.06.05 |
---|---|
AWS EC2: Nginx, Tomcat 연동 (2) | 2023.06.01 |
AWS EC2 CLI 설치 (0) | 2023.05.25 |
AWS EC2 Nginx 설치(Amazon Linux 2, Ubuntu) (0) | 2023.05.25 |
AWS EC2 Docker 설치 (0) | 2023.05.25 |