0. 목적
온 프레미스 환경에서 LoadBalancer를 사용을 위해 설치
1. 사전 설치
helm으로 설치할 예정이므로 helm과 쿠버네티스가 설치되어 있어야 한다.
2. 설치
더보기
If you’re using kube-proxy in IPVS mode, since Kubernetes v1.14.2 you have to enable strict ARP mode.
Note, you don’t need this if you’re using kube-router as service-proxy because it is enabling strict ARP by default.
You can achieve this by editing kube-proxy config in current cluster:
위는 공식 문서의 문항인데 요약하면 쿠버네틱스 1.14.2 버전 부터는 strict ARP mode를 True로 해주어야 한다라는 뜻이다.
다음 2가지 방법중 하나를 사용하자.
# 여기에 들어가서
kubectl edit configmap -n kube-system kube-proxy
# 다음을 추가해도 되고
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
strictARP: true
OR
# 해당 명령어만 입력하면 된다.
kubectl get configmap kube-proxy -n kube-system -o yaml | \
sed -e "s/strictARP: false/strictARP: true/" | \
kubectl apply -f - -n kube-system
설정을 제대로 했는지 확인 할려면 다음 명령어를 입력해보자.
# 이 명령어를 입력하면 strictARP:True가 나와야 한다.
kubectl get configmap kube-proxy -n kube- system -o yaml | grep strictARP
다음을 입력하여 설치하자.
그럼 default namespace인 metallb-system namespace를 생성하고 해당 네임 스페이스에서 실행될 것이다.
helm repo add metallb https://metallb.github.io/metallb
helm install metallb metallb/metallb
metallb 설정
# yaml형식의 파일을 생성해 주고 다음과 같이 편집한다.
vim my-config.yaml
---
# 사용 apiversion
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
#해당 IPAddressPool 명과 사용하는 namespace
name: ip-pool
namespace: metallb-system
spec:
addresses:
# 사용할 ip address pool
- 172.31.46.220-172.31.46.230
autoAssign: true
---
apiVersion: metallb.io/v1beta1
# metalib의 l2모드를 사용한다.
kind: L2Advertisement
metadata:
name: l2-network
# L2Advertisement이 사용할 namespace명
namespace: metallb-system
spec:
# 사용할 ipAddressPools을 추가해주는 데 위에 정의한 ipAddressPools을 사용하도록 한다.
ipAddressPools:
- ip-pool
위 의 설정을 적용하기 위해 기존 설정을 지우고 다시 설정해준다.
# 설정 확인
kubectl get validatingwebhookconfigurations
# 지우기
kubectl delete validatingwebhookconfigurations metallb-webhook-configuration
# no resourceㄴ found가 나와야 한다.
kubectl get validatingwebhookconfigurations
# 설정 적용
kubectl apply -f my-config.yaml
# 최종 확인
kubectl describe ipaddresspool.metallb.io --namespace metallb-system
최종적으로 다음과 같이 나오면 성공 한것이다.
Name: ip-pool
Namespace: metallb-system
Labels: <none>
Annotations: <none>
API Version: metallb.io/v1beta1
Kind: IPAddressPool
Metadata:
Creation Timestamp: 2023-10-31T06:32:52Z
-- 중략
Spec:
Addresses:
172.31.46.220-172.31.46.230
Auto Assign: true
Avoid Buggy I Ps: false
Events: <none>
'kubernetes' 카테고리의 다른 글
[Helm]helm설치 (0) | 2023.10.30 |
---|---|
[Kubernetes]validate service connection: CRI v1 image API is not implemented for endpoint (0) | 2023.10.23 |