故障注入 - 延迟和中止在 Istio 中不起作用
Fault Injection - delays and aborts not working in Istio
我已经将 Istio 配置为 delay/abort http-traffic 30 秒到我的目录服务,但是当我刷新我的页面时,目录显示没有任何延迟。
这是 Google 的 GKE 中的设置。我正在使用 sock-shop 演示来测试 Istio 功能的几个方面。
我当前的设置如下:这是我的包含所有服务和部署的 yaml 文件(简称为 Catalog 和使用目录的前端的配置):
#################################################
# Catalogue-db
#################################################
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: catalogue-db-v1
labels:
name: catalogue-db
version: v1
namespace: sock-shop
spec:
replicas: 1
template:
metadata:
labels:
name: catalogue-db
version: v1
spec:
containers:
- name: catalogue-db
image: weaveworksdemos/catalogue-db:0.3.0
env:
- name: MYSQL_ROOT_PASSWORD
value: fake_password
- name: MYSQL_DATABASE
value: socksdb
ports:
- name: mysql
containerPort: 3306
nodeSelector:
beta.kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
name: catalogue-db
labels:
name: catalogue-db
namespace: sock-shop
spec:
ports:
# the port that this service should serve on
- port: 3306
targetPort: 3306
selector:
name: catalogue-db
---
######################################################
#Catalogue
######################################################
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: catalogue
labels:
name: catalogue
version: v1
namespace: sock-shop
spec:
replicas: 1
template:
metadata:
labels:
name: catalogue
version: v1
spec:
containers:
- name: catalogue
image: weaveworksdemos/catalogue:0.3.5
ports:
- containerPort: 80
securityContext:
runAsNonRoot: true
runAsUser: 10001
capabilities:
drop:
- all
add:
- NET_BIND_SERVICE
readOnlyRootFilesystem: true
nodeSelector:
beta.kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
name: catalogue
labels:
name: catalogue
namespace: sock-shop
spec:
ports:
# the port that this service should serve on
- port: 80
name: http-catalogue
targetPort: 80
selector:
name: catalogue
---
##############################################
# Front-End
##############################################
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: front-end-v1
labels:
name: front-end
version: v1
namespace: sock-shop
spec:
replicas: 1
template:
metadata:
labels:
name: front-end
version: v1
spec:
containers:
- name: front-end
image: weaveworksdemos/front-end:0.3.12
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 8079
securityContext:
runAsNonRoot: true
runAsUser: 10001
capabilities:
drop:
- all
readOnlyRootFilesystem: true
nodeSelector:
beta.kubernetes.io/os: linux
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: front-end-v2
labels:
name: front-end
version: v2
namespace: sock-shop
spec:
replicas: 1
template:
metadata:
labels:
name: front-end
version: v2
spec:
containers:
- name: front-end
image: vinayakinfrac/front-end:0.3.12
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 8079
securityContext:
runAsNonRoot: true
runAsUser: 10001
capabilities:
drop:
- all
readOnlyRootFilesystem: true
nodeSelector:
beta.kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
name: front-end
labels:
name: front-end
namespace: sock-shop
spec:
type: NodePort
ports:
- port: 80
targetPort: 8079
name: http-front-end
nodePort: 30001
selector:
name: front-end
这是我目录的目的地规则:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: catalogue
namespace: sock-shop
spec:
host: catalogue
trafficPolicy:
tls:
mode: ISTIO_MUTUAL
subsets:
- name: v1
labels:
version: v1
这是虚拟服务,其中包括故障注入:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: catalogue
namespace: sock-shop
spec:
hosts:
- catalogue
http:
- fault:
delay:
fixedDelay: 30s
percent: 100
route:
- destination:
host: catalogue.sock-shop.svc.cluster.local
subset: v1
看来这是我的失误。我再次尝试使用与原始问题中发布的配置相同的配置,现在可以使用了。
我已经将 Istio 配置为 delay/abort http-traffic 30 秒到我的目录服务,但是当我刷新我的页面时,目录显示没有任何延迟。
这是 Google 的 GKE 中的设置。我正在使用 sock-shop 演示来测试 Istio 功能的几个方面。
我当前的设置如下:这是我的包含所有服务和部署的 yaml 文件(简称为 Catalog 和使用目录的前端的配置):
#################################################
# Catalogue-db
#################################################
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: catalogue-db-v1
labels:
name: catalogue-db
version: v1
namespace: sock-shop
spec:
replicas: 1
template:
metadata:
labels:
name: catalogue-db
version: v1
spec:
containers:
- name: catalogue-db
image: weaveworksdemos/catalogue-db:0.3.0
env:
- name: MYSQL_ROOT_PASSWORD
value: fake_password
- name: MYSQL_DATABASE
value: socksdb
ports:
- name: mysql
containerPort: 3306
nodeSelector:
beta.kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
name: catalogue-db
labels:
name: catalogue-db
namespace: sock-shop
spec:
ports:
# the port that this service should serve on
- port: 3306
targetPort: 3306
selector:
name: catalogue-db
---
######################################################
#Catalogue
######################################################
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: catalogue
labels:
name: catalogue
version: v1
namespace: sock-shop
spec:
replicas: 1
template:
metadata:
labels:
name: catalogue
version: v1
spec:
containers:
- name: catalogue
image: weaveworksdemos/catalogue:0.3.5
ports:
- containerPort: 80
securityContext:
runAsNonRoot: true
runAsUser: 10001
capabilities:
drop:
- all
add:
- NET_BIND_SERVICE
readOnlyRootFilesystem: true
nodeSelector:
beta.kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
name: catalogue
labels:
name: catalogue
namespace: sock-shop
spec:
ports:
# the port that this service should serve on
- port: 80
name: http-catalogue
targetPort: 80
selector:
name: catalogue
---
##############################################
# Front-End
##############################################
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: front-end-v1
labels:
name: front-end
version: v1
namespace: sock-shop
spec:
replicas: 1
template:
metadata:
labels:
name: front-end
version: v1
spec:
containers:
- name: front-end
image: weaveworksdemos/front-end:0.3.12
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 8079
securityContext:
runAsNonRoot: true
runAsUser: 10001
capabilities:
drop:
- all
readOnlyRootFilesystem: true
nodeSelector:
beta.kubernetes.io/os: linux
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: front-end-v2
labels:
name: front-end
version: v2
namespace: sock-shop
spec:
replicas: 1
template:
metadata:
labels:
name: front-end
version: v2
spec:
containers:
- name: front-end
image: vinayakinfrac/front-end:0.3.12
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 8079
securityContext:
runAsNonRoot: true
runAsUser: 10001
capabilities:
drop:
- all
readOnlyRootFilesystem: true
nodeSelector:
beta.kubernetes.io/os: linux
---
apiVersion: v1
kind: Service
metadata:
name: front-end
labels:
name: front-end
namespace: sock-shop
spec:
type: NodePort
ports:
- port: 80
targetPort: 8079
name: http-front-end
nodePort: 30001
selector:
name: front-end
这是我目录的目的地规则:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: catalogue
namespace: sock-shop
spec:
host: catalogue
trafficPolicy:
tls:
mode: ISTIO_MUTUAL
subsets:
- name: v1
labels:
version: v1
这是虚拟服务,其中包括故障注入:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: catalogue
namespace: sock-shop
spec:
hosts:
- catalogue
http:
- fault:
delay:
fixedDelay: 30s
percent: 100
route:
- destination:
host: catalogue.sock-shop.svc.cluster.local
subset: v1
看来这是我的失误。我再次尝试使用与原始问题中发布的配置相同的配置,现在可以使用了。