Kubernetes-Minikube的入口

时间:2018-11-11 22:17:24

标签: kubernetes minikube kubernetes-ingress

我正在通过玩minikube来学习kubernetes。

这是我的pod部署文件,很好。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      component: web
  template:
    metadata:
      labels:
        component: web
    spec:
      containers:
        - name: myapp
          image: myid/myimage

我正在使用NodePort公开上述容器。我可以在端口30002上使用minikube IP进行访问。

apiVersion: v1
kind: Service
metadata:
  name: my-ip-service
spec:
  type: NodePort
  externalIPs:
  - 192.168.99.100
  selector:
    component: web
  ports:
    - port: 3000
      nodePort: 30002
      targetPort: 8080

现在,我想使用入口在端口80上访问应用程序,它将在端口3000转发请求ip服务。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: my-ip-service
    servicePort: 3000

如果我尝试访问入口,则地址为空。

NAME           HOSTS   ADDRESS   PORTS   AGE
test-ingress   *                 80      41m

如何在minikube中使用ingress?或如何将minikube ip与入口服务绑定-这样,应用程序可以暴露在外部而无需使用nodeport

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式获取minikube节点的IP地址:

minikube ip

在minikube中不会填充入口的IP地址,因为minikube没有负载均衡器。如果您希望自己的行为类似于minikube集群的负载均衡器,则https://github.com/knative/serving/blob/master/docs/creating-a-kubernetes-cluster.md#loadbalancer-support-in-minikube建议运行以下命令来修补集群:

sudo ip route add $(cat ~/.minikube/profiles/minikube/config.json | jq -r ".KubernetesConfig.ServiceCIDR") via $(minikube ip)
kubectl run minikube-lb-patch --replicas=1 --image=elsonrodriguez/minikube-lb-patch:0.1 --namespace=kube-system

答案 1 :(得分:1)

我认为您在minikube本身上缺少入口控制器资源。在K8上创建入口控制器资源的方法有很多种,但我认为对您来说,开始minikube的最佳方法是遵循this文档。

一旦工作,别忘了大致了解Ingress