#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 в качестве значения здесь.