Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
节点端口错误连接被拒绝(Docker桌面、Windows、Kubernetes)_Docker_Kubernetes_Kubernetes Ingress - Fatal编程技术网

节点端口错误连接被拒绝(Docker桌面、Windows、Kubernetes)

节点端口错误连接被拒绝(Docker桌面、Windows、Kubernetes),docker,kubernetes,kubernetes-ingress,Docker,Kubernetes,Kubernetes Ingress,每次我尝试访问我机器上的NodePort时,它都会显示“错误连接被拒绝”。我不明白,因为我在网上阅读的示例暗示我可以在笔记本电脑上运行Docker Desktop,连接到集群,并通过它们的NodePort访问服务 我的机器: 视窗10 Docker Desktop(使用k3s和minikube进行额外测试,结果相似) 库伯内特斯1.19+ Kubernetes配置: apiVersion: apps/v1 kind: Deployment metadata: name: nginx

每次我尝试访问我机器上的NodePort时,它都会显示“错误连接被拒绝”。我不明白,因为我在网上阅读的示例暗示我可以在笔记本电脑上运行Docker Desktop,连接到集群,并通过它们的NodePort访问服务

我的机器:

  • 视窗10
  • Docker Desktop(使用
    k3s
    minikube
    进行额外测试,结果相似)
  • 库伯内特斯1.19+
Kubernetes配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: ngnix-service
spec:
  selector:
    app: nginx
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30007
输出和卷曲测试:

PS C:\Users\ME\nginx> kubectl get svc
NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP          169m
ngnix-service   NodePort    10.108.214.243   <none>        80:30007/TCP     7m19s

PS C:\Users\ME\nginx> curl.exe http://localhost:30007
curl: (7) Failed to connect to localhost port 30007: Connection refused
PS C:\Users\ME\nginx>kubectl get svc
名称类型CLUSTER-IP外部IP端口年龄
kubernetes ClusterIP 10.96.0.1 443/TCP 169m
ngnix服务节点端口10.108.214.243 80:30007/TCP 7m19s
PS C:\Users\ME\nginx>curl.exehttp://localhost:30007
curl:(7)无法连接到本地主机端口30007:连接被拒绝
我还尝试了节点ip:

PS C:\Users\ME\nginx> kubectl get nodes -o wide
NAME             STATUS   ROLES    AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION     CONTAINER-RUNTIME
docker-desktop   Ready    master   6d    v1.19.7   192.168.65.4   <none>        Docker Desktop   5.10.25-linuxkit   docker://20.10.5

PS C:\Users\ME\nginx> curl.exe http://192.168.65.4:30007
curl: (7) Failed to connect to 192.168.65.4 port 30007: Timed out
PS C:\Users\ME\nginx>kubectl获取节点-o宽
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
docker desktop Ready master 6d v1.19.7 192.168.65.4 docker desktop 5.10.25-linuxkitdocker://20.10.5
PS C:\Users\ME\nginx>curl.exehttp://192.168.65.4:30007
curl:(7)未能连接到192.168.65.4端口30007:超时
当我尝试从浏览器(Chrome)访问节点端口时,我会得到相同的响应<代码>错误连接被拒绝


有什么我遗漏的吗?为什么所有节点报告都不可访问?

Kubernetes在本地运行,但仍在其内部网络上运行

curl.exe

这里您使用的IP地址是内部Kubernetes网络。您必须公开Kubernetes服务,以便它获得群集外部地址

见本部分:

EXTERNAL-IP
<none>
然后您可以在
localhost:8080
上访问它


请看

谢谢你为我澄清了这一点。我的主要问题是端口转发不是一个选项(尽管我已经用它来确认我的服务正在工作)。我无法使用
负载平衡器
,因为我的机器没有本地
负载平衡器
。Docker Desktop将我的
外部ip
保留为
。我想我得另找个办法来解决这个问题。也许是金属磅。
kubectl port-forward ngnix-service 8080:80