无法通过浏览器(带有服务和部署)访问k8s中的节点

时间:2020-08-03 07:20:36

标签: docker kubernetes deployment

有部署:

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运行。

有人建议我在做什么错吗?

1 个答案:

答案 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端口上监听您的应用程序。

相关问题