본문 바로가기
DevOps/Kubernetes

[EKS] EKS 애플리케이션 배포 실습

by Yoon_estar 2025. 2. 13.
728x90

Pod 배포 Test , 결과 확인

$ kubectl create  deployment webtest --image=nginx:1.14 --port=80  --replicas=5
$ kubectl get pods -o wide
NAME                       READY   STATUS    RESTARTS   AGE   IP               NODE                                                NOMINATED NODE   READINESS GATES
webtest-6d754887d7-csmw6   1/1     Running   0          21m   192.168.56.115   ip-192-168-61-103.ap-northeast-2.compute.internal   <none>           <none>
webtest-6d754887d7-fvtzl   1/1     Running   0          21m   192.168.46.54    ip-192-168-61-103.ap-northeast-2.compute.internal   <none>           <none>
webtest-6d754887d7-mmthr   1/1     Running   0          21m   192.168.6.163    ip-192-168-3-5.ap-northeast-2.compute.internal      <none>           <none>
webtest-6d754887d7-r7drr   1/1     Running   0          21m   192.168.9.168    ip-192-168-12-26.ap-northeast-2.compute.internal    <none>           <none>
webtest-6d754887d7-wtspq   1/1     Running   0          21m   192.168.13.0     ip-192-168-3-5.ap-northeast-2.compute.internal      <none>           <none>

 

nginx 웹 서버에 클라이언트 접속 가능하도록 구성하고 간단히 TEST

kubectl expose deployment  webtest --port=80 --type=ClusterIP
kubectl expose deployment  webtest --port=80 --type=LoadBalancer
kubectl get services

 

서비스 정보 확인

$ kubectl get svc
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP                                                                    PORT(S)        AGE
kubernetes   ClusterIP      10.100.0.1       <none>                                                                         443/TCP        129m
webtest      LoadBalancer   10.100.153.133   a8e8....77.ap-northeast-2.elb.amazonaws.com   80:31491/TCP   17m

web 페이지 확인

 

서비스 정보 변경하기

  • 현재 34번째 줄 NodePort 확인
$ kubectl edit svc webtest

  1 # Please edit the object below. Lines beginning with a '#' will be ignored,
  2 # and an empty file will abort the edit. If an error occurs while saving this file will be
  3 # reopened with the relevant failures.
  4 #
  5 apiVersion: v1
  6 kind: Service
  7 metadata:
  8   creationTimestamp: "2025-01-29T02:18:36Z"
  9   finalizers:
 10   - service.kubernetes.io/load-balancer-cleanup
 11   labels:
 12     app: webtest
 13   name: webtest
 14   namespace: default
 15   resourceVersion: "23734"
 16   uid: 8e864475-e69d-4376-9211-396fa355b3e5
 17 spec:
 18   clusterIP: 10.100.153.133
 19   clusterIPs:
 20   - 10.100.153.133
 21   externalTrafficPolicy: Cluster
 22   internalTrafficPolicy: Cluster
 23   ipFamilies:
 24   - IPv4
 25   ipFamilyPolicy: SingleStack
 26   ports:
 27   - nodePort: 31491
 28     port: 80
 29     protocol: TCP
 30     targetPort: 80
 31   selector:
 32     app: webtest
 33   sessionAffinity: None
 34   type: NodePort
 35 status:
 36   loadBalancer: {}

 

  • 서비스 정보 확인
$ kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.100.0.1       <none>        443/TCP        138m
webtest      NodePort    10.100.153.133   <none>        80:31491/TCP   25m

 

  • 34번째 줄 LoadBalancer 로 변경
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2025-01-29T02:18:36Z"
  labels:
    app: webtest
  name: webtest
  namespace: default
  resourceVersion: "23798"
  uid: 8e864475-e69d-4376-9211-396fa355b3e5
spec:
  clusterIP: 10.100.153.133
  clusterIPs:
  - 10.100.153.133
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - nodePort: 31491
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: webtest
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

 

  • 적용 확인 (LoadBalancer Type으로 변경 확인)
$ kubectl get svc
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP                                                                   PORT(S)        AGE
kubernetes   ClusterIP      10.100.0.1       <none>                                                                        443/TCP        139m
webtest      LoadBalancer   10.100.153.133   a8e864...07743.ap-northeast-2.elb.amazonaws.com   80:31491/TCP   26m

 

로드 밸런서 타입으로 변경하면 AWS 에서 직접 EC2의 로드 밸런서 설정을 하지 않아도 로드 밸런싱이 가능하다.

 

리소스 삭제

  • 삭제
$ kubectl delete deployments.apps webtest
deployment.apps "webtest" deleted

$ kubectl delete svc webtest
service "webtest" deleted
  • 확인
$ kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   143m

$ kubectl get pods -o wide
No resources found in default namespace.

 

EKS 추가 기능 (Add-on) 설치

default로 CoreDNS, kube-proxy, Amazon VPC CNI가 설치가 되어있다. 

추가 기능 추가

Amazon EFS CSI 드라이버, Amazon EBS CSI 드라이버 설치

 

IAM addon 역할 추가
IAM addon 역할 추가