在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服务?
在容器正在侦听的服务中使用相同的端口。
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
你忘了给pod添加标签:
kind: Pod
metadata:
name: node-js-pod
labels:
name: node-js
请记住,服务会根据标签选择广告连播。