該應用程式由 3 個組件組成:前端、后端和 Redis。前端只和后端通信,Redis 服務只和后端服務通信。所有 Pod 都運行正常,至少日志沒有顯示任何令人不安的內容。
后端使用 NodeJS/ExpressJS 構建,前端使用 React。
服務的配置方式如下:
frontend:
apiVersion: v1
kind: Service
metadata:
name: plg-frontend
labels:
name: plg-frontend-service
app: playground-app
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30010
protocol: TCP
selector:
name: plg-frontend-pod
app: playground-app
backend:
apiVersion: v1
kind: Service
metadata:
name: plg-backend
labels:
name: plg-backend-service
app: playground-app
spec:
ports:
- port: 4000
targetPort: 5011
selector:
name: plg-backend-pod
app: playground-app
所有服務都正常運行:
kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
plg-backend ClusterIP 10.233.23.12 <none> 4000/TCP 2d3h
plg-frontend NodePort 10.233.63.20 <none> 80:30010/TCP 2d3h
redis ClusterIP 10.233.59.37 <none> 6379/TCP 2d3h
目前,在主機的 IP 上運行的前端,假設http://10.11.12.13:30010,嘗試呼叫后端的內部端點,因此 10.233.23.12:5011 (后端的targetPort)。連接超時。我應該公開后端服務以NodePort使其可訪問嗎?
uj5u.com熱心網友回復:
除非您打算讓后端服務可在主機網路上訪問,否則無需使用 NodePort 進行公開。您的前端應該呼叫 10.233.23.12: 4000,而不是 5011 ,后者是正在偵聽的支持 Pod。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/370060.html
標籤:节点.js 表达 Kubernetes
