• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

쿠버네티스 공식 튜토리얼을 보다가 궁금한점이 생겼는데요.

20.04.25 02:53 작성 조회수 228

1

안녕하세요.

강의를 진행하기에 앞서, 공식페이지 튜토리얼과 기본사용법을 둘러보던 중 궁금한점이 생겼는데

질문드릴 수 있는분이 선생님뿐이라 질문을 드리게 되었습니다.

제가 궁금한 부분의 예제는 https://kubernetes.io/ko/docs/tutorials/stateless-application/guestbook/ 인데요.

Redis를 master, slave로 구성하고 있는 예제입니다.

제 생각에는 slave.yml파일을 구성할때, Redis-master정보를 slave에 알려줘야 같은 데이터를 공유할 것 같은데요.
yml파일에서는 env에 GET_HOSTS_FROM=env 값 외에는 별다른 정보가 보이지 않는것같아요..
(어플리케이션에서 CUD는 master, R(read)은 slave에 요청한다는 것은 이해했지만 master가 처리한 데이터를 slave가 어떻게 공유받아 데이터를 조회하는것인지에 대한 설정이요..)

image를 만들때 master-slave구성이 되도록 만들었을까요..? 아니면 GET_HOSTS_FROM=env 인것일까요...? Redis가 메모리DB라서 그런것인지,, 쿠버네티스가 알아서 해주는것인지 다양한 가능성이 자꾸 떠오르는데,, 혹시 알고계신정보가 있으시다면 알려주시면 너무 감사하겠습니다.

답변 2

·

답변을 작성해보세요.

1

seolnavy님의 프로필

seolnavy

질문자

20.04.25 11:06

궁금증이 풀렸습니다 너무 감사합니다

즐거운 주말되셔요!!

1

일프로님의 프로필

일프로

지식공유자

20.04.25 07:34

안녕하세요. 

GET_HOSTS_FROM 를 dns로 하게되면 Redis에서는 기본적으로 master이 경우  redis-slave 도메인 이름으로 Kubernetes DNS를 통해서 Slave를 찾습니다. 반대로 Slave에서는 Master을 redis-master 도메인 이름으로 찾고요. Port도 기본 6379/TCP를 사용합니다. 

설치 과정중에 Service를 Master/Slave Pod에 연결하는 내용도 있는데,

redis-master라는 이름으로 서비스를 만들면 이 이름으로 Kubernetes DNS에 등록이 되고, 서비스는 Pod에 연결이 되어 있기 때문에, Slave에서는 redis-master라는 도메인 이름으로  Master에 접근을 할 수가 있어요.

근데 Master를 IP로 지정하고 싶고 Port도 바꾸고 싶으면 Salve에서는 

GET_HOSTS_FROM=env로 설정하고 추가적으로 아래 환경변수를 추가하게되면 Slave에서는 기동시 환경변수를 이용해서 Master를 찾게되요.

REDIS_MASTER_SERVICE_HOST=10.0.0.11
REDIS_MASTER_SERVICE_PORT=6379

아래 내용을 참고하시면 좋고요. 

https://kubernetes.io/docs/concepts/services-networking/service/#discovering-services

저도 직접 설치해본건 아니지만 이론적으로 이렇게 될껍니다^^;

관련 내용은 중급편에 Service를 보시면 되시고요.

즐거운 주말 보내세요!