有部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-task-tracker-deployment
spec:
selector:
matchLabels:
app: my-task-tracker
replicas: 5
template:
metadata:
labels:
app: my-task-tracker
spec:
containers:
- name: hello-world
image: shaikezam/task-tracker:1.0
ports:
- containerPort: 8080
protocol: TCP
这是服务(NodePort):
apiVersion: v1
kind: Service
metadata:
name: my-task-tracker-service
labels:
app: my-task-tracker
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8085
nodePort: 30001
protocol: TCP
selector:
app: my-task-tracker
现在,我尝试访问localhost:8085或localhost:30001,但没有任何反应。
我正在docker桌面上使用K8S运行。
有人建议我在做什么错吗?
答案 0 :(得分:0)
目标端口应该在服务yaml中为8080
,如果这是您的容器根据您的部署yaml文件运行的端口。
apiVersion: v1
kind: Service
metadata:
name: my-task-tracker-service
labels:
app: my-task-tracker
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 30001
protocol: TCP
selector:
app: my-task-tracker
=======
port
在群集内的指定端口上公开Kubernetes服务。群集中的其他Pod可以在指定端口上与此服务器通信。
TargetPort
是服务将请求发送到的端口,您的Pod将在此端口上监听。您容器中的应用程序也需要在此端口上进行监听。
NodePort
通过目标节点的IP地址和NodePort在群集外部公开服务。如果未指定端口字段,则NodePort是默认设置。您还应该能够在Nodeport上使用您的应用程序。
在您的情况下,目标端口应该是8080,这对于应用程序的运行很重要,您可以通过更改yaml中的port字段并通过更改Nodeport从外部在群集中的8085端口上监听您的应用程序。