Networking within Kubernetes can be intricate, involving both internal and external communication. For simplicity and containment within the cluster, we'll use an internal networking solution to assign IP addresses directly to services, bypassing the need for external DNS servers or load balancers.
Please ensure that Helm has been installed before proceeding with this section.
MetalLB is a Kubernetes-based load balancer that assigns IP addresses to services, facilitating network requests to those IPs. This allows services to be externally exposed, improving accessibility and scalability. MetalLB is particularly beneficial when a Kubernetes cluster lacks an external load balancer or when the cluster administrator prefers to use a custom load balancing solution.
To understand more about MetalLB, refer HERE.
MetalLB should be installed only on your main control node.
# Add MetalLB repository to Helm
helm repo add metallb https://metallb.github.io/metallb
# Check the added repository
helm search repo metallb
Example of "helm search repo metallb"
root@cube01:~# helm search repo metallb
NAME CHART VERSION APP VERSION DESCRIPTION
metallb/metallb 0.13.7 v0.13.7 A network load-balancer implementation for Kubernetes...
helm upgrade --install metallb metallb/metallb --create-namespace \
--namespace metallb-system --wait
The above command returns:
Release "metallb" does not exist. Installing it now.
LAST DEPLOYED: Tue Jan 31 14:28:54 2023
TEST SUITE: None
MetalLB is now running in the cluster.
Now that MetalLB is installed, we need to assign an IP range for it. In this case, we allow MetalLB to use the range 10.0.0.70 to 10.0.0.80.
cat << 'EOF' | kubectl apply -f -
The above command returns:
Traefik is an open-source reverse proxy and load balancer used extensively in Kubernetes environments. Traefik intelligently routes incoming requests to appropriate microservices based on factors such as domain name, path, and other attributes. It works closely with Kubernetes and other cloud-native tools to provide service discovery, automatic SSL certificate management, and request routing based on custom rules. Traefik is pre-installed with K3s.
However, to utilize Traefik, a working DNS server external to the Kubernetes cluster is required. For local testing, the /etc/hosts file can be modified to act as a faux DNS server.
The host file is located at:
- Mac: /private/etc/hosts
- Windows: c:\windows\system32\drivers\etc\hosts
- Linux: /etc/
You can edit this file to add an entry like:
10.0.0.70 turing-cluster turing-cluster.local
Now, when you enter https://turing-cluster.local in your browser, you should be redirected to a 404 page of Traefik.
Remember this will work only on machines where the host file has been modified. For network-wide accessibility, a DNS server is required, and all PCs need to be aware of this DNS server.
Updated 8 months ago