Kubernetes: 동일한 포트에서 실행되는 마이크로 서비스?
나는 (지금까지) 마이크로서비스 풀스택 웹 애플리케이션을 구축하고 있다.
ReactJS(클라이언트 마이크로서비스) : 3000으로 수신
인증(Auth microservice) : 3000// 동일한 포트가 잘못 할당되어 수신 대기
엄밀히 말하면, 내가 지금까지 들은/배운 것은 우리 두 포드가 에서 작동한다는 것이다. 나는 정말 혼란스럽다.
ingress-nginx 구성:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
## our custom routing rules
rules:
- host: ticketing.dev
http:
paths:
- path: /api/users/?(.*)
backend:
serviceName: auth-srv
servicePort: 3000
- path: /?(.*)
backend:
serviceName: client-srv
servicePort: 3000
정말 궁금한데, 내가 여기서 뭔가 빠뜨린 게 있나요?
백엔드에는 auth-srv와 client-srv라는 두 가지 다른 서비스가 있습니다. 따라서 두 개의 서로 다른 주소를 가진 다음 각 주소에서 원하는 포트를 사용할 수 있습니다. 즉, 두 개의 서로 다른 서비스에서 동일한 포트를 사용할 수 있습니다.
각 포드에는 고유한 네트워크 네임스페이스와 고유한 IP 주소가 있지만, 포드별 IP 주소는 클러스터 외부에서 연결할 수 없고 클러스터 내부에서 실제로 검색할 수 없습니다. 각 포드에는 고유한 IP 주소가 있기 때문에 모두가 동일한 포트를 수신하는 데 필요한 만큼의 포드를 가질 수 있습니다.
각 서비스에는 고유한 IP 주소도 있습니다. 다시 말해, 애플리케이션이 찾을 수 있도록 DNS 이름을 가지고 있지만 클러스터 외부에서 연결할 수 없습니다. 각 서비스에는 고유한 IP 주소가 있기 때문에 모두가 동일한 포트를 수신하는 데 필요한 만큼의 서비스를 사용할 수 있습니다. 서비스 포트는 포드 포트와 같거나 다를 수 있습니다.
수신 컨트롤러는 HTTP를 통해 클러스터 외부에서 연결할 수 있습니다. 표시된 입력 사양은 HTTP 라우팅 규칙을 정의합니다. TLD를 사용하여 DNS 서비스를 설정하고 입력 컨트롤러에서 해당 지점에 대한 A 레코드를 정의하면 클러스터 내에서 에 전달되고 로 이동합니다. 그들은 그들이 연결된 포드로 전송될 것이다.
여러 포드 또는 서비스가 동일한 포트를 갖는 것에 대한 특별한 금지 사항은 없습니다. 개별 포드가 포트 3000, 8000, 8080 등에서 수신하더라도 표준 HTTP 포트이기 때문에 모든 HTTP 서비스를 포트 80에서 수신하도록 설정하는 것을 좋아하는 경향이 있습니다.
'개발하자' 카테고리의 다른 글
Flowter 디버거가 중단점에서 중지되지 않음 (0) | 2022.11.27 |
---|---|
pipenv에는 python 3.7이 필요하지만 설치된 버전은 3.8이며 설치되지 않습니다. (0) | 2022.11.26 |
파이썬 스크립트가 있는 Kubernetes Pod가 메모리를 너무 많이 사용함 (0) | 2022.11.25 |
반복기 변수 없이 범위 루프용 파이썬을 구현할 수 있습니까? (0) | 2022.11.25 |
DNS가 Kubernetes에서 NGINX로 확인되지 않음 (0) | 2022.11.24 |