[Kubernetes] EKS 환경 구성 후 NginX 배포해 보기

2025. 1. 14. 00:37카테고리 없음

 

Kubernetes란? 

1. 컨테이너 오케스트레이션 톨

2. 컨테이너를 쉽고 빠르게 배포 / 확장하고 관리를 자동화해주는 오픈 소스 

3.  Docker가 컨테이너 기반의 가상화를 실현한 플랫폼이라면 Docker Container를 관리하는 것이 Kubernetes이다. 

 

 

쿠버네티스 클러스터 아키텍처 

1. 여러 대의 서버가 하나의 클러스터로 연결

2. 쿠버네티스 마스터 = 컨트롤 플레인이 실행됨. 클러스터의 두뇌. 컨테이너 스케줄링, 서비스 관리, API 요청 수행 (파드,리소스 컨트롤러, 로드밸런서 관리)

3. 쿠버네티스 워커노드(Virtual machine) = 사용자의 워크로드 실행 

마스터의 관리 아래 실제 pod같은 리소스가 생성되는 노드 

4. kubectl : 쿠버네티스를 다루기 위한 명령행 도구 

 

Kubernetes Object

나는 Ningx pod를 띄우고 Load Balancer type으로 서비스를 배포하려고 한다. 

1. 쿠버네티스는 상태를 관리하기 위한 대상을 오브젝트로 정의 

2. pod - 쿠버네티스의 가장 작은 배포 단위. 컨테이너의 모임. 하나 이상의 컨테이너로 구성 

3. Deployment - application 배포의 기본 단위가 되는 리소스 

4. Service - 내부망에 있는 pod를 외부에 노출시켜주는 로드밸런서 

5. 위의 object들은 yaml 파일로 정의하여 kubectl 명령어로 반영한다. 

 

- WorderNode는 EKS의 NodeGroup. (하나의 컴퓨터라고 생각하면 된다.)

- 컨테이너 (web application 등을 담은) Pod는 Deployment에 의해 관리된다. 

- Deployment에서 몇개의 파드가 얼마만큼의 자원을 사용할지, 어떤 방식으로 배포할지 정의한다. 

- Pod는 각각의 workerNode에 배포되고, 서비스를 통해 외부에 노출된다.

 

그렇다면 배운 내용을 기반으로 Nginx 서비스를 배포하려면 어떻게 해야할까?

1. Deployment를 정의하여 Nginx 컨테이너를 담은 pod를 띄운다. 

2. pod를 LoadBalancer Type의 Service를 통해 배포한다.

3. 자동 생성된 ELB를 통해 Nginx가 배포된 것을 확인한다.

* ELB : AWS에서 제공하는 Elastic Road Balancer

 

Deployment.yaml 배포 

참조 : https://kubernetes.io/ko/docs/concepts/workloads/controllers/deployment/#%EB%94%94%ED%94%8C%EB%A1%9C%EC%9D%B4%EB%A8%BC%ED%8A%B84%8C%EB%A1%9C%EC%9D%B4%EB%A8%BC%ED%8A%B8--%EC%8A%A4%EC%BC%80%EC%9D%BC%EB%A7%81

 

Nginx service 배포 

 

 

EIB 생성 결과