本文共 4172 字,大约阅读时间需要 13 分钟。
istio jaeger
为服务之间的通信提供了透明的专用网络。 旨在帮助开发人员和运营商解决服务网格功能,例如动态服务发现,相互传输层安全性(TLS),断路器,速率限制和跟踪。 与Istio一起增强了对分布式网络系统上的云原生应用程序的监视和跟踪。 本文介绍了如何开始使用Jaeger在Kubernetes平台上构建Istio服务网格。
允许您在本地计算机上基于虚拟机(例如 , 或运行单节点Kubernetes集群。 并使用以下shell脚本运行它:
#!/bin/bash export MINIKUBE_PROFILE_NAME =istio-jaeger minikube profile $MINIKUBE_PROFILE_NAME minikube config set cpus 3 minikube config set memory 8192 # You need to replace appropriate VM driver on your local machine minikube config set vm-driver hyperkit minikube start
在以上脚本中,将--vm-driver = xxx选项替换为操作系统(OS)上的相应虚拟机驱动程序。
从下载适用于您的OS的Istio安装文件。 在Istio软件包目录中,您可以在install /中找到Kubernetes安装YAML文件,并在sample /中找到示例应用程序。 使用以下命令:
$ curl -L https://git.io/getLatestIstio | sh - $ cd istio-1.0.5 $ export PATH=$PWD/bin:$PATH
在Kubernetes群集上使用Jaeger部署Istio的最简单方法是使用 。 使用以下命令在Sidecar之间使用相互TLS身份验证安装Istio:
$ kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml $ kubectl apply -f install/kubernetes/istio-demo-auth.yaml
使用以下命令检查Kubernetes群集上Istio的所有Pod是否已部署并正常运行,并查看输出:
$ kubectl get pods -n istio-system NAME READY STATUS RESTARTS AGE grafana-59b8896965-p2vgs 1/1 Running 0 3h istio-citadel-856f994c58-tk8kq 1/1 Running 0 3h istio-cleanup-secrets-mq54t 0/1 Completed 0 3h istio-egressgateway-5649fcf57-n5ql5 1/1 Running 0 3h istio-galley-7665f65c9c-wx8k7 1/1 Running 0 3h istio-grafana-post-install-nh5rw 0/1 Completed 0 3h istio-ingressgateway-6755b9bbf6-4lf8m 1/1 Running 0 3h istio-pilot-698959c67b-d2zgm 2/2 Running 0 3h istio-policy-6fcb6d655f-lfkm5 2/2 Running 0 3h istio-security-post-install-st5xc 0/1 Completed 0 3h istio-sidecar-injector-768c79f7bf-9rjgm 1/1 Running 0 3h istio-telemetry-664d896cf5-wwcfw 2/2 Running 0 3h istio-tracing-6b994895fd-h6s9h 1/1 Running 0 3h prometheus-76b7745b64-hzm27 1/1 Running 0 3h servicegraph-5c4485945b-mk22d 1/1 Running 1 3h
您可以使用应用了解Istio的功能。 Bookinfo由四个微服务应用程序组成: 产品页面 , 详细信息 , 评论和评级分别部署在Minikube上。 使用以下命令,将通过Istio在Envoy边车中部署每个微服务:
// Enable sidecar injection automatically $ kubectl label namespace default istio-injection=enabled $ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml // Export the ingress IP, ports, and gateway URL $ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml $ export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}') $ export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}') $ export INGRESS_HOST=$(minikube ip) $ export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
要查看每个HTTP请求的跟踪信息,请通过在命令行中运行以下命令来创建一些流量:
$ while true; do curl -s http://${GATEWAY_URL}/productpage > /dev/null echo -n .; sleep 0.2 done
如果您按照以下方式设置端口转发,则可以使用通过Web浏览器访问Jaeger仪表板:
kubectl port-forward -n istio-system $(kubectl get pod -n istio-system -l app=jaeger -o jsonpath='{.items[0].metadata.name}') 16686:16686 &
您可以在选择productpage服务后单击“查找迹线”来浏览所有迹线。 您的仪表板将类似于以下内容:
您还可以通过单击某个跟踪来查看有关每个跟踪的更多详细信息,以挖掘性能问题或经过的时间。
分布式跟踪平台使您可以了解各个入口/出口流量因服务而发生的情况。 即使您的现代应用程序根本不了解Jaeger,Istio也会自动将单独的跟踪信息发送到分布式跟踪平台Jaeger。 最后,此功能可帮助开发人员和操作员更轻松,更快速地进行故障排除。
翻译自:
istio jaeger
转载地址:http://otbzd.baihongyu.com/