我是Kubernetes的新手,我正在尝试创建一个简单的前端后端应用程序,其中前端和后端将拥有自己的服务。由于某种原因,我无法从前端服务中按其名称访问后端服务。
仅仅因为简单,前端服务就可以这样创建:
kubectl run curl --image=radial/busyboxplus:curl -i --tty
当我执行nslookup时,我得到以下信息:
[ root@curl-66bdcf564-rbx2k:/ ]$ nslookup msgnc-travel
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: msgnc-travel
Address 1: 10.100.171.209 msgnc-travel.default.svc.cluster.local
服务以其名称msgnc-travel可用,但是当我尝试卷曲它时:
curl msgnc-travel
它只是一直等待,没有收到响应。我也尝试过
curl 10.100.171.209
和curl msgnc-travel.default.svc.cluster.local
,但我的行为相同
任何想法为何会发生此问题?
我已经通过使用Ingress成功地完成了一个“变通方法”,但是我很好奇为什么我不能仅通过提供名称来直接访问我的Spring Boot后端服务?
deployment.yml 如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: msgnc-travel-deployment
labels:
name: msgnc-travel-deployment
app: msgnc-travel-app
spec:
template:
metadata:
name: msgnc-travel-pod
labels:
name: msgnc-travel-pod
app: msgnc-travel-app
spec:
containers:
- name: msgnc-travel
image: bdjordjevic/msgnc-travel
ports:
- containerPort: 8080
replicas: 1
selector:
matchExpressions:
- {key: name, operator: In, values: [msgnc-travel-pod]}
- {key: app, operator: In, values: [msgnc-travel-app]}
service.yml 看起来像这样:
apiVersion: v1
kind: Service
metadata:
name: msgnc-travel
labels:
name: msgnc-travel-service
app: msgnc-travel-app
spec:
ports:
- port: 8080
targetPort: 8080
selector:
name: msgnc-travel-pod
app: msgnc-travel-app
答案 0 :(得分:2)
您正在定义服务以监听8080端口。因此,您应该执行curl msgnc-travel:8080
。
我尝试运行wget,这是我得到的输出:
wget msgnc-travel:8080
Connecting to msgnc-travel:8080 (10.98.81.45:8080)
wget: server returned error: HTTP/1.1 404