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

0
Yogesh Jilhawar 22 Апр 2020 в 06:24

2 ответа

Лучший ответ

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

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

$ 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 означает, что посланник подтвердил последнюю конфигурацию, отправленную ему Истиодом.
  • NOT SENT означает, что Истиод ничего не отправил посланнику. Обычно это происходит потому, что Истиоду нечего отправить.
  • STALE означает, что Istiod отправил обновление посланнику, но не получил подтверждение. Обычно это указывает на проблему с сетью между Envoy и Istiod или на ошибку самого Istio.

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

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


< Сильный > UPDATE :

В случае ServiceEntry на пилот-сигнале существует конечная точка отладки:

localhost:8080/debug/registryz

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

Пример:

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

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

1
Piotr Malec 23 Апр 2020 в 16:27

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

Piotr Malec был прав (пожалуйста, подумайте и об отзыве его ответа), интерфейс отладки 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:

0
VAS 27 Апр 2020 в 06:34