0

我是 Istio 的新手。

我的问题是如何检测已经在 istio 中运行的服务中的故障?

如果出现故障,如何定义新版本服务的特定流量百分比?

谢谢。

4

1 回答 1

1

我推荐使用 Kiali。Kiali 通过监控流量和报告来帮助您了解服务网格的结构和健康状况。

Kiali 是基于 Istio 的服务网格的管理控制台。它提供仪表板、可观察性,并允许您使用强大的配置和验证功能来操作您的网格。它通过推断流量拓扑来显示服务网格的结构并显示网格的运行状况。Kiali 提供详细的指标、强大的验证、Grafana 访问以及与 Jaeger 的分布式跟踪的强大集成。

安装 Kiali 的详细文档可以在安装指南中找到。


我创建了一个简单的示例来演示 Kiali 的实用性。

首先,我创建了一个db-app具有两个可用版本 (v1v2) 的应用程序,并使用单个服务公开它:

# cat db-app.yml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: db-app
  name: db-app
  namespace: default
spec:
  ipFamilies:
  - IPv4
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: db-app
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: db-app
    version: v1
  name: db-app-v1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: db-app
      version: v1
  template:
    metadata:
      labels:
        app: db-app
        version: v1
    spec:
      containers:
      - image: nginx
        name: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: db-app
    version: v2
  name: db-app-v2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: db-app
      version: v2
  template:
    metadata:
      labels:
       app: db-app
       version: v2       
    spec:
      containers:
      - image: nginx
        name: nginx


# kubectl apply -f db-app.yml 
service/db-app created
deployment.apps/db-app-v1 created
deployment.apps/db-app-v2 created

# kubectl get pod,svc
NAME                             READY   STATUS    RESTARTS   AGE
pod/db-app-v1-59c8fb999c-bs47s   2/2     Running   0          39s
pod/db-app-v2-56dbf4c8d6-q24vm   2/2     Running   0          39s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/db-app       ClusterIP   10.102.36.142   <none>        80/TCP    39s

此外,为了说明我们如何拆分流量,我为db-app应用程序生成了一些流量:

# kubectl run test-traffic --image=nginx 
pod/test-traffic created
# kubectl exec -it test-traffic -- bash
root@test-traffic:/# for i in $(seq 1 100000); do curl 10.102.36.142; done
...

现在在Kiali UI部分中,Graph我们可以看到流量: 在此处输入图像描述



在该Services部分中,我们可以使用流量转移向导轻松地在不同版本之间拆分流量:v1注意详细教程可以在 Kiali流量转移教程中找到。 v2
在此处输入图像描述

我们还可以监控我们的应用程序的状态。例如,我打破了v1版本:

# kubectl set image deployment/db-app-v1 nginx=nnnginx
deployment.apps/db-app-v1 image updated

在 Kiali UI 中,我们看到v1版本中的错误: 在此处输入图像描述

我建议您阅读Kali 官方教程以了解 Kali 的全部功能。

于 2021-07-12T11:16:23.607 回答