k8s 추가질문
558
작성한 질문수 8
https://www.inflearn.com/questions/670959
해당 글의 추가 질문 드립니다.
우선 local과 docker에서는 정상 작동하는 것을 확인했습니다.
혹시 apigateway에 - Path=/customer-svc/customers
이런식으로 경로가 설정되어 있다면 각 각의 서비스들이 다른 pod에 배포되어 있을 경우
정상적으로 경로를 찾아 갈 수 있는 건가요??
각 pod 들에는 ClusterIP로 서비스를 연결해 준 상태입니다.
자세히 말하자면
강의에서 docker 배포 목적으로 spring cloud apigateway를 이미지로 만들었던 것을
yaml을 이용하여 쿠버네티스(192.168.1.10)에 배포하였고 이를 nodeport(30502)로 노출 시켰습니다.
그리고 각 각의 서비스들도 마찬가지로 yaml로 배포하였고
ClusterIp로 노출시켜놨습니다.
이렇게 되면 192.168.1.10:30502/customer-svc/customers로 계정 생성 서비스(POST)가 정상적으로 동작하나요??
아니면 단지 apigateway를 이미지 형태로 배포한 것으로 독립된 pod에 있는 customer-svc를 찾아가는 것이 안 되는 건가요..? 그렇기 때문에 500에러가 발생하고요.
apigateway POD의 에러 메세지는 다음과 같습니다
빨간 박스 내용
2022-10-19 19:22:35.106 INFO 1 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration
2022-10-19 19:27:35.106 INFO 1 --- [trap-executor-0] c.n.d.s.r.aws.ConfigClusterResolver : Resolving eureka endpoints via configuration
2022-10-19 19:29:55.347 INFO 1 --- [or-http-epoll-1] c.p.a.filter.GlobalFilter : Global Filter baseMessage: Spring Cloud Gateway Global Filter
2022-10-19 19:29:55.348 INFO 1 --- [or-http-epoll-1] c.p.a.filter.GlobalFilter : Global Filter Start: request id -> f6eabebe-14
2022-10-19 19:29:59.358 ERROR 1 --- [or-http-epoll-2] a.w.r.e.AbstractErrorWebExceptionHandler : [f6eabebe-14] 500 Server Error for HTTP POST "/customer-svc/customers"
java.net.UnknownHostException: Failed to resolve 'customer-deployment-5bf5fbc484-wxmlh' after 2 queries
at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1047) ~[netty-resolver-dns-4.1.82.Final.jar!/:4.1.82.Final]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ org.springframework.boot.actuate.web.trace.reactive.HttpTraceWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
*__checkpoint ⇢ HTTP POST "/customer-svc/customers" [ExceptionHandlingWebHandler]해당 내용으로 봤을 때, 쿼리가 간다는 것은 통신은 정상적으로 이루어지는 것 같은데 어떤 문제가 있을까요??
답변 1
0
안녕하세요, 이도원입니다.
K8s에서는 컨테이너화 된 결과물을 POD 형태로 배포하게 됩니다. 작업하신 내용에서는 K8s의 deployment를 이용하여 POD를 배포하신 것 같습니다. 이때 할당되는 이름은 올려주신 내용처럼 'customer-deployment-5bf5fbc484-wxmlh' 와은 형태로 되어 있을 겁니다. apigateway-service에서는 Path를 /customer-svc/customers 이와 같이 설정하였기 때문에, 'customer-deployment-5bf5fbc484-wxmlh' POD와 /customer-svc/customers 로 연결하지 못하기 때문에, UnknownHostException 오류가 발생하는 것 같습니다. K8s에서 deployment를 등록하시고, K8s의 서비스를 등록하실 때, 어떤 매핑정보로 등록하셨는지 확인해 보셔야 할 것 같습니다.
추가로, K8s로 배포하실 경우에는 apigateway-service및 service-discvoery의 역할을 Spring Cloud로 구현하는 것 보다는 자체 리소스(오브젝트)인 ingress, service와 함께 Istio와 같은 Service mesh를 활용하여 구성하는 것이 더 좋습니다.

https://dzone.com/articles/deploying-microservices-spring-cloud-vs-kubernetes
Spring Cloud로 개발하는 MSA 강의는 기본적인 Spring Cloud의 내용과 Docker만을 이용해서 서비스를 개발하고 배포하는 부분만 다루고 있습니다. 추후 강의가 업데이트 되는 시점에는 K8s로 배포하는 부분도 추가해 보도록 하겠습니다.
감사합니다.
kafka 업데이트 강의 듣고 시포요
0
115
2
강의 교안
0
106
2
마이크로서비스간 통신 시, 인증 처리
0
116
2
api gateway 에서 인증 처리
0
76
1
섹션 19 질문드립니다
0
85
2
강의 자료 업데이트
0
105
2
부하분산 강의 섹션
0
66
1
강의자료는 어디에서?
0
99
2
강의 자료는 어디서 다운 받을 수 있나요?
0
131
2
전체 사용자 조회시 오류
0
65
1
혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??
0
120
2
학습 방향
0
105
2
카프카 커넥터 사용 목적 문의
0
92
2
kafka 강의
0
118
2
서비스 디스커버리 종류
0
90
2
강의 자료에 대해서 궁금해요
0
126
2
GlobalFilter, LoggingFilter가 동작하지 않습니다.
0
96
2
Kafka Source Connect 버전 에러
0
95
2
소스커넥터는 사용안한 거 맞죠?
0
85
2
강의자료 업데이트 문의
0
99
2
강의에서 BCryptPasswordEncoder 에 역할(5-2)
0
64
1
강의 업데이트 계획이 궁금합니다.
0
121
2
MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)
0
168
2
어떤 것이 업데이트 된 건가요?
0
169
2





