Câu trả lời được đưa ra ở trên bởi @Manikanta P là đúng. Tuy nhiên, giải thích về "Port" có thể hơi không rõ ràng khi đọc lần đầu. Tôi sẽ giải thích bằng một ví dụ:
Hãy xem xét một Ứng dụng web có nội dung tĩnh (trang đầu, hình ảnh, v.v.) được lưu trữ bởi httpd và nội dung động (ví dụ: phản hồi với yêu cầu, v.v.) được lưu trữ bởi tomcat. Máy chủ web (hoặc nội dung tĩnh) được cung cấp bởi httpd tại cổng 80
trong khi Máy chủ ứng dụng (hoặc nội dung động) được phục vụ bởi tomcat tại cổng 8080
.
Những gì nhà phát triển muốn: Người dùng có thể truy cập Máy chủ web từ bên ngoài NHƯNG không phải Máy chủ ứng dụng từ bên ngoài.
Giải pháp: Loại dịch vụ của Webserver trong service.yml của nó sẽ là NodePort trong khi loại dịch vụ của Appserver trong service.yml của nó sẽ là ClusterIP.
Mã cho service.yml của máy chủ web:
spec:
selector:
app: Webserver
type: NodePort // written to make this service accessible from outside.
ports:
- nodePort: 30475 // To access from outside, type <host_IP>:30475 in browser.
port: 5050 // (ignore for now, I will explain below).
protocol: TCP
targetPort: 80 // port where httpd runs inside the webserver pod.
Mã cho service.yml của Appserver
spec:
selector:
app: appserver
type: ClusterIP // written to make this service NOT accessible from outside.
ports:
- port: 5050 // port to access this container internally
protocol: TCP
targetPort: 8080 // port where tomcat runs inside the appserver pod.
Cũng xin lưu ý, trong httpd.conf
tệp của Máy chủ web, chúng tôi sẽ ghi IP chuyển hướng yêu cầu của người dùng đến máy chủ ứng dụng. IP này sẽ là: host_IP:5050
.
Chính xác thì điều gì đang xảy ra ở đây? Một người dùng viết hostIP:30475
và xem trang của Máy chủ web. Điều này là do nó đang được phục vụ bởi httpd tại cổng 80
(targetport). Khi người dùng nhấp vào một nút, một yêu cầu sẽ được thực hiện. Yêu cầu này được chuyển hướng đến Appserver vì trong httpd.conf
tệp, cổng 5050
được đề cập và đây là cổng nơi vùng chứa của Appserver và bộ giải mã của Webserver giao tiếp nội bộ. Khi máy chủ ứng dụng nhận được yêu cầu, nó có thể phục vụ yêu cầu vì tomcat đang chạy bên trong nó tại cổng 8080
.