總目錄索引:istio從入門到放棄系列nginx
一、網絡彈性介紹
docker
網絡彈性也稱爲運維彈性,是指網絡在遇到災難事件時快速恢復和繼續運行的能力。災難事件的範疇很普遍,好比長時間停電、網絡設備故障、惡意***等
api
二、Istio 超時實例
tomcat
須要結合 Istio 故障注入模擬被調用方響應請求慢的場景,該實例的架構圖以下:
bash
架構說明以下,本實例就是模擬客戶端調用 nginx,nginx 將請求轉發給 tomcat 的常見功能。tomcat 響應請求設置爲 10s(經過故障注入實現,至關於 sleep 10s 邏輯),nginx 設置 client 的請求超時時間爲 2s。由於 nginx 須要在 2s 內返回給 client,而 nginx 請求 tomcat 卻須要 10s,所以模擬 client 調用 nginx 超時的情景。
網絡
2.1 部署客戶端架構
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" ]
2.2 部署nginx和tomcat實例app
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:1.14-alpine imagePullPolicy: IfNotPresent --- apiVersion: v1 kind: Service metadata: name: tomcat-svc spec: selector: server: tomcat ports: - name: http port: 8080 targetPort: 8080 protocol: TCP --- apiVersion: apps/v1 kind: Deployment metadata: name: tomcat labels: server: tomcat spec: replicas: 1 selector: matchLabels: server: tomcat template: metadata: labels: server: tomcat spec: containers: - name: tomcat image: docker.io/kubeguide/tomcat-app:v1 imagePullPolicy: IfNotPresent
2.3 Istio 虛擬服務資源運維
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: nginx-vs spec: hosts: - nginx-svc http: - route: - destination: host: nginx-svc timeout: 2s --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: tomcat-vs spec: hosts: - tomcat-svc http: - fault: delay: percentage: value: 100 fixedDelay: 10s route: - destination: host: tomcat-svc
2.4 部署以上示例,並進行istio注入ide
istioctl kube-inject -f test-client.yaml | kubectl apply -f -
istioctl kube-inject -f test-deploy.yaml | kubectl apply -f -
三、配置nginx轉發tomcat
kubectl exec -it nginx-579d7f7ff-9pspn /bin/sh
修改完後讓配置生效
nginx -t
nginx -s reload
修改內容以下
四、客戶端驗證
kubectl exec -it client-8496866cdf-vkmcw /bin/sh
wget -q -O - http://nginx-svc
wget -q -O - http://tomcat-svc:8080
爲了實驗效果,設置長了時間,和設置的nginx 2s和tomcat 10s是吻合的,除去操做時間