eksctl-control-host 생성(EC2)
보안그룹이 ssh 접속을 할 수 있게 한 뒤 EC2 인스턴스 한 대를 생성합니다. (t3.micro)
# kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
# eksctl
# for ARM systems, set ARCH to: `arm64`, `armv6` or `armv7`
ARCH=amd64
PLATFORM=$(uname -s)_$ARCH
curl -sLO "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_$PLATFORM.tar.gz"
# (Optional) Verify checksum
curl -sL "https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_checksums.txt" | grep $PLATFORM | sha256sum --check
tar -xzf eksctl_$PLATFORM.tar.gz -C /tmp && rm eksctl_$PLATFORM.tar.gz
sudo mv /tmp/eksctl /usr/local/bin
eksctl version
위의 명령어를 하나씩 실행하며 kubectl, eksctl을 설치합니다.
mkdir .ssh
ssh-keygen
aws ec2 import-key-pair --key-name "<key-pair-name>" --public-key-material fileb://~/.ssh/id_rsa.pub
위 명령어로 worknode 생성할 때 사용할 예정!
EKSCTL 명령어 실행
eksctl create cluster \
--name <cluster-name> \
--version 1.29 \
--vpc-private-subnets <subnet-id>,<subnet-id> \
--vpc-public-subnets <subnet-id>,<subnet-id> \
--without-nodegroup
eksctl create nodegroup \
--cluster <cluster-name> \
--name <nodegroup-name> \
--node-type t3.small \
--node-volume-size=8 \
--nodes 1 \
--nodes-min 1 \
--nodes-max 2 \
--node-private-networking \
--ssh-access \
--ssh-public-key <key-pair-name> \
--managed
위에 생성한 host 서버에 해당 명령어를 입력합니다.
위 이미지 처럼 클러스터와 노드그룹이 생성된 것을 콘솔에서 확인할 수 있습니다.
aws eks update-kubeconfig --name <cluster-name> --region <region>
위 명령어를 입력해 kubeconfig를 업데이트 합니다.
혹, 콘솔 상에서 IAM 보안주체 뭐시기 에러나면, 액세스 항목을 확인하시면 됩니다.
eksctl.yaml 파일 작성
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: <eks-cluster-name>
region: ap-northeast-2
version: "1.29"
vpc:
subnets:
private:
ap-northeast-2a: { id: <subnet-a-id> }
ap-northeast-2c: { id: <subnet-c-id> }
managedNodeGroups:
- name: <eks-nodegroup-name>
instanceType: t3.small
instanceName: <eks-nodegroup-ec2-name>
volumeSize: 8
ssh:
allow: true
sourceSecurityGroupIds: ["<sg-id>"]
minSize: 1
desiredCapacity: 1
maxSize: 2
labels: { type: eks-node }
privateNetworking: true
iam:
withOIDC: true
# 참고: https://eksctl.io/usage/creating-and-managing-clusters/
위 코드에 알맞은 구성을 설정한 뒤 해당 yaml파일을 s3 버킷에 업로드 합니다.
eksctl 배포
aws configure 설정을 위한 user와 accesskey를 생성한 뒤 설정합니다.
aws s3 cp <s3-uri> .
s3에 업로드한 eksctl.yaml파일을 가져옵니다.
eksctl create cluster -f eksctl.yaml
위 명령어를 통해 cluster를 생성합니다.
위 이미지와 같이 keypair 에러가 나면 ssh-keygen 명령어로 해결합니다.
노드그룹 까지 잘 설정된 것을 확인할 수 있습니다.
eksctl delete cluster -f cluster.yaml
위 명령어를 입력하면 클러스터가 삭제됩니다.
'Cloud > AWS' 카테고리의 다른 글
AWS 환경 위에서 NAS 환경 구성하는 방법 (0) | 2024.04.24 |
---|---|
[AWS] private EC2에 접속하는 방법 -2 (0) | 2024.03.06 |
[AWS] private EC2에 접속하는 방법 -1 (0) | 2024.03.05 |
[AWS] IoT Device Management - Bulk registration (0) | 2023.10.18 |
[AWS] Amazon OpenSearch Service 사용해보기 (0) | 2023.08.23 |