ByeongHunKim / Cloudclub-istio-skyline

☁️ Cloud Club's collaborative journey exploring Istio and service mesh technologies 🚀
https://www.cloudclub.kr/
2 stars 0 forks source link

[Question] Istiod의 고가용성을 위한 배포 전략 #4

Closed opp-13 closed 1 month ago

opp-13 commented 1 month ago

Question / 질문 내용 Istiod의 가용성을 위해서 어떠한 위치에 배포해야 하는지 ReplicaSet은 어떻게 설정할지 궁금합니다.

예를 들어 여러 개의 클러스터를 한 개의 istiod가 컨트롤 하는 구조가 있고 shared-control

아래와 같이 가용성을 위하여 여러 cluster에 배치하는 구조가 있습니다. multi-control

이때 공식 문서에서는 다음의 배포 방법을 제안했는데 일반적으로 어떤 방법을 사용하는지 궁금합니다. One cluster per region (lowest availability) Multiple clusters per region One cluster per zone Multiple clusters per zone Each cluster (highest availability)

그리고 istiod가 부하를 받는 정도 및 부하 분산을 위해 ReplicaSet을 둘 필요가 있는지도 의문이 생겼습니다.

Context / 상황 설명 EKS 구조 상 가용성을 위하여 장애의 전파성이 큰 API Server 및 ETCD를 여러 개 둔다는 점에서 istiod도 실패 시 장애 전파성이 클 것 같다는 점에서 어떻게 예방할 지가 궁금해 졌습니다. https://www.youtube.com/watch?v=E49Q3y9wsUo

What I've Tried / 시도한 방법 질문에 대한 답을 찾기 위해 시도해본 방법이 있다면 설명해주세요

일단 이슈 먼저 올려놓고 추가적으로 자료를 찾고 있습니다.

istio의 배포 Model

https://istio.io/latest/docs/ops/deployment/deployment-models/

부하 관련

아래 지표를 보면 부하를 주면 확실히 레이턴시가 올라갑니다. https://istio.io/latest/docs/ops/deployment/performance-and-scalability/ https://istio.io/latest/blog/2019/performance-best-practices/

아래와 같이 replica를 두어서 HPA를 하는 방법이 있긴 한데 상황 별 최적 Replica 개수가 대략적으로 어떻게 되는지 확인하지 못했습니다.

Horizontal pod autoscaling (HPA) is enabled for the istiod and ingress gateway pods. The default configurations for istiod and the gateways are:

Min Replicas: 2
Max Replicas: 5
CPU Utilization: 80%
 Note

To prevent conflicts with the PodDisruptionBudget, the add-on does not allow setting the minReplicas below the initial default of 2.

출처: https://learn.microsoft.com/en-us/azure/aks/istio-scale

Resources / 관련 자료 질문과 관련된 문서, 링크, 코드 등이 있다면 여기에 첨부해주세요

Additional context / 추가 사항 기타 추가적인 정보나 생각이 있다면 여기에 작성해주세요

ByeongHunKim commented 1 month ago
  1. 여러 개의 클러스터를 한 개의 istiod가 컨트롤 하는 구조가 있다는 것을 처음 알았네요

  2. 상황 별 최적 Replica 개수에 대해서는 기본이 아래와 같이 할당되는 것 같아서 말씀하신대로 중요해보이긴 하네요

    resources: requests: cpu: 500m memory: 2Gi

하지만 HorizontalPodAutoscaler (HPA)를 사용하여 부하에 따라 자동으로 scale out 될 거 같고, 기본으로 떠 있는 개수는 .. 만약에 너무 많이 띄워놨는데 트래픽이 없으면 손해니까 불필요하게 사용하고 있는 상황이 맞느냐에 따라 다를 것 같네요

ByeongHunKim commented 1 month ago

https://github.com/istio/istio/blob/e5bd553023f49e6093735802c12f725a3afde705/manifests/charts/istio-control/istio-discovery/values.yaml#L21

말씀드리고 저도 궁금해서 찾아봤는데 기본 request 할당이 말씀드린대로 정의되어 있네요