【发布时间】:2019-11-17 00:40:42
【问题描述】:
我有一个前端 React 应用程序和一个 Go 后端服务作为前端的 API。两者都是同一个命名空间中的 Kubernetes 服务。如何在不使用外部 IP 的情况下与 Go 后端服务进行通信?我让它与外部 ip 一起工作,但是,我无法让 fqdn 像它应该的那样正确解析。前端服务是从nginx:1.15.2-alpine docker 镜像构建的。如何让前端 React 应用与后端 Go 服务器通信?
前端 service.yaml:
apiVersion: v1
kind: Service
metadata:
name: ui
namespace: client
labels:
app: ui
spec:
type: NodePort
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
selector:
app: ui
前端部署.yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ui
namespace: client
spec:
replicas: 1
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 2
template:
metadata:
labels:
app: ui
spec:
containers:
- name: ui
image: #######
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
后端服务.yaml:
apiVersion: v1
kind: Service
metadata:
name: api
namespace: client
labels:
app: api
spec:
type: NodePort
ports:
- port: 8001
protocol: TCP
targetPort: http
name: http
selector:
app: api
后端部署.yaml:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: api
namespace: client
labels:
name: api
spec:
replicas: 1
revisionHistoryLimit: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
template:
metadata:
labels:
app: api
spec:
containers:
- name: api
image: ####
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8001
【问题讨论】:
-
分享你的服务 yamls
-
您应该可以通过他们的名字访问该服务。这是由 kunernetes dns 处理的
-
我将这些添加到问题中。我尝试了服务名称,但它不起作用。
-
服务中的目标端口字段不应该使用容器端口吗?
-
我添加了它,但仍然没有。我在 React 应用程序中将 Go 服务器的基本 API 端点设置为
api.client:8001。它因错误而失败:ERR_NAME_NOT_RESOLVED.
标签: reactjs go kubernetes dns