无法公开本地Kubernetes集群上的端口(通过Docker Desktop)

时间:2019-11-25 07:34:52

标签: docker kubernetes

我正在使用Windows 10上Docker Desktop上的本地Kubernetes集群。没有虚拟机,没有迷你库。

我需要在本地主机上公开端口以提供某些服务。

例如,我从官方教程中获取kubernetes-bootcamp图像:

docker pull jocatalin/kubernetes-bootcamp:v2

将其放入本地注册表中:

docker tag jocatalin/kubernetes-bootcamp:v2 localhost:5000/kubernetes-bootcamp
docker push localhost:5000/kubernetes-bootcamp

然后使用此映像创建部署:

kubectl create deployment kubernetes-bootcamp --image=localhost:5000/kubernetes-bootcamp

然后让我们公开一个用于访问我们的部署的端口:

kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080
kubectl get services
kubernetes-bootcamp   NodePort       10.102.167.98    <none>        8080:32645/TCP   8s

因此,我们发现我们的部署的公开端口为32645。让我们尝试请求它:

curl localhost:32645
Failed to connect to localhost port 32645: Connection refused

什么都不是。


但是,如果我尝试端口转发,则一切正常:

kubectl port-forward deployment/kubernetes-bootcamp 7000:8080
Forwarding from 127.0.0.1:7000 -> 8080
Forwarding from [::1]:7000 -> 8080
Handling connection for 7000

另一个控制台:

curl localhost:7000
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-7b5598d7b5-8qf9j | v=2

我在做什么错?我发现了像我这样的几篇文章,但没有一个对我有帮助。

2 个答案:

答案 0 :(得分:0)

尝试运行此CMD:

kubectl get svc | grep kubernetes-bootcamp 

之后,使用CMD将pod暴露给您的网络:

kubectl expose pod (podname) --type=NodePort

之后,您可以使用cmd示例

检查URL。
minikube 0r kubectl  service (service name) --url

答案 1 :(得分:0)

所以我发现了问题的根源-本地Kubernetes集群以某种方式无法正常工作。

我如何解决问题:

  1. 删除C:\ ProgramData \ DockerDesktop \ pki
  2. 重新创建所有Pod,服务,部署

现在,我之前使用的相同脚本效果很好。