【发布时间】:2020-04-23 21:31:17
【问题描述】:
我使用 ClusterIP 类型配置我的服务。我想让他们交流。
服务
apiVersion: v1
kind: Service
metadata:
labels:
app: app-backend-deployment
name: app-backend
spec:
type: ClusterIP
ports:
- port: 8020
protocol: TCP
targetPort: 8100
selector:
app: app-backend
部署
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: app-backend
name: app-backend-deployment
spec:
replicas: 1
selector:
matchLabels:
app: app-backend
template:
metadata:
labels:
app: app-backend
spec:
containers:
- name: app-backend
image: app-backend
ports:
- containerPort: 8100
imagePullPolicy: Never
配置映射
apiVersion: v1
kind: ConfigMap
metadata:
name: backend-conf # name of configMap
data:
BACKEND_SERVICE_HOST: app-backend:8020
这就是我传递给前端服务的内容,我想通过 DNS 名称进行 REST 调用,例如 http://app-backend:8020/get/1。但就像我在控制台应用程序中看到的无法解析 DNS 名称 net::ERR_NAME_NOT_RESOLVED。
我还检查了 pod nslookup:
busybox nslookup app-backend.default.svc.cluster.local
Server: 10.96.0.10
Address: 10.96.0.10:53
Name: app-backend.default.svc.cluster.local
Address: 10.106.41.36
然后比较一下
kubectl describe svc app-backend
Name: app-backend
Namespace: default
Labels: app=app-backend-deployment
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"...
Selector: app=app-backend
Type: ClusterIP
IP: 10.106.41.36
Port: <unset> 8020/TCP
TargetPort: 8100/TCP
就像您看到的一样,地址上有相同的 IP,但我不知道在哪里查看为什么 dns 解析器不起作用。 kubectl version Client "v1.15.5", Server Version:"v1.17.3",
【问题讨论】:
-
您在哪里进行失败的 DNS 查找?该名称仅在集群内有效。
-
“前端服务”是个什么东西?是另一个 Kubernetes pod,还是别的什么?
-
@BurakSerdar 在 pod app-backend-deployment-78856bd74-s2pq5 内
-
@DavidMaze 是的,这是 ngninx 上的另一个服务 Angular 应用程序,具有不同的 pod 和服务
-
当您说“Angular”时,实际的 REST 请求是否来自浏览器应用程序?那将无法使用 Kubernetes DNS。
标签: kubernetes