#kubernetes #minikube
#kubernetes #minikube
Вопрос:
Я развернул grafana в minikube, но не могу получить к нему доступ по URL : 127.0.0.1:3000
Вот мой файл службы:
apiVersion: v1
kind: Service
metadata:
name: grafana-local
namespace: monitoring
labels:
app: grafana-local
component: core
spec:
type: NodePort
ports:
- port: 3000
selector:
app: grafana-local
component: core
Когда я делаю minikube service list
, я получаю это:
| monitoring | grafana-local | 3000 | http://172.17.0.3:32113 |
Когда я получаю доступ к grafana через http://172.17.0.3:32113
, он работает. Но разве он не должен был перенаправлять его на порт 3000 на хосте с разделом:
spec:
type: NodePort
ports:
- port: 3000
???
Комментарии:
1. Я хотел бы предложить эту статью , я использовал ее некоторое время назад для настройки панели управления grafana. однако для развертывания вам нужно будет использовать helm.
Ответ №1:
Существует несколько различных конфигураций портов для служб Kubernetes:
-
Port
предоставляет сервис Kubernetes на указанном порту внутри кластера. Другие модули в кластере могут взаимодействовать с этим сервером через указанный порт. -
TargetPort
это порт, на который служба будет отправлять запросы, которые будет прослушивать ваш модуль. Ваше приложение в контейнере также должно будет прослушивать этот порт. -
NodePort
предоставляет службу извне кластеру с помощью IP-адреса целевых узлов иNodePort
.NodePort
является настройкой по умолчанию, если поле порта не указано.
Из вашего примера выше grafana-local
сервис будет доступен для внутренних приложений кластера на порту 3000 и для внешних приложений кластера на IP-адресе узла 32113. NodePort
Не был указан в вашей конфигурации, поэтому он был выделен для 32113 из предопределенного NodePort
диапазона по умолчанию 30000-32767.
Вы можете проверить детали вашего сервиса с помощью:
kubectl describe service grafana-local
Если вы хотите изменить свое значение NodePort
на значение, отличное от диапазона по умолчанию 30000-32767, вам необходимо обновить файл /etc/kubernetes/manifests/kube-apiserver.yaml
и добавить строку --service-node-port-range=xxx-yyy
(выберите свои значения здесь). Поскольку каталог отслеживается kubelet
на предмет любых изменений, больше ничего не нужно делать. kube-apiserver
Будет воссоздан с новыми настройками. Помните, однако, что диапазон по умолчанию был выбран не просто так, чтобы избежать сетевых конфликтов, поэтому вам нужно убедиться, что он не будет переопределять другие порты, которые вы хотите использовать в своем кластере.
Ответ №2:
Ну, что бы вы ни настроили, мне кажется правильным. если вы хотите получить доступ на localhost: 3000, выполните перенаправление порта с помощью
kubectl port-forward pod_name 3000:3000
Затем перейдите к http://localhost:3000
Комментарии:
1. это работает, но есть ли способ поместить это в файл конфигурации? У меня есть около 10 сервисов, и я не хочу выполнять 10 раз эту команду для каждой локальной службы.
Ответ №3:
Попробуйте использовать имя вашего хоста / IP и порт узла.
http://<host IP>:3000
Комментарии:
1. Это не то, что я хочу, я уже говорил в вопросе, с
http://172.17.0.3:32113
это работает2. Я хотел сказать NodePort с IP-адресом хоста