Как я должен настроить свой сервис для доступа к grafana с помощью: localhost: 3000 с помощью minikube

#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-адресом хоста