0 1 eksctl delete cluster --name eks-demo ----------------------- # 아래는 리눅스 용 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: 5 desiredCapacity: 3 # 비용 절감을 위해 노드 수를 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 eksctl get nodegroup --cluster free-vpc-cluster eksctl scale nodegroup \ --cluster <클러스터이름> \ --name <노드그룹이름> \ --nodes 2 eksctl scale nodegroup \ --cluster free-vpc-cluster \ --name standard-nodes \ --nodes 2 1 # pod에 대해 공부하자 # eks 클러스터가 잘 생성되었는지 검증하자. # 터미널 1 watch -d kubectl get no,ing,pods,deployment,rs,svc # 터미널 2 kubectl run my-pod --image=nginx # 파일로 만들기 kubectl run my-pod --image=nginx --dry-run=client -o yaml > pod.yaml more pod.yaml kubectl delete pod/my-pod pod "my-pod" deleted 3 # 한번에 실행하기 cat cat < my-pod.yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx-container image: nginx:latest EOF # 이후 실행하세요. kubectl apply -f my-pod.yaml kubectl delete pod/my-pod 5 파드와 서비스를 하나의 YAML 덩어리로 묶어서 cat 명령어로 한 번에 실행하는 방법입니다. Kubernetes에서는 --- 구분자를 사용해 여러 리소스를 한 파일에 정의할 수 있습니다. # name: my-web-pod # name: my-web-service # 파드와 노트포트 같이 만들기 cat < ingress-test.yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-alb namespace: default annotations: # 인터넷에서 접속 가능하도록 설정 alb.ingress.kubernetes.io/scheme: internet-facing # 타겟 타입을 IP로 설정 (Fargate나 성능 최적화에 유리) alb.ingress.kubernetes.io/target-type: ip spec: ingressClassName: alb rules: - http: paths: - path: / pathType: Prefix backend: service: # 현재 실행 중인 서비스 이름을 적으세요 (없다면 아래 '2048' 예시 참고) name: service-2048 port: number: 80 EOF # 파일 생성 후 바로 배포 kubectl apply -f ingress-test.yaml k ns default 17 k delete pod/my-web-pod k delete pod/aws-web-pod 18 # 2048 cat < game-2048.yaml apiVersion: apps/v1 kind: Deployment metadata: name: deployment-2048 namespace: default spec: replicas: 2 selector: matchLabels: app: game-2048 template: metadata: labels: app: game-2048 spec: containers: - name: app-2048 image: public.ecr.aws/l6m2t8p7/docker-2048:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: service-2048 namespace: default spec: ports: - port: 80 targetPort: 80 protocol: TCP type: NodePort selector: app: game-2048 EOF # 파일 생성 후 즉시 배포 kubectl apply -f game-2048.yaml 19 cat < 삭제 kubectl delete ingress test-alb kubectl delete -f game-2048.yaml helm uninstall aws-load-balancer-controller -n kube-system eksctl delete iamserviceaccount \ --cluster=${CLUSTER_NAME} \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --region ${AWS_REGION} aws iam delete-policy --policy-arn ${POLICY_ARN} eksctl delete cluster --name ${CLUSTER_NAME} --region ${AWS_REGION}