从主机访问Minikube负载均衡器服务 [英] Access Minikube Loadbalancer Service From Host Machine

查看:225
本文介绍了从主机访问Minikube负载均衡器服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试学习如何在Minikube中使用Kibernetes,并具有以下部署和服务:

I am trying to learn how to use Kibernetes with Minikube and have the following deployment and service:

---
kind: Service
apiVersion: v1
metadata:
  name: exampleservice
spec:
  selector:
    app: myapp
  ports:
  - protocol: "TCP"
    # Port accessible inside cluster
    port: 8081
    # Port to forward to inside the pod
    targetPort: 8080
    # Port accessible outside cluster
    nodePort: 30002
  type: LoadBalancer
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: myappdeployment
spec:
  replicas: 5
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: tutum/hello-world
        ports:
        - containerPort: 8080

我希望能够从本地计算机

I expect to be able to hit this service from my local machine at

http://192.168.64.2:30002

按照以下命令: minikube service exampleservice --url ,但是当我尝试从浏览器访问它时,我得到的网站无法访问.

As per the command: minikube service exampleservice --url but when I try to access this from the browser I get a site cannot be reached error.

一些有助于调试的信息:

Some information that may help debugging:

kubectl get services --all-namespaces :

NAMESPACE     NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                  AGE
default       exampleservice         LoadBalancer   10.104.248.158   <pending>     8081:30002/TCP           26m
default       kubernetes             ClusterIP      10.96.0.1        <none>        443/TCP                  2h
default       user-service-service   LoadBalancer   10.110.181.202   <pending>     8080:30001/TCP           42m
kube-system   kube-dns               ClusterIP      10.96.0.10       <none>        53/UDP,53/TCP,9153/TCP   2h
kube-system   kubernetes-dashboard   ClusterIP      10.110.65.24     <none>        80/TCP                   2h

我正在OSX上运行minikube.

I am running minikube on OSX.

推荐答案

这是预期的.请注意,LoadBalancer是用于云的,用于在AWS中创建外部负载均衡器(例如ALP/NLP),并在GCP/Azure中创建类似的负载均衡器.

This is expected. Do note that LoadBalancer is for cloud to create external load balancer like ALP/NLP in AWS and something similar in GCP/Azure etc.

如此处所示更新服务.在这里,我假设 192.168.64.2 是您的minikube ip.如果没有,请使用minikube ip对其进行更新以使其正常工作.

Update the service as shown here. here i assume 192.168.64.2 is your minikube ip. if not, update it with minikube ip to make it work.

kind: Service
apiVersion: v1
metadata:
  name: exampleservice
spec:
  selector:
    app: myapp
  ports:
  - protocol: "TCP"
    # Port accessible inside cluster
    port: 8081
    # Port to forward to inside the pod
    targetPort: 80
    # Port accessible outside cluster
    nodePort: 30002
  type: LoadBalancer
  externalIPs:
  - 192.168.64.2

现在,您可以通过 http://192.168.64.2:8081/

如果您需要通过30002访问该应用程序,则可以像这样使用它

If you need to access the application at 30002, you can use it like this

    kind: Service
    apiVersion: v1
    metadata:
      name: exampleservice
    spec:
      selector:
        app: myapp
      ports:
      - protocol: "TCP"
        # Port accessible inside cluster
        port: 8081
        # Port to forward to inside the pod
        targetPort: 80
        # Port accessible outside cluster
        nodePort: 30002
      type: NodePort


您的部署文件对我来说似乎不正确.


Your deployment file does not look correct to me.

删除它 kubectl删除deploy/myappdeployment

使用它再次创建.

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  labels:
    app: myapp
  name: myappdeployment
spec:
  replicas: 5
  selector:
    matchLabels:
      app: myapp
  strategy: {}
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - image: tutum/hello-world
        name: myapp
        ports:
        - containerPort: 80

这篇关于从主机访问Minikube负载均衡器服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆