【问题标题】:How EXTERNAL-IP is set In This Case?在这种情况下如何设置 EXTERNAL-IP?
【发布时间】:2021-01-27 04:16:55
【问题描述】:

在使用 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

查看 Ambassador Edge Stack(入口和 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,至少不直接指定。在这种情况下是否缺少某种设置?

这个问题可能应该向Ambassador Labs (Datawire) 的人提出。

【问题讨论】:

  • 是否有任何理由像这样部署大使而不是使用插件启用它:minikube addons enable ambassador
  • 我刚开始使用ambassador,不知道插件是如何工作的。

标签: kubectl minikube ambassador


【解决方案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 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 |

【讨论】:

  • 感谢您的信息。我将研究这种方法。关于这些命令,它们适用于具有各种可能性的通用部署环境。本地盒子就是其中之一。
【解决方案2】:

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

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

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

【讨论】:

  • 非常感谢您的意见。我将探讨这两个选项。
  • 对于任务,我的理解是localhost需要作为大使。如果正确,第一种方法将不适用。
  • 命令“minikube tunnel”在这种情况下设置外部IP。我需要将 minikube 版本从 1.8 升级到 1.14 才能正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-27
  • 2018-03-21
  • 2016-12-16
  • 2014-03-21
  • 2014-02-18
  • 1970-01-01
相关资源
最近更新 更多