반응형
쿠버네티스
- 컨테이너 환경에서 컨테이너 관리를 도와주는 도구 -
환경 구성
Docker Desktop
- 간단한 환경 구성을 위해 Docker Desktop 사용
- 버전 정보
Kubernetes Enable
- [Docker Desktop] -> [톱니바퀴] -> [Kubernetes] 메뉴 -> Enable Kubernetes 체크 후 Apply & restart
- CLI로 확인
Docker Image Build
- 사용하고 있는 Application 도커 정보가 있다면 Deployment 항목으로 이동한다
Application
- 예제 소스의 /deployment 폴더로 이동
- Build 명령어
docker build -t [이미지 이름]:[태그 이름] .
이미지 확인
Deployment
특징
- 애플리케이션 배포 및 관리
- Pod에 대한 복제본을 관리하고
- Pod에 대한 자동 복구 기능
Pod와의 차이점
- Pod는 단일 배포 단위
- 애플리케이션에 대한 부하 분산을 위해 여러 대의 같은 Pod가 필요할 경우 단일 Pod는 관리하기 복잡하다
- 단일 Pod의 경우 에러가 나거나 실패할 경우 자동 복구 기능이 없다
생성 방법
- Build 된 Docker Image를 사용하여 배포한다
- Deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: ironjin92/my-app:v1
ports:
- containerPort: 8000
Deployment 배포
- Deployment.yml 파일이 존재하는 경로에서 다음의 명령어를 입력하여 배포한다
kubectl apply -f deployment.yml
배포 확인
Pod로 어떻게 접속할까?
- 배포 된 Pod는 Kubernetes 내에서 관리된다.
- 해당 Pod에 접근하지 못 하는 것은 아니지만, 우리가 일반적으로 알고 있는 Web Service 방식으로 접근하고 싶다
- 예를 들면, 우리는 8000 포트를 사용하는 WAS 서버 앞에 80 포트를 사용하는 Web 서버를 두고 통신한다
- 우리는 지금 Pod로 WAS 서버를 배포한 것이고, WAS 서버가 쿠버네티스 외부와 통신하기 위한 Web 서버가 필요한 것이다
- 외부로 통신하기 위해 다음의 Service를 알아보도록 하겠다.
Service란?
특징
- 동적으로 IP가 생성되는 Pod에 대해 안정적으로 네트워크를 관리할 수 있는 추상화 계층
- 클라이언트가 동적으로 변경되는 Pod의 IP에 대해 신경쓰지 않게 해준다
- 로드 밸런싱 기능과 서비스 디스커버리 기능을 제공
종류
- ClusterIP
- NodePort
- Ingress / IngressController
NodePort
- 서비스의 종류는 다양하지만, 우리가 지금 하고 싶은것은 배포한 Pod에 '접속'하고 싶다는 것이다
- 따라서 YAML 파일 이런거 작성 없이 그냥 간단히 명령어 한 줄로 외부와 통신할 수 있는 port-foraward를 사용하도록 하겠다
- 명령어
kubectl port-forward deployment/my-app 8000:8000
Service 확인
외부 접속 확인
반응형
LIST
'쿠버네티스 > 실습' 카테고리의 다른 글
[Kubernetes] Secret 생성 (0) | 2024.03.14 |
---|