我有一個在本地minikube集群上運行的最小Web應用程式。
后臺在/be/test/hi暴露了一個API,服務名稱也是be。
當我從前端向后端發送一個GET請求時,我得到了:
main. js:15 GET http: //be/be/test/hi net::ERR_NAME_NOT_RESOLVED
如果我從前端POD運行nslookup be,我得到正確的dns決議,而運行
curl be/be/test/hi我從后端得到正確的回應(一個簡單的'Hello world'字串)
我錯過了什么?
backend.yaml
apiVersion: v1
kind: Service
metadata: 服務
名稱: BE
規格:
ports:
- port: 80
targetPort: 8080
選擇器:
應用程式: be
型別: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata: Deployment
名稱: BE
規格:
replicas: 1
選擇器:
matchLabels:/span>
應用程式: be
template:
metadata: 元資料:
標簽:/span>
app: be
spec:
容器:
- name:/span> be
圖片: kubebe
imagePullPolicy: never
埠:
- containerPort:/span> 8080
frontend.yaml
apiVersion: v1
kind: Service
metadata: 服務
名稱: fe
規格:
ports:
- port: 80
targetPort: 8080
選擇器:
應用程式: fe
型別: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata: Deployment
名稱: frontend
規格:
replicas: 1
選擇器:
matchLabels:/span>
應用程式: fe
template:
metadata: metadata:
標簽:/span>
應用程式: fe
spec:
容器:
- name:/span> fe
圖片: kubefe
imagePullPolicy: Never
埠:
- containerPort:/span> 8080
main.js
const URL="http://be/be/test/hi"/span>
function httpGetAsync(){
var xmlHttp = new XMLHttpRequest()。
xmlHttp.onreadystatechange = function(/span>) {
if (xmlHttp.status == 4 && xmlHttp.status ==200)
console.log(xmlHttp.responseText)。
}
xmlHttp.open("GET", URL, true) 。
xmlHttp.send(null)。
前臺Docker檔案(kubefe影像):
FROM centos/httpd-24-centos7: 2。 4
RUN mkdir p /var/www/html/fe
COPY ./index.html ./main。 js /var/www/html/fe/。
編輯:我已經解決了我的問題,但我認為實際問題仍然沒有得到解決。
為了解決這個問題,我簡單地把協議和主機從我的url中洗掉,并在/etc/httpd/conf.d/default-site.conf中設定代理規則
default-site.conf
<VirtualHost *:8080>
代理人保留主機關閉
代理請求關閉
ProxyPass /be/ http://be/
</VirtualHost>
uj5u.com熱心網友回復:
你的前端代碼(javascript)是在瀏覽器中執行的,而不是在kubernetes集群(nginx pod)中執行的
你在這里有3個選擇,
你有3個選擇。
你有3個選擇,
你有3個選擇,
你有3個選擇,
你有3個選擇
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/309782.html
標籤:
