首頁>技術>

1|0Istio 故障注入例項

Istio 故障注入與其他在網路層引入錯誤(例如延遲資料包或者直接殺死 Pod)的機制不同,Istio 允許在應用程式層注入故障。這使得可以注入更多相關的故障,比如 HTTP 錯誤程式碼等。

Istio 可以注入兩種型別的故障,而這兩種故障都是使用虛擬服務來配置的:

延遲:模擬增加網路延遲或上游服務過載。

中止:模擬服務故障而導致呼叫服務不可用。中止通常以 HTTP 錯誤程式碼或 TCP 連線失敗表示

2|0Istio 故障注入例項

​ 本例項包括 4 個資原始檔,3 個 k8s 相關,1 個 istio 相關:

client.yaml

nginx-svc.yaml

nginx-deploy.yaml

nginx-vs.yaml

2|1客戶端資原始檔

client.yaml 內容如下:

apiVersion: apps/v1kind: Deploymentmetadata: name: clientspec: 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 注入,注入後,此 client 將處於網格之內:

istioctl kube-inject -f client.yaml | kubectl apply -f -

Istio 注入成功成功如下圖所示:

2|2k8s 服務檔案

nginx-svc.yaml 內容如下:

apiVersion: v1kind: Servicemetadata: name: nginx-svcspec: selector: server: nginx ports: - name: http port: 80 targetPort: 80 protocol: TCP

執行如下語句部署 service:

kubectl apply -f nginx-svc.yaml

2|3部署工作負載(deployment)

nginx-deploy.yaml 內容如下:

apiVersion: apps/v1kind: Deploymentmetadata: name: nginx labels: server: nginx app: webspec: replicas: 1 selector: matchLabels: server: nginx app: web template: metadata: name: nginx labels:  server: nginx app: web spec: containers: - name: nginx image: nginx:1.14-alpine imagePullPolicy: IfNotPresent

部署語句如下:

kubectl apply -f nginx-deploy.yaml

2|4虛擬服務檔案

​ 故障注入就在虛擬服務資源中,內容如下:

apiVersion: networking.istio.io/v1alpha3kind: VirtualServicemetadata: name: vsspec: hosts: - nginx-svc http: - fault: abort: percentage: value: 100 httpStatus: 503 route: - destination:  host: nginx-svc

部署語句如下:

kubectl apply -f nginx-vs.yaml

自此,整個例項部署完畢。

3|0驗證故障注入

​ 執行如下語句登入客戶端:

kubectl exec -it client-5b77d5949f-clrb7 -- sh

​ 使用 wget 訪問 nginx-svc:

wget -q -O - http://nginx-svc

發現模擬後端服務中止失效。如下圖所示:

出處:http://dwz.date/cdrM

33

Nginx

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Python程式設計完全入門教程:計算機是如何工作的?