出于开发目的,我尝试使用Minikube。我想测试我的应用程序如何捕获暴露服务和分配外部IP的事件。
当我在Google容器引擎快速入门教程中公开服务时,我可以看到外部IP分配事件:
kubectl get services --watch
我想用Minikube实现同样的目标(如果可能的话)。
以下是我尝试在OSX开发机器上本地设置的方法:
minikube start --vm-driver=xhyve
minikube addons enable ingress
kubectl run echoserver --image=gcr.io/google_containers/echoserver:1.4 --port=8080
kubectl expose deployment echoserver --type="LoadBalancer"
kubectl get services --watch
我看到以下输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
echoserver LoadBalancer 10.0.0.138 <pending> 8080:31384/TCP 11s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 4m
外部-Ip字段永远不会更新,并显示待处理阶段。是否可以使用Minikube实现外部IP分配?
答案 0 :(得分:1)
在GKE或AWS安装上,外部IP来自云支持,该支持向kube API报告创建的LB已分配的地址。
要在minikube上使用相同的,你必须运行某种LB控制器,即。 haproxy一个,但老实说,对于minikube它没有多大意义,因为你有{1}}提前知道的单个IP,所以你可以使用具有该知识的NodePort。 LB解决方案需要设置一些可以映射到特定节点端口的IP范围,因为这实际上是LB将要做的事情 - 从extIP获取流量:extPort并将其代理到minikubeIP:NodePort。
除非您的使用案例阻止您,否则您应该将Ingress视为摄取迷你管道流量的方式。
答案 1 :(得分:0)
如果您想模拟外部IP分配事件(就像您可以使用GKE或AWS观察到的那样),可以通过在沙盒kubernetes上应用以下补丁来实现:
kubectl run minikube-lb-patch --replicas=1 --image=elsonrodriguez/minikube-lb-patch:0.1 --namespace=kube-system
https://github.com/elsonrodriguez/minikube-lb-patch#assigning-external-ips