eksctl은 Amazon EKS (Elastic Kubernetes Service) 클러스터를 쉽게 생성, 관리 및 삭제할 수 있도록 설계된 CLI 도구입니다. eksctl은 Kubernetes 클러스터를 AWS에서 빠르고 간단하게 설정할 수 있는 방법을 제공하며, 클러스터 설정과 관리의 복잡성을 줄이는 데 중점을 둡니다.
이 도구는 Weaveworks와 AWS가 협력하여 개발했으며, Kubernetes 클러스터의 자동화된 네트워크 설정, 노드 그룹 생성, IAM 역할 구성 등의 작업을 간단한 명령으로 수행할 수 있습니다.
eksctl을 통한 EKS 구성
1.eksctl 설치
사전 환경 구성에서 이미 설치되어 있습니다. 이 단계는 생략이 가능합니다.
아래와 같이 eksctl을 IDE 터미널에 설치하고 버전을 확인합니다.
eksctl 버전이 낮은 경우에는 EKS 최신버전을 설치할 경우 , 원할하게 설치 되지 않을 수 있습니다.
# eksctl로 cluster 만들기
eksctl create cluster --config-file=/home/ec2-user/environment/myeks/eksworkshop.yaml
025-01-25 07:43:25 [ℹ] eksctl version 0.202.0
2025-01-25 07:43:25 [ℹ] using region ap-northeast-2
2025-01-25 07:43:25 [✔] using existing VPC (vpc-0a8f9ba32a7ccd63e) and subnets (private:map[PrivateSubnet01:{subnet-01f755ec59aea4fbd ap-northeast-2a 10.11.48.0/20 0 } PrivateSubnet02:{subnet-0b6fe2f1a97454cab ap-northeast-2b 10.11.64.0/20 0 } PrivateSubnet03:{subnet-0d59308be5c533ed8 ap-northeast-2c 10.11.80.0/20 0 }] public:map[PublicSubnet01:{subnet-08e88afe890bb0dc0 ap-northeast-2a 10.11.0.0/20 0 } PublicSubnet02:{subnet-0ae04fc52d12ae17b ap-northeast-2b 10.11.16.0/20 0 } PublicSubnet03:{subnet-09361b2357369c56f ap-northeast-2c 10.11.32.0/20 0 }])
2025-01-25 07:43:25 [!] custom VPC/subnets will be used; if resulting cluster doesn't function as expected, make sure to review the configuration of VPC/subnets
2025-01-25 07:43:25 [ℹ] nodegroup "ng-public-01" will use "ami-00da1360b43239c87" [AmazonLinux2/1.29]
2025-01-25 07:43:26 [ℹ] nodegroup "ng-private-01" will use "ami-00da1360b43239c87" [AmazonLinux2/1.29]
2025-01-25 07:43:26 [ℹ] nodegroup "managed-ng-public-01" will use "" [AmazonLinux2/1.29]
2025-01-25 07:43:26 [ℹ] nodegroup "managed-ng-private-01" will use "" [AmazonLinux2/1.29]
2025-01-25 07:43:26 [ℹ] using Kubernetes version 1.29
2025-01-25 07:43:26 [ℹ] creating EKS cluster "eksworkshop" in "ap-northeast-2" region with managed nodes and un-managed nodes
2025-01-25 07:43:26 [ℹ] 4 nodegroups (managed-ng-private-01, managed-ng-public-01, ng-private-01, ng-public-01) were included (based on the include/exclude rules)
2025-01-25 07:43:26 [ℹ] will create a CloudFormation stack for cluster itself and 2 nodegroup stack(s)
2025-01-25 07:43:26 [ℹ] will create a CloudFormation stack for cluster itself and 2 managed nodegroup stack(s)
2025-01-25 07:43:26 [ℹ] if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=ap-northeast-2 --cluster=eksworkshop'
2025-01-25 07:43:26 [ℹ] Kubernetes API endpoint access will use default of {publicAccess=true, privateAccess=false} for cluster "eksworkshop" in "ap-northeast-2"
2025-01-25 07:43:26 [ℹ] configuring CloudWatch logging for cluster "eksworkshop" in "ap-northeast-2" (enabled types: api, audit, authenticator, controllerManager, scheduler & no types disabled)
2025-01-25 07:43:26 [ℹ] default addons metrics-server were not specified, will install them as EKS addons
2025-01-25 07:43:26 [ℹ]
2 sequential tasks: { create cluster control plane "eksworkshop",
2 sequential sub-tasks: {
5 sequential sub-tasks: {
1 task: { create addons },
wait for control plane to become ready,
associate IAM OIDC provider,
no tasks,
update VPC CNI to use IRSA if required,
},
2 parallel sub-tasks: {
2 parallel sub-tasks: {
create nodegroup "ng-public-01",
create nodegroup "ng-private-01",
},
2 parallel sub-tasks: {
create managed nodegroup "managed-ng-public-01",
create managed nodegroup "managed-ng-private-01",
},
},
}
}
2025-01-25 07:43:26 [ℹ] building cluster stack "eksctl-eksworkshop-cluster"
2025-01-25 07:43:26 [ℹ] deploying stack "eksctl-eksworkshop-cluster"
2025-01-25 07:43:56 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-cluster"
2025-01-25 07:50:26 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-cluster"
2025-01-25 07:50:28 [!] IRSA config is set for "vpc-cni" addon, but since OIDC is disabled on the cluster, eksctl cannot configure the requested permissions; the recommended way to provide IAM permissions for "vpc-cni" addon is via pod identity associations; after addon creation is completed, add all recommended policies to the config file, under `addon.PodIdentityAssociations`, and run `eksctl update addon`
2025-01-25 07:50:28 [ℹ] creating addon
2025-01-25 07:50:28 [ℹ] successfully created addon
2025-01-25 07:50:29 [ℹ] creating addon
2025-01-25 07:50:29 [ℹ] successfully created addon
2025-01-25 07:50:29 [ℹ] creating addon
2025-01-25 07:50:30 [ℹ] successfully created addon
2025-01-25 07:50:30 [ℹ] creating addon
2025-01-25 07:50:30 [ℹ] successfully created addon
2025-01-25 07:52:32 [ℹ] addon "vpc-cni" active
2025-01-25 07:52:32 [ℹ] deploying stack "eksctl-eksworkshop-addon-vpc-cni"
2025-01-25 07:52:32 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-addon-vpc-cni"
2025-01-25 07:53:02 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-addon-vpc-cni"
2025-01-25 07:53:02 [ℹ] updating addon
2025-01-25 07:53:13 [ℹ] addon "vpc-cni" active
2025-01-25 07:53:13 [ℹ] building nodegroup stack "eksctl-eksworkshop-nodegroup-ng-private-01"
2025-01-25 07:53:13 [ℹ] building nodegroup stack "eksctl-eksworkshop-nodegroup-ng-public-01"
2025-01-25 07:53:13 [!] subnets contain a mix of both local and availability zones
2025-01-25 07:53:13 [ℹ] building managed nodegroup stack "eksctl-eksworkshop-nodegroup-managed-ng-private-01"
2025-01-25 07:53:13 [!] subnets contain a mix of both local and availability zones
2025-01-25 07:53:13 [ℹ] building managed nodegroup stack "eksctl-eksworkshop-nodegroup-managed-ng-public-01"
2025-01-25 07:53:13 [ℹ] deploying stack "eksctl-eksworkshop-nodegroup-managed-ng-private-01"
2025-01-25 07:53:13 [ℹ] deploying stack "eksctl-eksworkshop-nodegroup-ng-private-01"
2025-01-25 07:53:13 [ℹ] deploying stack "eksctl-eksworkshop-nodegroup-ng-public-01"
2025-01-25 07:53:13 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-managed-ng-private-01"
2025-01-25 07:53:13 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-ng-private-01"
2025-01-25 07:53:13 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-ng-public-01"
2025-01-25 07:53:13 [ℹ] deploying stack "eksctl-eksworkshop-nodegroup-managed-ng-public-01"
2025-01-25 07:53:13 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-managed-ng-public-01"
2025-01-25 07:53:43 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-managed-ng-private-01"
2025-01-25 07:53:43 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-ng-private-01"
2025-01-25 07:53:43 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-ng-public-01"
2025-01-25 07:53:43 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-managed-ng-public-01"
2025-01-25 07:54:23 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-ng-private-01"
2025-01-25 07:54:26 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-managed-ng-private-01"
2025-01-25 07:54:32 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-managed-ng-public-01"
2025-01-25 07:54:39 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-ng-public-01"
2025-01-25 07:55:19 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-managed-ng-private-01"
2025-01-25 07:55:35 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-managed-ng-public-01"
2025-01-25 07:55:47 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-ng-public-01"
2025-01-25 07:55:58 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-managed-ng-private-01"
2025-01-25 07:56:10 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-ng-private-01"
2025-01-25 07:56:51 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-nodegroup-ng-public-01"
2025-01-25 07:56:51 [ℹ] waiting for the control plane to become ready
2025-01-25 07:56:52 [✔] saved kubeconfig as "/home/ec2-user/.kube/config"
2025-01-25 07:56:52 [ℹ] no tasks
2025-01-25 07:56:52 [✔] all EKS cluster resources for "eksworkshop" have been created
2025-01-25 07:56:52 [ℹ] nodegroup "ng-public-01" has 3 node(s)
2025-01-25 07:56:52 [ℹ] node "ip-10-11-13-43.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-30-94.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-39-158.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] waiting for at least 3 node(s) to become ready in "ng-public-01"
2025-01-25 07:56:52 [ℹ] nodegroup "ng-public-01" has 3 node(s)
2025-01-25 07:56:52 [ℹ] node "ip-10-11-13-43.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-30-94.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-39-158.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] nodegroup "ng-private-01" has 3 node(s)
2025-01-25 07:56:52 [ℹ] node "ip-10-11-52-252.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-67-238.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-94-141.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] waiting for at least 3 node(s) to become ready in "ng-private-01"
2025-01-25 07:56:52 [ℹ] nodegroup "ng-private-01" has 3 node(s)
2025-01-25 07:56:52 [ℹ] node "ip-10-11-52-252.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-67-238.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-94-141.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [✔] created 2 nodegroup(s) in cluster "eksworkshop"
2025-01-25 07:56:52 [ℹ] nodegroup "managed-ng-public-01" has 3 node(s)
2025-01-25 07:56:52 [ℹ] node "ip-10-11-11-0.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-17-71.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-47-6.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] waiting for at least 3 node(s) to become ready in "managed-ng-public-01"
2025-01-25 07:56:52 [ℹ] nodegroup "managed-ng-public-01" has 3 node(s)
2025-01-25 07:56:52 [ℹ] node "ip-10-11-11-0.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-17-71.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-47-6.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] nodegroup "managed-ng-private-01" has 3 node(s)
2025-01-25 07:56:52 [ℹ] node "ip-10-11-61-150.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-79-93.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-81-61.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] waiting for at least 3 node(s) to become ready in "managed-ng-private-01"
2025-01-25 07:56:52 [ℹ] nodegroup "managed-ng-private-01" has 3 node(s)
2025-01-25 07:56:52 [ℹ] node "ip-10-11-61-150.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-79-93.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [ℹ] node "ip-10-11-81-61.ap-northeast-2.compute.internal" is ready
2025-01-25 07:56:52 [✔] created 2 managed nodegroup(s) in cluster "eksworkshop"
2025-01-25 07:56:53 [ℹ] IRSA is set for "aws-ebs-csi-driver" addon; will use this to configure IAM permissions
2025-01-25 07:56:53 [!] the recommended way to provide IAM permissions for "aws-ebs-csi-driver" addon is via pod identity associations; after addon creation is completed, run `eksctl utils migrate-to-pod-identity`
2025-01-25 07:56:53 [ℹ] creating role using provided policies for "aws-ebs-csi-driver" addon
2025-01-25 07:56:54 [ℹ] deploying stack "eksctl-eksworkshop-addon-aws-ebs-csi-driver"
2025-01-25 07:56:54 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-addon-aws-ebs-csi-driver"
2025-01-25 07:57:24 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-addon-aws-ebs-csi-driver"
2025-01-25 07:58:11 [ℹ] waiting for CloudFormation stack "eksctl-eksworkshop-addon-aws-ebs-csi-driver"
2025-01-25 07:58:11 [ℹ] creating addon
2025-01-25 07:59:08 [ℹ] addon "aws-ebs-csi-driver" active
2025-01-25 07:59:09 [ℹ] kubectl command should work with "/home/ec2-user/.kube/config", try 'kubectl get nodes'
2025-01-25 07:59:09 [✔] EKS cluster "eksworkshop" in "ap-northeast-2" region is ready