You are managing a Google Kubernetes Engine (GKE) cluster that hosts a microservices-based application. The application consists of multiple backend pods that the frontend pods need to communicate with. To maintain reliability, you want the frontend pods to always reach the correct backend pods, even if the backend pods are scaled, restarted, or moved. What should you do?