metallb를 가이드에 따라
https://metallb.universe.tf/installation/
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.7/config/manifests/metallb-native.yaml
상기와 같이 설치 하고 1.24 기준 설치 했을때 metallb의 address-pool을 configmap에 정의해서 사용했는데
1.25.에서 정의하고 사용할려고 하니 서비스 type이 load balnacer인 애들이 ip를 매핑을 못하고 pending 에 걸려 있었다
결국 speaker 들이 못받아 오는거 같은데 결국 configmap을 안 보는거 같아서 사이트에 들어가서 config 설정을 보니까
crd 커스텀리소스를 활용해서 전용으로 따로 쓴다
가이드 대로 다시 하니까 pending에서 바로 ip를 받아 갔다...문제는
가이드에 있는거 복사해서 ipaddress 만 남기고 썻는데 그게 내 대역하고 맞지 않는다
즉 실수로 잘못 배포한 ip에 대한 변경은 주소를 수정해서 반영을 해도 기존에서 잡고 안놓는다
그럴때 metallb contorller 를 redeploy 하면 수정된걸로 다시 가져간다.
괸히 다른 서비스랑 pod 재배포 했다.
===아래가 예전꺼로 안됨===
apiVersion: v1
data:
config: |-
address-pools:
- name: default
protocol: layer2
addresses:
- 192.168.219.96-192.168.219.99
kind: ConfigMap
===요게 되는거===
===추가 수정===
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool
namespace: metallb-system
spec:
addresses:
# - 192.168.10.0/24
- 192.168.2.xxx-192.168.2.xxx
# - fc00:f853:0ccd:e799::/124
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: l2adver
namespace: metallb-system
spec:
ipAddressPools:
- first-pool
위에처럼 보면 알지만 kind가 바꼇다
ConfigMap -> IPAddressPool 로
오픈소스들이 변화가 너무 급격하기 때문에 과거 사이트글을 참조할 경우 많이 틀린 경우 최근에 들어 많아졌다
본 사이트들의 경우 설정 변경에 대해 바로바로 언급하지만 참조사이트들 처럼 상세함이 부족한 경우가 많다.
결국은...계속 모니터링하고 보는 노가다 당분간은 지속될듯 하다. 저거 설치해본적이 불과 1년즘 넘었는데 벌써 달라지니... 게다가 아직 정식도 아니다.
위에 추가 수정이라고 했는데 아래에
kind: L2Advertisement
요놈도 들어가야 된다...예전에 configmap에서는 layer2라고 선언했었는데 그거 대신 저렇게 써야 된다.
그러니까 ipaddresspool 만으론 서비스에 pending에서 마치 ip를 받은거 같지만. 물론 ip는 받았지만 arp 적용은 안된거고
아래에 kind를 L2Advertisement 이걸 꼭 넣어야 된다..
저거땜에 1시간 또 삽질했네....
추가로 L2 모드의 기본 원리가 arp 스푸핑하는 원리로 하기 때문에 공유기에 arp 스푸핑대응 기능이 켜져 있을 경우는 아마도 안될거라고 본다.. 해보지는 않았지만.. 디폴트가 대부분 꺼저는 있는데 혹시나 켜놓고 쓴다면....
'k8s' 카테고리의 다른 글
k8s공식 gpg 키 서버 500에러 대처법(Google Cloud public signing key 500 error) (0) | 2023.02.27 |
---|---|
istio-injection 확인 명령어 (0) | 2023.02.07 |
argocd 최초 설치후 cluster unknown 상태 (0) | 2023.01.30 |
k8s pvc 내부 파일 cp 할땐 항상 rap 옵션으로 할것 (0) | 2023.01.10 |
k8s statefulset은 pod deployment에 servicename 필수 (0) | 2023.01.10 |