DestinationRule의 trafficPolicy 기능을 이용해 Connection Pool, Circuit Breaker를 설정하고 실제 적용을 확인한다.
destination-rule-helloworld-trafficpolicy.yaml 파일 생성:
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: helloworld
spec:
host: helloworld
trafficPolicy:
connectionPool:
tcp:
maxConnections: 1
http:
http1MaxPendingRequests: 1
maxRequestsPerConnection: 1
outlierDetection:
consecutive5xxErrors: 1
interval: 5s
baseEjectionTime: 30s
maxEjectionPercent: 100
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
적용:
kubectl apply -f destination-rule-helloworld-trafficpolicy.yaml
테스트용 파드 생성 후 부하 주기:
kubectl run -it --rm --restart=Never loadgen --image=curlimages/curl -- /bin/sh
# 파드 안에서 무한 호출
while true; do curl -s helloworld:5000/hello; done
기대 효과:
결과:
connectionPool 설정으로 연결 수를 조정할 수 있다.outlierDetection을 통해 비정상 인스턴스를 자동으로 제외(Ejection)할 수 있다.