반응형
AWS EKS(Elastic Kubernetes Service)는 Kubernetes 클러스터를 관리하는 AWS의 서비스입니다. EKS에서 Pod를 구성하려면 클러스터 생성부터 애플리케이션 배포까지 여러 단계를 거쳐야 합니다. 아래는 Pod를 구성하는 방법을 단계별로 설명합니다.
1. AWS EKS 클러스터 생성
- AWS CLI 설정
- AWS 액세스 키, 비밀 키, 리전 설정.
- aws configure
- EKS 클러스터 생성
- IAM Role: EKS 관리 권한이 있는 역할.
- VPC 설정: 서브넷 및 보안 그룹을 연결.
- aws eks create-cluster \ --name my-cluster \ --region us-west-2 \ --role-arn arn:aws:iam::123456789012:role/EKSRole \ --resources-vpc-config subnetIds=subnet-abc12345,subnet-def67890,securityGroupIds=sg-0123456789abcdef0
- 노드 그룹 추가
- aws eks create-nodegroup \ --cluster-name my-cluster \ --nodegroup-name my-node-group \ --scaling-config minSize=1,maxSize=3,desiredSize=2 \ --disk-size 20 \ --subnets subnet-abc12345 subnet-def67890 \ --instance-types t3.medium \ --ami-type AL2_x86_64
2. kubectl 설정
- kubectl 설치 및 구성
- 최신 버전 설치:
- curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x kubectl mv kubectl /usr/local/bin/
- EKS 클러스터 연결 설정:
- aws eks update-kubeconfig --region us-west-2 --name my-cluster
- 연결 확인:
- kubectl get nodes
3. Pod 구성
- Pod YAML 파일 작성
- my-pod.yaml 파일 생성:
apiVersion: v1 kind: Pod metadata: name: my-pod labels: app: my-app spec: containers: - name: my-container image: nginx:latest ports: - containerPort: 80
- my-pod.yaml 파일 생성:
- Pod 생성
- kubectl apply -f my-pod.yaml
- Pod 확인
- kubectl get pods
4. 서비스로 Pod 노출
Pod를 외부에서 액세스 가능하도록 Service를 설정합니다.
- Service YAML 파일 작성
- my-service.yaml 파일 생성:
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
- my-service.yaml 파일 생성:
- Service 생성
- kubectl apply -f my-service.yaml
- Service 확인
- External IP가 생성되었는지 확인하고, 이를 통해 Pod에 접근합니다.
- kubectl get services
5. 자동화 및 추가 구성
- Deployment 사용
- Pod를 직접 생성하는 대신, Deployment를 통해 관리하면 더 안정적입니다.
- Deployment YAML:
- apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment spec: replicas: 2 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-container image: nginx:latest ports: - containerPort: 80
- Deployment 적용:
- kubectl apply -f my-deployment.yaml
- Helm을 사용한 구성
- Helm을 통해 복잡한 Pod 및 Deployment를 템플릿화할 수 있습니다:
helm create my-app helm install my-app ./my-app
- Helm을 통해 복잡한 Pod 및 Deployment를 템플릿화할 수 있습니다:
요약
- EKS 클러스터와 노드 그룹 생성.
- kubectl로 클러스터 구성 및 관리.
- YAML 파일로 Pod, Service, Deployment 생성 및 배포.
- 필요 시 Helm을 활용해 배포 자동화.
AWS EKS에서 Pod를 구성할 때 YAML을 작성하는 것이 핵심이며, 안정성을 위해 Deployment와 LoadBalancer를 사용하는 것이 권장됩니다.
반응형