服务网格以透明的方式为服务到服务的通信提供专用网络。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 由四个微服务应用组成:productpagedetailsreviews 和_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 中查找踪迹

您还可以通过单击某个跟踪来查看有关每个跟踪的更多详细信息,以深入了解性能问题或经过的时间。

查看跟踪的详细信息

结论

分布式跟踪平台使您可以了解各个入口/出口流量从服务到服务所发生的情况。即使您的现代应用程序根本不知道 Jaeger,Istio 也会自动将单个跟踪信息发送到分布式跟踪平台 Jaeger。最后,此功能可帮助开发人员和运营商更轻松、更快速地进行大规模故障排除。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐