我使用minikube设置了一个单节点集群。我还在此节点内配置了一个客户端Pod,还配置了一个节点端口服务来访问Pod。但是该服务无法在浏览器上访问。
以下是客户端Pod和nodeport服务的配置文件:
client-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: client-pod
labels:
component:web
spec:
containers:
- name: client
image: stephengrider/multi-worker
ports:
- containerPort: 9999
client-node-port.yaml
kind: Service
metadata:
name: client-node-port
spec:
type: NodePort
ports:
- port: 3050
targetPort: 3000
nodePort: 31515
selector:
component:web
当我运行以下命令时,我可以看到Pod和服务的运行状态:
> kubectl get pods
NAME READY STATUS RESTARTS AGE
client-pod 1/1 Running 0 60m
> kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
client-node-port NodePort 10.99.14.107 <none> 3050:31515/TCP 63m
然后我在minikube集群上找到了服务URL:
> minikube service list
|-------------|------------------|-----------------------------|
| NAMESPACE | NAME | URL |
|-------------|------------------|-----------------------------|
| default | client-node-port | http://192.168.99.101:31515 |
| default | hello-minikube | http://192.168.99.101:31324 |
| default | kubernetes | No node port |
| kube-system | kube-dns | No node port |
|-------------|------------------|-----------------------------|
我能够使用表中针对它提到的URL访问hello-minikube服务。但是我无法访问客户端节点端口服务,它只是说:
This site can’t be reached192.168.99.101 refused to connect.
我该如何进行?
答案 0 :(得分:2)
您的服务目标端口是3000
,而容器打开端口是9999
,服务将用于连接和发送请求。
将服务中的目标端口更改为9999
,然后进行测试。还要检查容器是否处于运行状态。
答案 1 :(得分:2)
ContainerPort用于确定服务应使用哪个容器的端口。
svc规范上的目标端口指定当请求到达时服务应点击哪个端口。
spec:
containers:
- name: client
image: stephengrider/multi-worker
ports:
- containerPort: 3000
由于您使用的stephengrider/multi-worker
图像使用3000
作为默认端口,因此请将containerPort
设置为3000
。更新pod yaml。它应该工作。
N.B:您应该始终将服务中那些在Pod侧有效的端口作为目标。
答案 2 :(得分:0)
我遇到了类似的问题。我删除了节点端口和Pod配置,然后重新部署了它。有效。