我的目标是将我的所有端口公开在一项服务下。
我的pod包含一个在端口80下运行的容器化应用。
这是我创建部署的尝试:
apiVersion: apps/v1
kind: Deployment
metadata: name: my-deployment
spec:
replicas: 5
selector:
matchLabels:
app: myapp
template:
metadata:
name: my-pod
labels:
app: myapp
spec:
containers:
- name: httd
image: httpd
imagePullPolicy: Always
ports:
- containerPort: 80
但是,我遇到了错误:
error: error parsing deployment.yaml: error converting YAML to JSON: yaml: line 3: mapping values are not allowed in this context
该错误是在我的部署文件中:修复它之后,我可以同时创建部署和服务,但是该服务仍未在节点上公开。这是我的服务定义:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: front-end
ports:
- port: 77
targetPort: 80
nodePort: 32766
type: NodePort
如您所见,我将Pod中的端口80映射到节点上的端口32766,并在调用:localhost:32766时返回404
我想念什么?
这是浏览器显示的内容:
答案 0 :(得分:1)
当调用:localhost:32766时,它返回404
这意味着该应用实际上正在响应该请求。但是,您发送了一个请求,请求该应用未实现的 URL 。 404 Not Found
是一个Http状态代码,当Web服务器没有所请求URL的路径时,Web服务器会做出响应。
答案 1 :(得分:0)
我想问题出在service.yaml文件的选择器部分 试试这个
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: myapp
ports:
- port: 77
targetPort: 80
nodePort: 32766
type: NodePort
答案 2 :(得分:0)
除了@shubam_asati发布的内容外,您的服务Yaml还具有port: 77
和targetPort: 80
。但是您的部署容器的端口是80
。将port
的值更改为与targetPort
相同的值(即80
),您应该可以通过localhost:<nodePort>
连接到应用程序。