![](/img/trans.png)
[英]Getting error net::ERR_NAME_NOT_RESOLVED while axios get/post request in my react project
[英]Kubernetes(minikube) + React Frontend + .netcore api + Cluster IP service + ingress + net::ERR_NAME_NOT_RESOLVED
從 React JS 前端調用時,無法解析在 Minikube 上托管為 ClusterIP 服務的 API。
我的應用的基本架構如下 React --> .NET core API
這兩個組件都作為 ClusterIP 服務托管。 我創建了一個入口服務,其中 http 路徑指向 React 組件和 .NET 核心 API。
但是,當我嘗試從瀏覽器調用它時,反應應用程序會呈現,但是對 API 的調用失敗並出現 net::ERR_NAME_NOT_RESOLVED
下面是 .yml 文件
apiVersion: v1
kind: Service
metadata:
name: frontend-clusterip
spec:
type: ClusterIP
ports:
- port: 59000
targetPort: 3000
selector:
app: frontend
apiVersion: v1
kind: Service
metadata:
name: backend-svc-nodeport
spec:
type: ClusterIP
selector:
app: backend-svc
ports:
- port: 5901
targetPort: 59001
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /?(.*)
backend:
serviceName: frontend-clusterip
servicePort: 59000
- path: /api/?(.*)
backend:
serviceName: backend-svc-nodeport
servicePort: 5901
apiVersion: apps/v1
kind: Deployment
metadata:
name: frontend
spec:
selector:
matchLabels:
app: frontend
replicas: 1
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: frontend
image: upendra409/tasks_tasks.frontend
ports:
- containerPort: 3000
env:
- name: "REACT_APP_ENVIRONMENT"
value: "Kubernetes"
- name: "REACT_APP_BACKEND"
value: "http://backend-svc-nodeport"
- name: "REACT_APP_BACKENDPORT"
value: "5901"
這是我在瀏覽器中遇到的錯誤:
xhr.js:166 GET
http://backend-svc-nodeport:5901/api/tasks net::ERR_NAME_NOT_RESOLVED
我在前端容器中安裝了 curl 以進入前端 pod 以嘗試使用上述 URL 連接后端 API,但該命令不起作用
C:\test\tasks [develop ≡ +1 ~6 -0 !]> kubectl exec -it frontend-655776bc6d-nlj7z --curl http://backend-svc-nodeport:5901/api/tasks
Error: unknown flag: --curl
您從本地計算機收到此錯誤,因為ClusterIP
服務類型錯誤,無法從集群外部訪問。 如 kubernetes 文檔中所述, ClusterIP
只能從集群內部訪問。
發布服務(ServiceTypes)
對於您的應用程序的某些部分(例如,前端),您可能希望將服務公開到外部 IP 地址,該地址位於您的集群之外。
Kubernetes
ServiceTypes
允許您指定所需的服務類型。 默認值為ClusterIP
。
Type
值及其行為是:
ClusterIP
:在集群內部 IP 上公開服務。 選擇此值使服務只能從集群內訪問。 這是默認的ServiceType
。NodePort
:在 static 端口(NodePort
)上公開每個節點的 IP 上的服務。 自動創建NodePort
服務路由到的ClusterIP
服務。 您可以通過請求<NodeIP>:<NodePort>
從集群外部聯系NodePort
服務。LoadBalancer
:使用雲提供商的負載均衡器在外部公開服務。 自動創建外部負載均衡器路由到的NodePort
和ClusterIP
服務。
ExternalName
:通過返回CNAME
記錄將服務映射到externalName
字段的內容(例如foo.bar.example.com
)以其價值。 沒有設置任何類型的代理。
注意:您需要 CoreDNS 版本 1.7 或更高版本才能使用
ExternalName
類型。
我建議改用NodePort
或LoadBalancer
服務類型。
有關示例,請參閱上述文檔鏈接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.