如何从 Docker-for-mac 或 Docker-for-Windows 获取可浏览的 url?

rob*_*ich 6 docker kubernetes docker-for-windows docker-for-mac

在 minikube 中,我可以通过minikube service kubedemo-service --url. 如何type: LoadBalancer在 Kubernetes 模式下获取Docker for Mac 或 Docker for Windows 中服务的 URL ?

service.yml 是:

apiVersion: v1
kind: Service
metadata:
  name: kubedemo-service
spec:
  type: LoadBalancer
  selector:
    app: kubedemo
  ports:
  - port: 80
    targetPort: 80
Run Code Online (Sandbox Code Playgroud)

当我切换到type: NodePort并运行时,kubectl describe svc/kubedemo-service我看到:

...
Type:                     NodePort
LoadBalancer Ingress:     localhost
...
NodePort:                 <unset>  31838/TCP
...
Run Code Online (Sandbox Code Playgroud)

我可以浏览http://localhost:31838/以查看内容。切换到type: LoadBalancer,我看到 localhost 入口线,kubectl describe svc/kubedemo-service但我可以ERR_CONNECTION_REFUSED浏览它。

(我很熟悉,http://localhost:8080/api/v1/namespaces/kube-system/services/kubedemo-service/proxy/尽管这会更改站点的根目录,破坏假定根目录的 css 和 js 引用。我也很熟悉,kubectl port-forward pods/pod-name尽管这只会在 k8s 1.10 之前连接到 pod。)

如何浏览type: LoadBalancerDocker for Win 或 Docker for Mac 中的服务?

all*_*eek 5

只要您运行的是最新版本,LoadBalancer 就可以在 Docker-for-Mac 和 Docker-for-Windows 上运行。将类型翻转回LoadBalancer并更新。当您检查 describe 命令输出时,请查找该Port: <unset> 80/TCP行。并尝试点击http://localhost:80