在这种情况下如何设置EXTERNAL-IP?

问题描述

使用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,它可以供应给大使服务。有两种解决方法。

  1. 使用StyleSheet.create模拟负载均衡器。根据您的minikube版本,它可能是localhost或服务的群集IP。

  2. 将Ambassador部署为NodePort服务并执行minikube tunnel,以便localhost解析为Ambassador服务。

,

Minikube有一个ambassador插件,因此您不必像这样部署它。您所需要做的就是启用它:

minikube addons enable ambassador

然后您可以按照文档中所述的3种方式访问​​它:

使用此方法,您将可以通过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 |

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...