Команда istio для отображения зарегистрированных сервисов во внутреннем реестре сервисов - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь перечислить список служб, которые присутствуют во внутреннем реестре служб istio. Тем не менее, не удалось сделать это, более конкретно, подробности, добавленные записи службы. Кто-нибудь знает команду istioctl для вывода списка служб? Ref- https://istio.io/docs/reference/commands/istioctl/

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Подробная документация Страница о командах, которые это делают.

Команда proxy-status позволяет вам получить обзор вашего me sh. Если вы подозреваете, что один из ваших колясок не получает конфигурацию или не синхронизирован c, прокси-статус сообщит вам об этом.

$ istioctl proxy-status
PROXY                                                  CDS        LDS        EDS               RDS          PILOT                            VERSION
details-v1-6dcc6fbb9d-wsjz4.default                    SYNCED     SYNCED     SYNCED     SYNCED       istio-pilot-75bdf98789-tfdvh     1.1.2
istio-egressgateway-c49694485-l9d5l.istio-system       SYNCED     SYNCED     SYNCED     NOT SENT     istio-pilot-75bdf98789-tfdvh     1.1.2
istio-ingress-6458b8c98f-7ks48.istio-system            SYNCED     SYNCED     SYNCED     NOT SENT     istio-pilot-75bdf98789-n2kqh     1.1.2
istio-ingressgateway-7d6874b48f-qxhn5.istio-system     SYNCED     SYNCED     SYNCED     SYNCED       istio-pilot-75bdf98789-n2kqh     1.1.2
productpage-v1-6c886ff494-hm7zk.default                SYNCED     SYNCED     SYNCED     STALE        istio-pilot-75bdf98789-n2kqh     1.1.2
ratings-v1-5d9ff497bb-gslng.default                    SYNCED     SYNCED     SYNCED     SYNCED       istio-pilot-75bdf98789-n2kqh     1.1.2
reviews-v1-55d4c455db-zjj2m.default                    SYNCED     SYNCED     SYNCED     SYNCED       istio-pilot-75bdf98789-n2kqh     1.1.2
reviews-v2-686bbb668-99j76.default                     SYNCED     SYNCED     SYNCED     SYNCED       istio-pilot-75bdf98789-tfdvh     1.1.2
reviews-v3-7b9b5fdfd6-4r52s.default                    SYNCED     SYNCED     SYNCED     SYNCED       istio-pilot-75bdf98789-n2kqh     1.1.2

Если прокси-сервер отсутствует в этом списке, это означает, что он В настоящее время не подключен к экземпляру Istiod, поэтому не будет получать никакой конфигурации.

  • SYNCED означает, что посланник подтвердил последнюю конфигурацию, которую Istiod отправил ему.
  • NOT SENT означает, что Истиод ничего не послал посланнику. Обычно это происходит потому, что Истиоду нечего отправлять.
  • STALE означает, что Истиод отправил обновление Посланнику, но не получил подтверждения. Обычно это указывает на проблему с сетью между Envoy и Istiod или ошибку с самим Istio.

Существует также аналогичная команда istioctl proxy-config, которую можно использовать, чтобы увидеть, как настроен данный экземпляр Envoy. , Более подробная информация также содержится в той же документации страница .

Надеюсь, что это поможет.


ОБНОВЛЕНИЕ:

В в случае ServiceEntry на пилотном компьютере есть конечная точка отладки:

localhost:8080/debug/registryz

Для получения дополнительной информации о том, как ее использовать, взгляните на эту страницу документации .

пример :

kubectl exec $POD -c istio-proxy -- curl 'localhost:8080/debug/registryz' > service_registry

Надеюсь, это поможет.

0 голосов
/ 27 апреля 2020

Я не нашел способа получить содержимое реестра Istio в удобной форме, используя istioctl, но это достижимо, используя несколько иной подход.

Петр Мужской c был прав (пожалуйста, подумайте и об отзыве его ответа), интерфейс отладки Pilot может предоставить список, который вы упомянули в вопросе. И запрос к Istio Pilot может быть отправлен с помощью любой коляски Поса Под. Оба порта действительны для запроса: 15014 и 8080 и дают одинаковый результат.

Для этого примера я использую собственную коляску посланника Pilot. Я также использую на своем компьютере jq для получения имен служб из ответа JSON.

Представьте, что у нас есть три ServiceEntry в кластере:

$ kubectl get serviceentry 
NAME               HOSTS                             LOCATION        RESOLUTION   AGE
httpbin            [httpbin.org]                                     DNS          18d
httpbin-com-ext    [httpbin.org]                     MESH_EXTERNAL   DNS          22d
wikipedia-org-se   [wikipedia.org *.wikipedia.org]   MESH_EXTERNAL   NONE         22d

Следующая последовательность из команд дает нам список служб, включая службы, определенные ServiceEntry объектами:

# create a shortcut to Istio Pilot pod
$ PILOT=$(kubectl get -A pods --selector=istio=pilot -o jsonpath='{.items[*].metadata.name}')
# Create shortcut to Istio Pilot namespace
$ PILOT_NS=$(kubectl get -A pods --selector=istio=pilot -o jsonpath='{.items[*].metadata.namespace}')

# Get the list of services in Istio mesh and filter their names using jq
$ kubectl exec $PILOT -n $PILOT_NS -c discovery -- curl -s 'localhost:15014/debug/registryz' | jq '.[].hostname'
    # or
$ kubectl exec $PILOT -n $PILOT_NS -c istio-proxy -- curl -s 'localhost:15014/debug/registryz' | jq '.[].hostname'

Вывод:
(обратите внимание на последние несколько записей.)

"ingress-nginx.ingress-nginx.svc.cluster.local"
"istio-citadel.istio-system.svc.cluster.local"
"istio-egressgateway.istio-system.svc.cluster.local"
"istio-galley.istio-system.svc.cluster.local"
"istio-ingressgateway.istio-system.svc.cluster.local"
"istio-pilot.istio-system.svc.cluster.local"
"istio-policy.istio-system.svc.cluster.local"
"istio-sidecar-injector.istio-system.svc.cluster.local"
"istio-telemetry.istio-system.svc.cluster.local"
"kube-dns.kube-system.svc.cluster.local"
"kubernetes.default.svc.cluster.local"
"kubernetes.test.svc.cluster.local"
"metrics-server.metrics.svc.cluster.local"
"productpage.default.svc.cluster.local"
"prometheus.istio-system.svc.cluster.local"
"ratings.default.svc.cluster.local"
"reviews.default.svc.cluster.local"
"httpbin.org"
"httpbin.org"
"wikipedia.org"
"*.wikipedia.org"

Вы можете найти больше информации о обработчиках отладки на странице Istio github:

...