<1> 권한 준비 1 콘솔에서 acces--key, secret-key 준비 iam에서 계정 만들고 admin 권한 부여 acces--key, secret-key 만들고 노트패드에 복사해 두기 2 # 명령서버나 pc에 eks생성 가능한 권한 부여 aws configure AWS Access Key ID [None]: AKIA2Q AWS Secret Access Key [None]: JGgw5bM Default region name [None]: ap-northeast-2 Default output format [None]: < 엔터> [root@kops-ec2 environment]# aws s3 ls 2026-01-11 17:23:29 cf-templates-1m33dxyu90t4w-ap-northeast-2 <2> OS별 EKS 설치법 1 windows pc , Windows 파워쉘 ,관리자 권한 으로 실행. # aws cli msiexec.exe /i https://awscli.amazonaws.com/AWSCLIV2.msi # eksctl Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) choco install eksctl # kubectl. download curl.exe -LO "https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe" 2 MAC # Homebrew가 설치되어 있어야 합니다. brew install awscli eksctl kubectl aws --version eksctl version kubectl version --client 3 Linux (Ubuntu/Amazon Linux 2 등) 리눅스는 바이너리 파일을 직접 다운로드하여 /usr/local/bin 경로에 넣는 방식이 가장 확실합니다. AWS CLI v2: curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install eksctl # 최신 바이너리 다운로드 및 압축 해제 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 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 5 aws에서 cloudformation 으로 ec2 1대 생성하는 법 <3> EKs 클러스터 생성 1 # eksctl을 사용해 생성 IAM 권한: 클러스터를 생성하는 PC의 AWS CLI에 설정된 사용자가 AdministratorAccess 권한을 가지고 있어야 합니다. (aws configure 명령어로 설정) 비용: K3s와 달리 EKS는 생성 즉시 시간당 약 $0.10의 제어 평면(Control Plane) 비용이 발생하며, 워커 노드로 사용되는 EC2 비용도 별도로 청구됩니다. 버전 호환성: kubectl 버전은 EKS 클러스터 버전과 마이너 버전이 1단계 이내로 차이 나야 안전합니다. 2 # windows 파워쉘 실행 # 1. YAML 파일 생성 (Here-String 사용) $config = @" apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: free-vpc-cluster region: ap-northeast-2 version: "1.34" vpc: clusterEndpoints: publicAccess: true privateAccess: true nat: gateway: Single # 비용 절감을 위해 NAT 게이트웨이를 1개만 생성 managedNodeGroups: - name: standard-nodes instanceType: t3.small # 프리티어는 아니지만 시스템 안정성을 위해 추천 (t3.micro는 매우 부족) minSize: 1 maxSize: 2 desiredCapacity: 1 privateNetworking: true iam: withAddonPolicies: imageBuilder: true autoScaler: true cloudWatch: true addons: - name: vpc-cni - name: coredns - name: kube-proxy "@ # 파일로 저장 (UTF-8 인코딩 지정) $config | Set-Content -Path "eks-freetier-setup.yaml" -Encoding UTF8 # 2. 클러스터 생성 시작 eksctl create cluster -f eks-freetier-setup.yaml (13분) # 아래는 리눅스 용 cat < eks-freetier-setup.yaml apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: free-vpc-cluster region: ap-northeast-2 version: "1.34" vpc: clusterEndpoints: publicAccess: true privateAccess: true nat: gateway: Single # 비용 절감을 위해 NAT 게이트웨이를 1개만 생성 (중요!) managedNodeGroups: - name: standard-nodes # --- 인스턴스 타입 선택 가이드 --- # 1. t3.micro : 프리티어 대상 (단, K8s 시스템 Pod 실행 시 리소스가 매우 부족할 수 있음) # 2. t3.small : 가성비 추천 (시스템 안정성 확보) # 3. c7i-flex.large (2cpu/4gb) : 연산 위주 # 4. m7i-flex.large (2cpu/8gb) : 메모리 여유 instanceType: t3.small minSize: 1 maxSize: 2 desiredCapacity: 1 # 비용 절감을 위해 노드 수를 1대로 시작 (필요 시 증가) privateNetworking: true iam: withAddonPolicies: imageBuilder: true autoScaler: true cloudWatch: true # 필수 애드온만 설치 addons: - name: vpc-cni - name: coredns - name: kube-proxy EOF # 클러스터 생성 시작 eksctl create cluster -f eks-freetier-setup.yaml # eksctl 로 쿠버네티스 생성시 cloudformation을 이용하여 생성하게 된다. kubectl get nodes PS C:\WINDOWS\system32> kubectl get nodes NAME STATUS ROLES AGE VERSION ip-192-168-184-231.ap-northeast-2.compute.internal Ready 72s v1.34.3-eks-70ce843 eksctl-free-vpc-cluster-cluster/VPC free-vpc-cluster <4> 다른 리눅스에서 kubectl get nodes 되게 하려면 ? 1 다른 리눅스 서버(예: Ubuntu, CentOS 등)나 로컬 PC에서 방금 생성한 EKS 클러스터에 접속하려면, 크게 두 가지 작업이 필요합니다. kubectl 및 aws-cli 설치 (도구 준비) kubeconfig 업데이트 (접속 권한 및 정보 동기화) 1. 도구 설치 (리눅스 기준) AWS CLI 설치: curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install 2 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 2. AWS 자격 증명 설정 해당 리눅스 서버에서 EKS에 접근할 권한이 있는 IAM 사용자의 키를 등록해야 합니다. 3 aws configure 4 kubeconfig 업데이트 (가장 중요) 이제 AWS CLI를 사용해서 **"나 이 클러스터에 접속할 정보를 내 로컬 설정에 저장할게"**라고 선언하는 단계입니다. aws eks update-kubeconfig --region ap-northeast-2 --name free-vpc-cluster --name: 생성하신 클러스터 이름(free-vpc-cluster)과 일치해야 합니다. aws eks update-kubeconfig --region ap-northeast-2 --name free-vpc-cluster --name: free-vpc-cluster kubectl get nodes (arn:aws:eks:ap-northeast-2:588752323301:cluster/free-vpc-cluster:N/A) [root@kops-ec2 ~]# k get no NAME STATUS ROLES AGE VERSION ip-192-168-184-231.ap-northeast-2.compute.internal Ready 16m v1.34.3-eks-70ce843 (arn:aws:eks:ap-northeast-2:588752323301:cluster/free-vpc-cluster:N/A) [root@kops-ec2 ~]# <5> 참고 - Kubernetes 내부의 aws-auth ConfigMap에 계정 B를 등록 클러스터를 생성한 계정(A)과 다른 리눅스 서버에서 사용하는 계정(B)이 다르다면, Kubernetes 내부의 aws-auth ConfigMap에 계정 B를 등록해주어야 합니다. EKS는 기본적으로 **클러스터를 생성한 IAM Entity(사용자 또는 역할)**에게만 system:masters (최고 관리자) 권한을 자동으로 부여하기 때문입니다. 1. (기존 PC) Windows에서 권한 부여하기 먼저 클러스터를 생성했던 Windows 터미널에서 아래 작업을 수행합니다. 방법 A: eksctl 사용 (가장 권장) 가장 쉽고 실수를 방지하는 방법입니다. 리눅스 서버에서 사용하는 IAM User의 ARN이 필요합니다. PowerShell # 리눅스 서버 계정의 ARN을 등록 (예: arn:aws:iam::123456789012:user/linux-user) eksctl create iamidentitymapping ` --cluster free-vpc-cluster ` --region ap-northeast-2 ` --arn arn:aws:iam::계정ID:user/사용자명 ` --group system:masters ` --username admin-user 2 방법 B: 직접 ConfigMap 수정 kubectl로 직접 편집하고 싶다면 아래 명령어를 입력하세요. PowerShell kubectl edit -n kube-system configmap/aws-auth data: mapUsers: | - userarn: arn:aws:iam::계정ID:user/사용자명 username: admin-user groups: - system:masters 2. (리눅스 서버) 접속 설정 업데이트 이제 권한이 허용되었으므로, 리눅스 서버로 돌아가서 접속 정보를 갱신합니다. # 1. AWS 자격 증명 확인 (계정 B의 Access Key가 등록되어 있어야 함) aws configure # 2. kubeconfig 업데이트 aws eks update-kubeconfig --region ap-northeast-2 --name free-vpc-cluster # 3. 확인 kubectl get nodes ARN 확인 방법: 리눅스 서버에서 aws sts get-caller-identity를 입력하면 현재 로그인된 사용자의 정확한 ARN을 확인할 수 있습니다. 보안: system:masters 그룹은 모든 권한을 가진 슈퍼 유저 권한입니다. 실제 운영 환경이라면 필요한 권한만 든 별도의 Role을 만드는 것이 좋지만, 학습용이라면 이 방식이 가장 확실합니다 <6> 삭제 eksctl delete cluster -f cluster.yaml