0

在使用 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,至少不直接指定。在这种情况下是否缺少某种设置?

这个问题可能要问大使实验室(Datawire)的人。

4

2 回答 2

1

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 隧道minikube service list。输出应如下所示:

➜  ~ 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 |

于 2020-10-14T08:15:52.280 回答
0

通常,当您创建 LoadBalancer 类型的服务时,Kubernetes 会自动尝试在云环境中配置外部负载均衡器。因为 Minikube 没有内置的 LoadBalancer 可以提供给大使服务。有两种方法可以解决这个问题。

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

  2. 将 Ambassador 部署为 NodePort 服务并执行操作,kubectl port-forward以便 localhost 解析为 Ambassador 服务。

于 2020-10-13T15:27:48.307 回答