- Home /
- Resources /
- Learning center /
- Kubernetes Service...
Kubernetes Service-type Load Balancer with Kube-Vip
Kube-Vip is a load balancer that takes a lightweight and multi-architecture approach.
Kube-Vip is a streamlined service type: LoadBalancer
solution with a focus on high
availability. Kube-Vip takes a lightweight and multi-architecture
approach to Kubernetes load balancing. It focuses on providing both highly
available (HA) networking endpoints and additional functionality for underlying
network services by creating support for not only a HA control plane but also
service type: LoadBalancer
functionality.
Kube-Vip provides various solutions for load balancing inside and outside a
Kubernetes cluster. This guide focuses on the features and integrations
of Kube-Vip Kubernetes service type: LoadBalancer
that work with Equinix Metal.
You'll also learn about Kube-Vip’s key features and deployment
considerations.
Understanding Kube-Vip
Kube-Vip provides a decoupled, centralized type: LoadBalancer
solution for
Kubernetes. It enables you to handle both the life cycles of Virtual IPs (VIPs)
for high availability (HA) and for Kubernetes load balancing. Being able to
handle load balancing within and outside of a cluster using one tool can
streamline your load balancing solution.
While Kube-Vip does provide solutions for load balancing inside and outside a
Kubernetes cluster, this guide will be focused on the features and integrations
of Kube-Vip Kubernetes service type: LoadBalancer
that work with Equinix Metal.
Advantages of Kube-Vip for service type: LoadBalancer
include:
-
Easy manifest deployment
-
Supports management via BGP or ARP functionality
-
Supported by core Equinix Metal integration (CCM, Packet API)
-
It currently powers both Google Anthos Bare-Metal and VMware Tanzu Grid
Kube-Vip type: LoadBalancer
For more information on Kube-Vip architecture, see the official in-depth Kube-Vip architecture guide. Please note that you can find the
type: LoadBalancer
instructions under the Load Balancing
section in the architecture guide.
Kube-Vip Service type: LoadBalancer features
Kube-Vip provides a high availability solution for Kubernetes service type: LoadBalancer
on metal by providing key features such as:
-
Leader election for ARP (Layer 2)
-
Multiple nodes with BGP
-
Address pools per namespace or global
-
Addresses via an existing network DHCP
-
Address exposure to gateway via UPNP
-
Manifest generation
-
Vender API Integrations
For more information on Kube-Vip features, see the features section of the Kube-Vip official github project.
Kube-Vip BGP support
Kube-Vip was updated to support BGP as a VIP failover mechanism in version 0.1.8. This allows nodes that are selected as leaders to update their peers in order for traffic to be routed through the newly elected node. Flags have been added in order to enable functionality such as:
-
Enabling BGP support within Kube-Vip
-
Showing local AS number
-
Showing the local router address
-
Showing the AS number for a BGP peer
-
Showing the address of a BGP peer
Kube-Vip has Equinix-Metal-specific integration support that allows the use of
the Equinix Metal API to determine the BGP configuration being used for the
nodes in the cluster. As long as the BGP flag --bgp
is enabled in Kube-Vip, you
can pass the following Equinix-Metal-specific flags:
-
packet
-
packetKey
-
packetProject
The example below, taken from the Kube-Vip documentation, shows the flags being used to start all pods in active mode, which will allow nodes to advertise the VIP to the routers when a service is exposed.
- name: vip_packet
value: "true"
- name: vip_packetproject
value: "My Project"
- name: PACKET_AUTH_TOKEN
value: "XXYZZYVVY"
Alternatively, when coupled with the Equinix Metal integration, Cloud Controller Manager (CCM), Kube-Vip can read the node annotations written by the CCM (the Equinix Metal BGP configuration). This allows Kube-Vip to inherit the BGP configuration with minimal or no input from whomever is deploying Kube-Vip.
Kube-Vip also offers additional BGP features that are key to any metal setup:
-
Multi-hop support
-
Password support
-
Equinix Metal CCM config maps support
For more information on Kube-Vip BGP support visit the Kube-Vip official documentation.
Equinix Metal Support
Deploying Kube-Vip
Kube-VIP works on all core Linux-based operating systems, although most of its official documentation uses Ubuntu as the example OS.
While Kube-Vip offers a few ways to deploy a service type: LoadBalancer
, you can
find a general getting started guide for getting a sample Kube-Vip type: LoadBalancer
in the Kube-Vip official documentation.
The simplest way to deploy Kube-Vip is by using the subcommand manifest pod|daemonset
to deploy a pod/daemonset. You can find additional information on
deploying Kube-Vip manifests on the official Kube-Vip installation guide.
Kube-Vip type: LoadBalancer
deployments include:
-
Layer2/ARP Deployment
-
Layer3/BGP Deployment
Layer2/ARP Deployment
Address Resolution Protocol (ARP) is a protocol that reports the layer 2 link or MAC address that is associated with the given IP Address. You can find additional information about using ARP with Kube-Vip’s official ARP deployment guide.
In order to get ARP up and running on Kube-Vip, ipvs has to have strict ARP enabled. You can do this by following the commands listed on the Kube-Vip ARP deployment guide or shown below:
Checking the strict ARP value:
$ kubectl describe configmap -n kube-system kube-proxy | grep ARP
strictARP: false
Then enabling the strict ARP value if false:
$ kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e "s/strictARP: false/strictARP: true/" | \
kubectl apply -f - -n kube-system
Layer3/BGP Deployment
Border Gateway Protocol (BGP) is an industry standard for exchanging routing and reachability information among systems. Using BGP opens up a lot of possibilities for your Kubernetes network such as routable pod and service IPs which wouldn't be available in most cloud environments.
You can find Kube-Vip’s official BGP deployment guide on their website kube-vip.io.
Conclusion
Kube-Vip provides a flexible solution for your HA service type: LoadBalancer
needs. You can find additional resources and information on Kube-Vip and
Kubernetes load balancing below.
You may also like
Dig deeper into similar topics in our archivesConfiguring BGP with BIRD 2 on Equinix Metal
Set up BGP on your Equinix Metal server using BIRD 2, including IP configuration, installation, and neighbor setup to ensure robust routing capabilities between your server and the Equinix M...
Configuring BGP with FRR on an Equinix Metal Server
Establish a robust BGP configuration on your Equinix Metal server using FRR, including setting up network interfaces, installing and configuring FRR software, and ensuring secure and efficie...
Crosscloud VPN with WireGuard
Learn to establish secure VPN connections across cloud environments using WireGuard, including detailed setups for site-to-site tunnels and VPN gateways with NAT on Equinix Metal, enhancing...
Deploy Your First Server
Learn the essentials of deploying your first server with Equinix Metal. Set up your project & SSH keys, provision a server and connect it to the internet.