MetaKube clusters come with built-in support for external load balancers through OpenStack Neutron or Octavia, which allows you to easily get an external IP address for a service. Traffic to this IP address will be automatically load balanced over all available pods of the exposed service. The Create a Load Balancer tutorial shows you how to do this.
service.spec.healthCheckNodePorthas no effect.
service.spec.externalTrafficPolicyattribute - the default value of
Clusteris a well tested best practice to spread traffic evenly. If you want to set it to
Localto reduce the amount of hops in your cluster, you need to ensure that every node has a pod of your service - e.g. by using a DaemonSet. This is needed as all nodes without a pod of your service will drop the traffic received for the service.
In order to route traffic to applications deployed in Kubernetes it is a good practice to use an Ingress Controller which proxies incoming request to the correct services and can handle things like TLS offloading. For more information on Ingress resources and Ingress Controllers see the official Kubernetes documentation. The Create an Ingress Controller tutorial shows you how you can install an Ingress Controller with Let's Encrypt TLS certificate support.