首页 > 解决方案 > 使用 Docker For Windows 时如何访问通过 ClusterIP 公开的服务:

问题描述

我在本地工作站(windows 10 pro)上安装了 Docker for windows 和用于开发目的的内置 k8s 单节点集群。

我想知道如何访问托管在此集群上的服务。它没有很好的记录

我没有安装负载均衡器,也不需要 K8s Ingress。如何访问托管在 10.105.245.65:80 的服务。localhost 和 127.0.0.1 不起作用,并且 10.105.245.65 在主机 windows 机器上没有意义。

我可以使用 NodePort (有效),但我想了解如何通过 ClusterIP 访问。

C:\Users\balamuvi>kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   52m
webserver    ClusterIP   10.105.245.65   <none>        80/TCP    48m ===> how do I access this service

C:\Users\balamuvi>kubectl cluster-info
Kubernetes master is running at https://kubernetes.docker.internal:6443 =======> resolves to localhost
KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

标签: dockerkubernetes

解决方案


无法从集群外部访问 CLusterIP。除了执行到 pod(如 Arghya 所述)之外的其他方法是使用kubectl port-forward命令。

赶紧跑:

kubectl port-forward pods/<pod-name> <local-port>:<pod-port>

然后你可以访问下面的 podlocalhost:<local-port>

有关端口转发的更多信息,请参阅 kubernetes 文档。


推荐阅读