kubernetes 서비스 정의에서 targetPort와 포트의 차이점
Kubernetes Service는 서비스 정의에 targetPortand port를 가질 수 있습니다 .
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
port과 의 차이점은 무엇입니까 targetPort?
서비스 : 트래픽을 포드로 보냅니다.
TargetPort : 컨테이너 내에서 애플리케이션이 실행되는 실제 포트입니다.
포트 : 컨테이너 내부의 애플리케이션이 다른 포트에서 다른 서비스를 제공하는 경우가 있습니다. 예 :-실제 애플리케이션은 8080을 실행할 수 있으며이 애플리케이션에 대한 상태 검사는 컨테이너의 8089 포트에서 실행할 수 있습니다. 따라서 포트없이 서비스를 실행하면 컨테이너의 어느 포트로 요청을 리디렉션해야하는지 알 수 없습니다. 서비스는 컨테이너의 특정 포트에 도달 할 수 있도록 매핑이 있어야합니다.
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- name: http
nodePort: 30475
port: 8089
protocol: TCP
targetPort: 8080
- name: metrics
nodePort: 31261
port: 5555
protocol: TCP
targetPort: 5555
- name: health
nodePort: 30013
port: 8443
protocol: TCP
targetPort: 8085
my-service : 8089에 도달하면 트래픽이 컨테이너 (targetPort)의 8080으로 라우팅됩니다. 마찬가지로 my-service : 8443을 누르면 container (targetPort)의 8085로 리디렉션됩니다.
그러나이 myservice : 8089는 kubernetes 클러스터 내부에 있으며 한 애플리케이션이 다른 애플리케이션과 통신하려고 할 때 사용할 수 있습니다. 따라서 클러스터 외부에서 서비스를 사용하려면 트래픽이 컨테이너의 포트로 리디렉션되도록 kubernetes가 실행중인 호스트 머신의 포트를 노출해야합니다. 거기에서 nodePort를 사용할 수 있습니다.
위의 예에서 host_ip : Nodeport를 통해 클러스터 외부 (Postman 또는 모든 restclient)에서 서비스를 적중 할 수 있습니다.
호스트 머신 IP가 10.10.20.20이라고 가정하면 http, metrics, health 서비스를 10.10.20.20:30475,10.10.20.20:31261,10.10.20.20:30013까지 조회 할 수 있습니다.
편집 : Raedwald 의견에 따라 편집되었습니다 .
'IT TIP' 카테고리의 다른 글
| Xcode가 다시 시작될 때마다 잘못 배치 된 뷰 (0) | 2020.11.28 |
|---|---|
| 제어 문자의 Socket.IO 문제 (0) | 2020.11.28 |
| Mercurial에서 공유 종속성이있는 프로젝트를 구성하는 좋은 방법은 무엇입니까? (0) | 2020.11.28 |
| 데이터 저장소에서 많은 수의 ndb 항목을 쿼리하는 모범 사례 (0) | 2020.11.28 |
| Google에서 특수 문자를 찾고 (0) | 2020.11.28 |