Search code examples
kubernetescontainersmicroservicesistiokubernetes-pod

Multi-Cluster Kubernetes - cross cluster communication


Not sure if this is the right place, please point me to a different forum if not.

In a multi-cluster kubernetes setup, is cross-cluster communication a valid design? In particular, a pod in one cluster relying on a pod in another cluster.

Or are there limitations or anti-patterns associated with this that we should avoid? If not, what tools do you use to manage this deployment and monitor load on each cluster?


Solution

  • Multicluster deployments give you a greater degree of isolation and availability but increase complexity. If your systems have high availability requirements, you likely need clusters across multiple zones and regions. You can canary configuration changes or new binary releases in a single cluster, where the configuration changes only affect a small amount of user traffic. Additionally, if a cluster has a problem, you can temporarily route traffic to nearby clusters until you address the issue.

    Multiple meshes afford the following capabilities beyond that of a single mesh:

    • Organizational boundaries: lines of business
    • Service name or namespace reuse: multiple distinct uses of the default namespace
    • Stronger isolation: isolating test workloads from production workloads

    I have found a very good youtube videos from KubeCon, check it out because it really explains how multi-cluster works, specially the first one with Matt Turner.


    Check out Admiral which provides automatic configuration and service discovery for multicluster Istio service mesh

    Istio has a very robust set of multi-cluster capabilities. Managing this configuration across multiple clusters at scale is challenging. Admiral takes an opinionated view on this configuration and provides automatic provisioning and syncing across clusters. This removes the complexity from developers and mesh operators pushing this complexity into automation.


    In a multi-cluster kubernetes setup, is cross-cluster communication a valid design? In particular, a pod in one cluster relying on a pod in another cluster.

    Based on provided links and my knowledge everything should work fine, pod can rely on a pod in another cluster.


    More useful links:


    EDIT

    how do the different frameworks of Kubefed and Admiral fit with each other? Can we use both or only use one?

    I would not use kubefed since it's in alpha as far as i know, unless you really need it. I dont know how both of them would work together, I can only assume that they should both work.

    what considerations should we have in deciding between different mesh architecture to facilitate cross-cluster communication?

    Above, there is a link to youtube video, istio Multi-Cluster Service Mesh Patterns Explained, I would say it's up to you to decide which one you want to use based on your needs, the simplest one is the first described in the video, single control plane, single network. More about it there.