Пользовательский интерфейс Azure Kubernetes — Jaeger не показывает службу, развернутую как часть ISTIO?

#kubernetes #istio #azure-aks #jaeger

#kubernetes #istio #azure-aks #jaeger

Вопрос:

Я использовал следующую конфигурацию для настройки Istio

 cat << EOF | kubectl apply -f -
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
  namespace: istio-system
  name: istio-control-plane
spec:
  # Use the default profile as the base
  # More details at: https://istio.io/docs/setup/additional-setup/config-profiles/
  profile: default
  # Enable the addons that we will want to use
  addonComponents:
    grafana:
      enabled: true
    prometheus:
      enabled: true
    tracing:
      enabled: true
    kiali:
      enabled: true
  values:
    global:
      # Ensure that the Istio pods are only scheduled to run on Linux nodes
      defaultNodeSelector:
        beta.kubernetes.io/os: linux
    kiali:
      dashboard:
        auth:
          strategy: anonymous
  components:
    egressGateways:
    - name: istio-egressgateway
      enabled: true
EOF
  

и предоставил службу запросов jaeger, как указано ниже

 kubectl expose service jaeger-query  --type=LoadBalancer --name=jaeger-query-svc --namespace istio-system
kubectl get svc jaeger-query-svc -n istio-system -o json
export JAEGER_URL=$(kubectl get svc jaeger-query-svc -n istio-system  -o jsonpath="{.status.loadBalancer.ingress[0]['hostname','ip']}"):$(kubectl get svc jaeger-query-svc -n istio-system -o 'jsonpath={.spec.ports[0].port}')
echo http://${JAEGER_URL}
curl http://${JAEGER_URL}
  

Я не смог увидеть развернутое приложение в Jaeger

введите описание изображения здесь

и развернули приложение, как указано ниже

 cat << EOF | kubectl apply -f -
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: akv2k8s-test
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: stenote/nginx-hostname
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: web
  namespace: akv2k8s-test
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
EOF

cat <<EOF | kubectl apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: public-gateway
  namespace: akv2k8s-test
spec:
  selector:
    istio: ingressgateway # use istio default ingress gateway
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    tls:
      mode: SIMPLE
      credentialName: "${KEY_CERT2_NAME}"
    hosts:
    - web.zaalion.com
EOF


cat <<EOF | kubectl apply -f -
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: helloworld
  namespace: akv2k8s-test
spec:
  hosts:
    - web.zaalion.com
  gateways:
    - public-gateway
  http:
    - route:
      - destination:
          host: web.akv2k8s-test.svc.cluster.local
          port:
            number: 80
EOF
  

Я мог бы получить доступ к службе, как показано ниже

 export EXTERNAL_IP=$(kubectl get svc istio-ingressgateway -n istio-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

curl -v --resolve web.zaalion.com:443:$EXTERNAL_IP --cacert cert2.crt https://web.zaalion.com
  

Я знаю, почему служба не указана в пользовательском интерфейсе Jaeger?

Комментарии:

1.Согласно документации To see trace data, you must send requests to your service. The number of requests depends on Istio’s sampling rate. You set this rate when you install Istio. The default sampling rate is 1%. You need to send at least 100 requests before the first trace is visible. istio, не могли бы вы попытаться отправить не менее 100 запросов и проверить, работает ли это?

2. Спасибо за информацию, есть ли какой-либо способ уменьшить это ограничение?

Ответ №1:

Согласно документации istio

Чтобы просмотреть данные трассировки, вы должны отправлять запросы в свою службу. Количество запросов зависит от частоты дискретизации Istio. Вы устанавливаете эту скорость при установке Istio. Частота дискретизации по умолчанию составляет 1%. Необходимо отправить не менее 100 запросов, прежде чем будет видна первая трассировка. Не могли бы вы попробовать отправить хотя бы 100 запросов и проверить, работает ли это?

Если вы не хотите изменять частоту дискретизации по умолчанию, об этом есть документация istio.

Настройка выборки трассировки

Параметр частоты выборки можно использовать для управления тем, какой процент запросов передается в вашу систему отслеживания. Это должно быть настроено в зависимости от вашего трафика в сетке и объема данных отслеживания, которые вы хотите собрать. Коэффициент по умолчанию равен 1%.

Чтобы изменить случайную выборку по умолчанию на 50, добавьте в трассировку следующий параметр.файл yaml.

 apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    defaultConfig:
      tracing:
        sampling: 50
  

Частота дискретизации должна быть в диапазоне от 0.0 до 100.0 с точностью до 0.01. Например, чтобы отслеживать 5 запросов из каждых 10000, используйте 0,05 в качестве значения здесь.