如何使用Windows的Docker访问localhost上的kubernetes服务

时间:2018-09-26 11:33:41

标签: docker kubernetes kubectl docker-for-windows

我有带Docker的Windows 10 Pro,适用于Windows v18.06.1-ce,且已启用kubernetes。

我使用kubectl create -f创建了rc.yml:

apiVersion: v1
kind: ReplicationController
metadata:
  name: hello-rc
spec:
  replicas: 9
  selector:
    app: hello-world
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-ctr
        image: nigelpoulton/pluralsight-docker-ci:latest
        ports:
        - containerPort: 8080

svc.yml

apiVersion: v1
kind: Service
metadata:
  name: hello-svc
  labels:
    app: hello-world
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 30001
    protocol: TCP
  selector:
    app: hello-world

如何访问该服务背后的网站?

我希望localhost:8080可以正常工作,但是不会,10.108.96.27:8080也不可以

> kubectl describe service/hello-svc
Name:                     hello-svc
Namespace:                default
Labels:                   app=hello-world
Annotations:              <none>
Selector:                 app=hello-world
Type:                     NodePort
IP:                       10.108.96.27
LoadBalancer Ingress:     localhost
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  30001/TCP
Endpoints:                10.1.0.10:8080,10.1.0.11:8080,10.1.0.12:8080 + 6 more...
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

1 个答案:

答案 0 :(得分:1)

有两种方法可以从Kubernetes集群向外界公开服务:

  1. 类型: LoadBalancer 。但是,它仅适用于云提供商。

  2. 类型: NodePort 。如您在这种情况下使用的。现在,要访问Kubernetes集群中的服务,您需要使用节点之一的IP地址和字段nodePort中的端口 例如,12.34.56.78:30001

有关更多信息,请浏览official documentation