#kubernetes
#kubernetes
Вопрос:
Я пытаюсь запустить сервер openzipkin в кластере k8s, начиная с тестирования в мини-кубе. Я новичок в настройке k8s, но вот что я сделал до сих пор:
$ minikube start
$ eval $(minikube docker-env)
$ kubectl run zipkin --image=openzipkin/zipkin --port=9411
$ kubectl expose deployment zipkin --port=9411 --type="NodePort" --name=zipkin-http
Я думаю, что я делаю, это запуск нового модуля и развертывание образа zipkin, а затем показ веб-интерфейса на порту 9411 через zipkin-http. После выполнения этого:
$ kubectl run -i --tty busybox --image=busybox -- sh
$ nslookup zipkin-http
Server: 10.0.0.10
Address 1: 10.0.0.10
Name: zipkin-http
Address 1: 10.0.0.101
$ wget -qO- zipkin-http:9411
<!DOCTYPE html>
...
$ wget -qO- zipkin-http:9411/config.json
{"environment":"","queryLimit":10,"defaultLookback":3600000,"instrumented":".*"}
Затем я запускаю прокси-сервер kubectl, чтобы получить доступ к веб-интерфейсу из своего браузера:
$ kubectl proxy --accept-hosts=".*"
Теперь, если я перейду к http://localhost:8001/api/v1/proxy/namespaces/default/services/zipkin-http/config.json Я получаю содержимое конфигурационного файла:
{"environment":"","queryLimit":10,"defaultLookback":3600000,"instrumented":".*"}
Но если я перейду к корню в http://localhost:8001/api/v1/proxy/namespaces/default/services/zipkin-http / Я получаю сообщение об ошибке:
Error loading config.json: undefined
Файл config.json, который он пытается загрузить, находится по адресу:9411/config.json. Запрос на загрузку /config.json поступает из JS-файла, который был загружен с помощью html на корневой странице.
Поскольку похоже, что я могу получить доступ к файлу json непосредственно как изнутри, так и снаружи кластера, я не понимаю, почему файл JS не может его загрузить. Что я здесь делаю не так?
Спасибо!
Ответ №1:
Веб-приложение пытается получить доступ config.json
к root (доступ от /config.json
имени vs just config.json
) — то есть http://localhost:8001/config.json . Это, очевидно, было бы неправильно, как и должно быть http://localhost:8001/api/v1/proxy/namespaces/default/services/zipkin-http/config.json
Для этого есть очень простое решение — просто запустите:
kubectl port-forward <name of the pod> 9411
Теперь просто перейдите к http://localhost:9411 и пользовательский интерфейс должен быть запущен (опробован и проверен).
Вы можете получить имя модуля, выполнив kubectl get pods
PS: kubectl proxy
обычно предназначен для доступа к API Kubernetes и kube port-forward
является правильным инструментом в этом случае.
Комментарии:
1. Спасибо! В итоге я сделал что-то вроде этого, поэтому мне не нужно было заранее знать имя модуля (хотя для этого может быть лучший способ): kubectl port-forward $ (kubectl get pods -l «run=zipkin» -o ‘jsonpath={.items[*] .metadata.name }’) 9411