Конечная точка метрик не работает при развертывании микросервиса на базе Ballerina в Кубернетесе - PullRequest
2 голосов
/ 24 октября 2019

У меня в Балерине реализован микросервис. Всякий раз, когда я развертываю службу, используя следующую команду, на моем локальном компьютере ballerina run --observe [name_of_the_file].bal я получаю metrics endpoint, сопоставленный с портом 9797. То есть curl localhost:9797/metrics дает метрики сервера в качестве ответа.

Даже когда я развернул вышеупомянутую службу в среде Docker , я получил те же результаты. Но когда я развернул его в Kubernetes (в GoogleCloudPlatform), мне не удалось сопоставить метрики с портом 9797.

kubectl logs [pod_name] дает следующий вывод.

Initiating service(s) in 'ballerina-prime.balx'
[ballerina/http] started HTTP/WS endpoint 0.0.0.0:8688

Может ли кто-нибудь помочь мне сопоставить показатели с портом 9797?

Dockerfile

FROM ballerina/ballerina:0.991.0
COPY ballerina-prime.balx /home/ballerina
EXPOSE 8688 
EXPOSE 9797
CMD ballerina run --observe ballerina-prime.balx

ballerina-prime.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ballerina-prime
  labels:
    app: ballerina-prime
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ballerina-prime
  template:
    metadata:
      labels:
        app: ballerina-prime
    spec:
      containers:
      - name: ballerina-prime
        image: anushiya/ballerina-prime:v3
        resources:
            limits:
                cpu: "100m"
            requests:
                cpu: "100m"
        ports:
        - containerPort: 8688
          name: echo-service
        - containerPort: 9797
          name: metrics

Ответы [ 2 ]

1 голос
/ 27 октября 2019

Ваш контейнер в чистой среде докера будет работать так же в kubernetes. На самом деле, GKE работает поверх докера. Если вы выполните exec в модуле, вы сможете получить доступ к метрикам на том же порту:

kubectl exec [pod_name] - curl localhost: 9797 / metrics

Учитывая, что вы используете одно и то же изображение, и у вашего pod.spec был открыт порт 9797, я не понимаю, почему у вас должны быть проблемы с avril, несмотря на потерю, связанную с привязкой к порту 8688

1 голос
/ 24 октября 2019

В качестве теста я выполнил запрос curl в узле Kubernetes. Сначала найдите podIP с помощью следующей команды:

kubectl get pods -l app=ballerina-prime -o yaml | grep podIP 

app = [nameOfThePod]. Вы можете использовать облачную оболочку для получения Pod IP.

-Следующие шаги:

Поскольку вы используете GKE (Kubernetes) на Google Cloud Platform, перейдите к Compute Engine и SSH к одному изузлы GKE. Оказавшись внутри, запустите запрос curl, используя podIP IP @ gke-deploybuild-default-pool-f3c9c9aa-fkx5 ~ $ curl -i http://10.60.2.10:9797/metrics

HTTP/1.1 200 OK
content-type: text/plain
content-length: 1060
server: ballerina/0.991.0
date: Thu, 24 Oct 2019 18:19:29 GMT

-External:

Очевидно, вы не захотите получать к нему доступ с узла GKE, здесь вступают в игру балансировщики нагрузки.

Перейдите к GKE и в рабочих нагрузках выберите рабочую нагрузку балерины. В меню выберите «Действия» и «Выставить». Здесь вы можете установить номер порта и выбрать «балансировщик нагрузки» в качестве типа сервиса:

Меню> Kubernetes Engine> Рабочие нагрузки> «Балерина»> Действия> Экспонировать> Тип сервиса: Балансировщик нагрузки.

Перейдите к разделу «Услуги и доступ», и, как только балансировщик нагрузки будет завершен, вы увидите конечные точки с выбранным номером порта (в данном случае 9797). IP с конечной точкой / metrics должен работать.

Смотрите ссылки: 1 3

...