无法通过使用来自其他pod的cluster-ip进入服务,面临连接超时和退出代码7

问题描述 投票:0回答:2

在Minikube中,我使用下面提供的配置创建了一个pod

kind: Pod
metadata:
  name: node-js-pod
spec:
  containers:
  - name: node-js-pod
    image: bitnami/apache:latest
    ports: 
    - containerPort: 8080 

然后我创建了一个类型为cluster-ip的服务,其配置如下

kind: Service
metadata:
   name: node-js-internal
   labels:
     name: node-js-internal
spec:
  ports:
  - port: 8081
  selector:
    name: node-js

创建服务后,我使用命令检查了服务的集群ip:kubectl get services -l name=node-js-internal,输出为:

NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
node-js-internal   ClusterIP   10.106.71.114   <none>        8081/TCP   18m

一旦我创建了这个服务,我尝试使用命令从node-js-pod内部访问此服务:kubectl exec node-js-pod -- curl 10.106.71.114:8081当curl 7连接超时时,它给出了错误消息:

$ kubectl exec node-js-pod -- curl 10.106.71.114:8081
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:02:10 --:--:--     0curl: (7) Failed to connect to 10.106.71.114 port 8081: Connection timed out
command terminated with exit code 7

如何从minikube中的pod node-js连接到node-js-internal服务?

kubernetes
2个回答
1
投票

在容器正在侦听的服务中使用相同的端口。

kind: Service
metadata:
   name: node-js-internal
   labels:
     name: node-js-internal
spec:
  ports:
  - port: 8080
  selector:
    name: node-js-pod

如果要在服务中拥有与容器正在侦听的端口不同的端口,则需要在服务中指定映射

ports:
  - protocol: TCP
    port: 8081
    targetPort: 8080

0
投票

你忘了给pod添加标签:

kind: Pod
metadata:
  name: node-js-pod
  labels:
    name: node-js

请记住,服务会根据标签选择广告连播。

© www.soinside.com 2019 - 2024. All rights reserved.