问题描述
使用minikube启动本地Kubernates之后,我运行了一系列kubectl命令:
$ kubectl apply -f https://app.getambassador.io/initializer/yaml/0a6624ff-5b39-418f-b61d-7ba83dc3ab7b/crds && \
kubectl wait --for condition=established --timeout=90s crd -lproduct=aes
$ kubectl apply -f https://app.getambassador.io/initializer/yaml/0a6624ff-5b39-418f-b61d-7ba83dc3ab7b/install && \
kubectl wait -n ambassador deploy -lproduct=aes --for condition=available --timeout=90s
$ kubectl apply -f https://app.getambassador.io/initializer/yaml/0a6624ff-5b39-418f-b61d-7ba83dc3ab7b/configure
查看大使边缘堆栈(入口和API网关)
$ kubectl get svc --namespace ambassador
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ambassador LoadBalancer 10.111.43.125 <pending> 80:30130/TCP,443:30217/TCP 8m37s
ambassador-admin ClusterIP 10.111.152.68 <none> 8877/TCP 8m37s
ambassador-redis ClusterIP 10.98.170.102 <none> 6379/TCP 8m38s
外部IP应该是localhost,但不是。这些命令没有指定外部IP,至少没有直接指定。在这种情况下是否缺少某种设置?
这个问题可能应该解决给Labs大使(Datawire)。
解决方法
通常,当您创建类型为LoadBalancer的服务时,Kubernetes会自动尝试在云环境中设置外部负载均衡器。因为Minikube没有内置的LoadBalancer,它可以供应给大使服务。有两种解决方法。
-
使用
StyleSheet.create
模拟负载均衡器。根据您的minikube版本,它可能是localhost或服务的群集IP。 -
将Ambassador部署为NodePort服务并执行
minikube tunnel
,以便localhost解析为Ambassador服务。
Minikube有一个ambassador
插件,因此您不必像这样部署它。您所需要做的就是启用它:
minikube addons enable ambassador
然后您可以按照文档中所述的3种方式访问它:
- minikube tunnel在单独的终端中运行:
使用此方法,您将可以通过external-ip
访问它。为此,您可以运行kubectl get service ambassador -n ambassador
:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ambassador LoadBalancer 10.106.55.39 10.106.55.39 80:31993/TCP,443:31124/TCP 24h
请注意,Minikube本机不支持负载平衡器。您可能还需要检查minikube service list
而不是minikube隧道。输出应如下所示:
➜ ~ minikube service list
|-------------|-----------------------------|--------------|-------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-------------|-----------------------------|--------------|-------------------------|
| ambassador | ambassador | http/80 | http://172.17.0.3:31993 |
| | | https/443 | http://172.17.0.3:31124 |
| ambassador | ambassador-admin | No node port |
| ambassador | ambassador-operator-metrics | No node port |
- 使用here中所述的Ingress资源对其进行配置。
- 与大使Mapping Resource进行配置。