索引总目录:istio从入门到放弃系列
nginx
一、介绍
api
Istio 故障注入与其余在网络层引入错误(例如延迟数据包或者直接杀死 Pod)的机制不一样,Istio 容许在应用程序层注入故障。这使得能够注入更多相关的故障,好比 HTTP 错误代码等。
bash
Istio 能够注入两种类型的故障,而这两种故障都是使用虚拟服务来配置的:网络
延迟:模拟增长网络延迟或上游服务过载。
app停止:模拟服务故障而致使调用服务不可用。停止一般以 HTTP 错误代码或 TCP 链接失败表示
ide
二、故障延迟
spa
2.1 客户端资源
orm
apiVersion: apps/v1 kind: Deployment metadata: name: client spec: replicas: 1 selector: matchLabels: app: client template: metadata: labels: app: client spec: containers: - name: busybox image: busybox imagePullPolicy: IfNotPresent command: [ "/bin/sh", "-c", "sleep 3600" ]
部署并使用istio注入,最终获得如下server
2.2 服务端资源blog
apiVersion: v1 kind: Service metadata: name: nginx-svc spec: selector: server: nginx ports: - name: http port: 80 targetPort: 80 protocol: TCP --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: server: nginx spec: replicas: 1 selector: matchLabels: server: nginx template: metadata: labels: server: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent
2.3 虚拟服务
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: test-vs spec: hosts: - nginx-svc http: - fault: delay: percentage: value: 100 fixedDelay: 10s route: - destination: host: nginx-svc
三、验证故障注入
进入客户端容器中,访问nginx服务
kubectl exec -it client-8496866cdf-vkmcw /bin/sh
wget -q -O - http://nginx-svc
能够看出时间延迟在十多秒,加上操做时间,和上面设置的时间是吻合的。
四、故障停止
修改虚拟服务文件
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: test-vs spec: hosts: - nginx-svc http: - fault: abort: percentage: value: 100 httpStatus: 503 route: - destination: host: nginx-svc
五、再次进入客户端验证
kubectl exec -it client-8496866cdf-vkmcw /bin/sh
wget -q -O - http://nginx-svc