MetalLB Load Balancer 사용하기
IPAddressPool
References
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: <name>
namespace: metallb
labels:
# ipAddressPoolSelectors 활용을 위해 label을 설정합니다.
zone: <zone>
spec:
addresses:
- <ip>/<cidr>
- <ip>-<ip>
autoAssign: false
avoidBuggyIPs: true
serviceAllocationpriority: <int>- 값이 낮을수록 우선순위가 높습니다.
- 설정하지 않으면 가장 낮은 우선순위로 설정됩니다.
namespaces: []namespaceSelectors: []serviceSelectors: []
Advertisement
LoadBalancer Service
References
apiVersion: v1
kind: Service
metadata:
annotations:
metallb.io/<key>: <value>
spec:
loadBalancerClass: metallb
type: LoadBalancer
annotationsmetallb.io/<key>: <value>loadBalancerIPs: <ip>address-pool: <ipAddressPoolName>allow-shared-ip: <keyToShare>- 같은
<keyToShare>를 갖는 Service들은 특정 조건을 만족할 경우 같은 IP를 할당받을 수 있습니다. - 조건
- 다른 Port를 사용해야합니다.
externalTrafficPolicy: Cluster를 사용하거나.spec.selector가 같아야합니다.- e.g., 각각
tcp/53,udp/53를 사용하면서 같은 Pod을 선택하는 Service의 경우 같은 IP를 할당받을 수 있습니다.
- 같은
specexternalTrafficPolicy: Cluster- Service # externalTrafficPolicy
- BGP +
Local+ affinity 설정으로 최적의 트래픽 흐름을 만들 수 있습니다.