监控
先决条件
部署prometheus kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.8/samples/addons/prometheus.yaml
该任务假定Bookinfo示例将部署在default 名称空间中。如果使用其他名称空间,请更新示例配置和命令。
收集新的指标数据
设置Bookinfo以使用MongoDB。
安装v2了的ratings服务。
如果使用启用了自动边车注入的集群,请使用kubectl以下命令部署服务:
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-ratings-v2.yaml serviceaccount/bookinfo-ratings-v2 created deployment.apps/ratings-v2 created
如果使用手动边车注入,请改为运行以下命令:
$ kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo-ratings-v2.yaml) deployment "ratings-v2" configured
安装mongodb服务:
如果使用启用了自动边车注入的集群,请使用kubectl以下命令部署服务:
$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-db.yaml
service/mongodb created
deployment.apps/mongodb-v1 created
如果使用手动边车注入,请改为运行以下命令:
$ kubectl apply -f <(istioctl kube-inject -f samples/bookinfo/platform/kube/bookinfo-db.yaml)
service "mongodb" configured
deployment "mongodb-v1" configured
Bookinfo示例部署了每个微服务的多个版本,因此首先创建目标规则,以定义与每个版本相对应的服务子集以及每个子集的负载均衡策略。
$ kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
如果启用了双向TLS,请改为运行以下命令:
$ kubectl apply -f samples/bookinfo/networking/destination-rule-all-mtls.yaml
要显示目标规则,请运行以下命令:
$ kubectl get destinationrules -o yaml
在添加引用这些子集的虚拟服务之前,请等待几秒钟,以便目标规则传播,因为虚拟服务中的子集引用依赖于目标规则。
创建ratings和reviews虚拟服务:
$ kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-db.yaml
virtualservice.networking.istio.io/reviews created
virtualservice.networking.istio.io/ratings created
将流量发送到示例应用程序。
对于Bookinfo示例,请http://$GATEWAY_URL/productpage在您的Web浏览器中访问或使用以下命令:
$ curl http://"$GATEWAY_URL/productpage"
$GATEWAY_URL是在Bookinfo示例中设置的值。 验证是否正在生成和收集TCP度量标准值。
在Kubernetes环境中,使用以下命令为Prometheus设置端口转发:
$ istioctl dashboard prometheus
在Prometheus浏览器窗口中查看TCP度量的值。选择图。输入istio_tcp_connections_opened_total指标或,istio_tcp_connections_closed_total然后选择执行。"控制台"选项卡中显示的表 包含类似于以下内容的条目:
istio_tcp_connections_opened_total{
destination_version="v1",
instance="172.17.0.18:42422",
job="istio-mesh",
canonical_service_name="ratings-v2",
canonical_service_revision="v2"}
istio_tcp_connections_closed_total{
destination_version="v1",
instance="172.17.0.18:42422",
job="istio-mesh",
canonical_service_name="ratings-v2",
canonical_service_revision="v2"}
了解TCP遥测收集
在此任务中,您使用Istio配置来自动生成并报告针对网格中TCP服务的所有流量的度量。15s默认情况下,每个活动连接的TCP度量标准都会默认记录一次,并且可以通过设置此计时器tcpReportingDuration。连接的指标也记录在连接的末尾。
tcp属性
几个特定于TCP的属性可在Istio中启用TCP策略和控制。这些属性由Envoy代理生成,并使用Envoy的Node Metadata从Istio获得。Envoy使用基于ALPN的隧道和基于前缀的协议将节点元数据转发给对等Envoy。我们定义了一个新协议istio-peer-exchange,该协议由网状网络中的客户端和服务器边车广告并确定优先级。ALPN协商将协议解析istio-peer-exchange为启用Istio的代理之间的连接,但不解析为启用Istio的代理与任何其他代理之间的连接。该协议对TCP的扩展如下:
作为第一个字节序列,TCP客户端发送一个魔术字节字符串和一个长度为前缀的有效负载。
TCP服务器作为第一个字节序列,发送一个魔术字节序列和一个长度为前缀的有效负载。这些有效载荷是protobuf编码的序列化元数据。
客户端和服务器可以同时写入并且顺序混乱。然后,Envoy中的扩展过滤器在下游和上游进行进一步处理,直到魔术字节序列不匹配或读取整个有效负载为止。
清理
删除port-forward过程:
$ killall istioctl
Last updated
Was this helpful?