VirtualBox, VIR, On-Primise에서 Kubernetes를 설치할 경우 Loadbalancer가 문제가된다.
서비스를 오픈해야하는데, nodeport를 오픈하기에는 부담스럽다.
이럴 때 대체안으로 MetalLB로 대안으로 설치할 수 있다.
MetalLB는 현재 최신 버전은 v0.13.3을 기준으로 설치한다
- https://metallb.universe.tf/installation/
1. metaLB 설치 전 kube-proxy 설정 변경
아래 내용과 같이 "strictARP: false"를 "strictARP: true"로 변경한다.
# kubectl edit configmap -n kube-system kube-proxy
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
strictARP: true
strictARP: false -> true
2. metaLB 배포
# kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.3/config/manifests/metallb-native.yaml
문서에 정리된 위 명령어로 metalLB 관련 프로그램을 설치한다.
3. metaLB관련 IP AddressPool 등록
- https://metallb.universe.tf/configuration/
아래와 같이 metalLB-addresspool.yaml 파일을 생성한다.
# vi metalLB-addresspool.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
- 192.168.122.100-192.168.122.200
만들어진 파일을 kubernetes에 적용한다.
# kubectl apply -f metalLB-addresspool.yaml
4. 테스트용 배포앱 배포
아래와 같이 deployment, service를 설정한 deploy-nginx.yaml 파일을 배포해서 LB가 정상적으로 생성되는지 확인한다.
deploy-nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
app: nginx
type: LoadBalancer
# kubectl apply -f deploy-nginx.yaml
5. 정상 배포 확인
root@ubuntu2004-001:~# kubectl get deployment,service
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nginx-deployment 1/1 1 1 24m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3h22m
service/my-nginx LoadBalancer 10.110.240.62 192.168.122.100 80:30295/TCP 24m
위와 같이 Service에 LoadBalancer Type으로 정상적으로 생성되면 metalLB가 정상적으로 설치된 것이다.
- On-Primise Kubernets 1.21 구축(VirtualBox or VIRT) - 01. 구성 환경
- On-Primise Kubernets 1.21 구축(VirtualBox or VIRT) - 02. 시스템 설정
- On-Primise Kubernets 1.21 구축(VirtualBox or VIRT) - 03. cluster 구성