#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 способами, как описано в документах:
- С туннелем minikube, работающим в отдельном терминале:
При этом вы сможете получить к нему доступ через 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 |
- Настройка его с помощью входного ресурса, который также описан здесь .
- Настройка его с помощью ресурса сопоставления ambassador.
Комментарии:
1. Спасибо за вашу информацию. Я рассмотрю этот подход. Что касается этих команд, они предназначены для общей среды развертывания с различными возможностями. Локальный блок является одним из них.
Ответ №2:
Обычно, когда вы создаете службу типа LoadBalancer, Kubernetes автоматически пытается предоставить внешний балансировщик нагрузки в облачной среде. Потому что Minikube не имеет встроенного балансировщика нагрузки, который он может предоставить службе ambassador. Есть 2 способа обойти это.
-
Используется
minikube tunnel
для имитации балансировщика нагрузки. В зависимости от вашей версии minikube это может быть либо localhost, либо кластерный IP-адрес службы. -
Разверните Ambassador как службу NodePort и сделайте
kubectl port-forward
так, чтобы localhost разрешался для службы Ambassador.
Комментарии:
1. Большое спасибо за ваш вклад. Я рассмотрю эти два варианта.
2. Насколько я понимаю, для этой задачи localhost должен быть для посла. Если это правильно, первый подход не будет применим.
3. Команда «туннель мини-куба» устанавливает внешний IP-адрес в этом случае. Мне нужно обновить версию minikube с 1.8 до 1.14, чтобы она работала.