Как устанавливается ВНЕШНИЙ IP-адрес в этом случае?

#kubectl #minikube #ambassador

#кубектл #миникубик #посол #kubectl #мини-куб

Вопрос:

После создания локального Kubernates с помощью minikube я запускаю серию команд kubectl:

 $ kubectl apply -f https://app.getambassador.io/initializer/yaml/0a6624ff-5b39-418f-b61d-7ba83dc3ab7b/crds amp;amp; 
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 amp;amp; 
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-адрес, по крайней мере, напрямую. Отсутствует ли в этом случае какая-то настройка?

Этот вопрос, возможно, следует адресовать сотрудникам Ambassador Labs (Datawire).

Комментарии:

1. Есть ли какая-либо причина для развертывания ambassador таким образом, вместо того, чтобы включать его с помощью дополнений: minikube addons enable ambassador ?

2. Я только начинаю использовать 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 вы также можете захотеть проверить 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 |
  

Комментарии:

1. Спасибо за вашу информацию. Я рассмотрю этот подход. Что касается этих команд, они предназначены для общей среды развертывания с различными возможностями. Локальный блок является одним из них.

Ответ №2:

Обычно, когда вы создаете службу типа LoadBalancer, Kubernetes автоматически пытается предоставить внешний балансировщик нагрузки в облачной среде. Потому что Minikube не имеет встроенного балансировщика нагрузки, который он может предоставить службе ambassador. Есть 2 способа обойти это.

  1. Используется minikube tunnel для имитации балансировщика нагрузки. В зависимости от вашей версии minikube это может быть либо localhost, либо кластерный IP-адрес службы.

  2. Разверните Ambassador как службу NodePort и сделайте kubectl port-forward так, чтобы localhost разрешался для службы Ambassador.

Комментарии:

1. Большое спасибо за ваш вклад. Я рассмотрю эти два варианта.

2. Насколько я понимаю, для этой задачи localhost должен быть для посла. Если это правильно, первый подход не будет применим.

3. Команда «туннель мини-куба» устанавливает внешний IP-адрес в этом случае. Мне нужно обновить версию minikube с 1.8 до 1.14, чтобы она работала.