본문 바로가기
도커&쿠버네티스

[katakoda] Deploy Guestbook Web App Example

by bzerome240 2022. 3. 22.

이 시나리오에서는 Kubernetes 및 Docker를 사용하여 간단한 다중 계층 웹 애플리케이션을 시작하는 방법을 설명합니다. 

방명록 예제 애플리케이션은 JavaScript API 호출을 통해 Redis에 게스트의 메모를 저장합니다. 

Redis는 마스터(저장용)와 레플리카의 redis '슬레이브' 세트를 포함합니다.

 

 

핵심 개념

  • Pods
  • Replication Controllers
  • Services
  • NodePorts

 

1 쿠버네티스 시작하기

 

helper 스크립트를 사용하여 단일 노드 클러스터를 시작한다.

API, 마스터, 프록시 및 DNS 검색을 시작한다. 웹앱은 DNS 검색을 사용하여 데이터를 저장할 Redis 슬레이브를 찾는다.

 

 

2 Redis 마스터 컨트롤러

 

애플리케이션 시작은 Redis 마스터를 시작하는 것이다.

쿠버네티스 서비스 디플로이먼트는 레플리케이션 컨트롤러와 서비스 두가지가 있다.

 

레플리케이션 컨트롤러는 실행해야 하는 인스턴스 수, 사용할 도커 이미지 및 서비스를 식별하는 이름을 정의한다.

 

Redis가 다운되면 레플리케이션 컨트롤러가 활성화된 노드에서 다시 시작한다.

 

 

포트 6379를 실행하는 공식 Redis를 사용하여 redis-master 라는 redis 서버 정의하는 YAML

 

kubectl create 명령어는 YAML 정의를 사용하여 마스터에 컨트롤러를 시작하도록 지시한다.

레플리케이션 컨트롤러를 생성한다.

kubectl create -f redis-master-controller.yaml

 

레플리케이션 컨트롤러 확인하기

kubectl get rc

 

모든 컨테이너는 pod를 묘사한다.

pod는 컨테이너의 집합이다.

kubectl get pods

 

 

3 Redis 마스터 서비스

 

쿠버네티스 서비스는 하나 이상의 컨테이너로 트래픽을 프록시하는 명명된 로드 밸런서이다.

컨테이너가 다른 노드에 있는 경우에도 프록시가 작동한다.

 

서비스 프록시는 클러스터 내에서 통신하며 포트를 외부 인터페이스에 거의 노출하지 않는다.

 

서비스를 시작할때 curl 또는 netcat을 사용하여 연결할 수 없다.

외부 통신을 처리하기 위해 LoadBalancer 서비스를 이용할 수 있다.

 

레플리케이션 컨트롤러와 프록시 되어야 하는 포트 정의하는 YAML

kubectl create -f redis-master-service.yaml

 

kubectl get services

 

kubectl describe services redis-master

 

 

 

 

 

728x90
반응형

댓글