开始使用 Jaeger 构建 Istio 服务网格
服务网格以透明的方式为服务到服务的通信提供专用网络。Istio旨在帮助开发人员和运营商解决服务网格功能,例如动态服务发现、相互传输层安全 (TLS)、断路器、速率限制和跟踪。Jaeger与 Istio 增强了对分布式网络系统上云原生应用程序的监控和跟踪。本文介绍如何开始使用 Jaeger 在 Kubernetes 平台上构建 Istio 服务网格。 启动 Kubernetes 集群 Minikub
服务网格以透明的方式为服务到服务的通信提供专用网络。Istio旨在帮助开发人员和运营商解决服务网格功能,例如动态服务发现、相互传输层安全 (TLS)、断路器、速率限制和跟踪。Jaeger与 Istio 增强了对分布式网络系统上云原生应用程序的监控和跟踪。本文介绍如何开始使用 Jaeger 在 Kubernetes 平台上构建 Istio 服务网格。
启动 Kubernetes 集群
Minikube允许您在本地机器上运行基于虚拟机的单节点 Kubernetes 集群,例如KVM、VirtualBox或 zwz10037w HyperKit zw0z50。安装 Minikube并使用以下 shell 脚本运行它:
#!/bin/bash
导出 MINIKUBE_PROFILE_NAME\u003distio-jaeger
minikube 配置文件 $MINIKUBE_PROFILE_NAME
minikube 配置集 cpus 3
minikube 配置设置内存 8192
# 你需要在本地机器上更换合适的虚拟机驱动
minikube 配置集 vm-driver hyperkit
启动 minikube
更多关于 Kubernetes
-
什么是 Kubernetes?
-
电子书:Kubernetes 的存储模式
-
试驾 OpenShift 上手
-
电子书:Kubernetes 入门
-
企业级Kubernetes介绍
-
如何通俗地解释 Kubernetes
-
电子书:在 Raspberry Pi 家庭实验室上运行 Kubernetes
-
Kubernetes 备忘单
-
电子书:面向 SRE 和系统管理员的 Kubernetes 指南
-
Kubernetes 最新文章
在上述脚本中,将 --vm-driveru003dxxx 选项替换为您的操作系统 (OS) 上的相应虚拟机驱动程序。
使用 Jaeger 部署 Istio 服务网格
从Istio 发布页面下载适用于您操作系统的 Istio 安装文件。在 Istio 包目录中,您将在 install/ 中找到 Kubernetes 安装 YAML 文件,在 sample/ 中找到示例应用程序。使用以下命令:
$ curl -L https://git.io/getLatestIstio |嘘——
$ kd web-1.0.5
$ 出口路径u003d$PWD/bin:$PATH
在 Kubernetes 集群上使用 Jaeger 部署 Istio 的最简单方法是使用自定义资源定义。使用以下命令安装 Istio,并在 Sidecar 之间进行双向 TLS 身份验证:
$ kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml
$ kubectl apply -f install/kubernetes/istio-demo-auth.yaml
使用以下命令检查 Kubernetes 集群上的所有 Istio pod 是否已部署并正确运行并查看输出:
$ kubectl 获取 pods -n istio-system
姓名 准备好 状态 重新开始年龄
房间
istio-citadel-856f994c58-tk8kq 1/1 运行 0 3h
istio-cleanup-secrets-mq54t 0/1 已完成 0 3h
istio-egressgateway-5649fcf57-n5ql5 1/1 运行 0 3h
istio-galley-7665f65c9c-wx8k7 1/1 运行 0 3h
istio-grafana-post-install-nh5rw 0/1 已完成 0 3h
istio-ingressgateway-6755b9bbf6-4lf8m 1/1 运行 0 3h
istio-pilot-698959c67b-d2zgm 2/2 运行中 0 3h
istio-policy-6fcb6d655f-lfkm5 2/2 运行 0 3h
istio-security-post-install-st5xc 0/1 已完成 0 3h
istio-sidecar-injector-768c79f7bf-9rjgm 1/1 运行 0 0 3h
istio-telemetry-664d896cf5-wwcfw 2/2 运行 0 3h
istio-tracing-6b994895fd-h6s9h 1/1 运行 0 3h
prometheus-76b7745b64-hzm27 1/1 运行 0 3h
servicegraph-5c4485945b-mk22d 1/1 正在运行 1 3h
构建示例微服务应用程序
您可以使用Bookinfo应用程序来了解 Istio 的功能。 Bookinfo 由四个微服务应用组成:productpage、details、reviews 和_ratings_ 独立部署在 Minikube 上。每个微服务都将通过 Istio 使用以下命令与 Envoy sidecar 一起部署:
// 自动启用 sidecar 注入
$ kubectl 标签命名空间默认 istio-injectionu003denabled
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
// 导出入口 IP、端口和网关 URL
$ kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
$ export INGRESS_PORTu003d$(kubectl -n istio-system get service istio-ingressgateway -o jsonpathu003d'{.spec.ports[?(@.nameu003du003d"http2")].nodePort}')
$ export SECURE_INGRESS_PORTu003d$(kubectl -n istio-system get service istio-ingressgateway -o jsonpathu003d'{.spec.ports[?(@.nameu003du003d"https")].nodePort}' )
$ export INGRESS_HOSTu003d$(minikube ip)
$ 出口网关_URLu003d$INGRESS_HOST:$INGRESS_PORT
访问 Jaeger 仪表板
要查看每个 HTTP 请求的跟踪信息,请通过在命令行中运行以下命令来创建一些流量:
$虽然是真的;做
curl -s http://${GATEWAY_URL}/productpage > /dev/null
回声 -n .;
睡眠 0.2
完毕
如果您按如下方式设置端口转发,则可以通过 web 浏览器使用http://localhost:16686访问 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。最后,此功能可帮助开发人员和运营商更轻松、更快速地进行大规模故障排除。
更多推荐
所有评论(0)