Amazon EKS에서 Kubernetes 클러스터를 운영하면 가용성을 위해서 여러 AZ에 걸쳐서 노드를 띄우게 됩니다. 이럴 경우 한 AZ에 장애가 날 경우에도 빠르게 대응할 수 있습니다. 가용성
Amazon EKS에서 Kubernetes 클러스터를 운영하면 가용성을 위해서 여러 AZ에 걸쳐서 노드를 띄우게 됩니다. 이럴 경우 한 AZ에 장애가 날 경우에도 빠르게 대응할 수 있습니다. 가용성을 높이기 위한 기본적인 전략이지만 AZ 장애가 흔하게 발생하지 않는 것에 비해 평소 운영할 때는 AZ간 통신 비용이 발생합니다. AWS에서 AZ내에서는 통신 비용이 발생하지 않지만 AZ간에는 비용이 발생하기 때문에 여러 AZ 떠있는 노드안의 Pod이 서로 통신하게 되면 Cross-AZ 비용이 발생하게 되고 클러스터의 규모가 커질수록 이 비용은 더욱 커지게 됩니다. 이때 Topology Aware Hint를 Service에 지정하면 같은 존에 있는 Pod에 먼저 통신하도록 할 수 있습니다. 이렇게 설정하면 Cross-AZ 비용을 대폭 줄일 수 있으며 같은 AZ이기 때문에 지연시간도 줄일 수 있습니다. 대신 같은 존끼리 통신하게 하려면 당연히 모든 존에 Pod이 똑같이 떠있어야 합니다. a,c 2개의 존을 사용한다고 할 때 두 존 모두에 노드가 떠있을텐데 여기에 Pod을 4개 띄운다고 하면 a 존에 2개, c 존에 2개 씩 떠야 같은 존내의 통신이 잘 이뤄지고 만약 a 존에 4개가 뜨고 c존에는 안뜬다면 이전과 마찬가지로 Cross-AZ 비용이 발생할 수 있습니다. 이는 Deployment에 topologySpreadConstraints를 설정해서 각 존에 균등하게 Pod을 배포할 수 이있습니다. https://aws.amazon.com/ko/blogs/tech/amazon-eks-reduce-cross-az-traffic-costs-with-topology-aware-hints/