본문으로 건너뛰기

MetalLB Load Balancer 사용하기

IPAddressPool

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
  • serviceAllocation
    • priority: <int>
      • 값이 낮을수록 우선순위가 높습니다.
      • 설정하지 않으면 가장 낮은 우선순위로 설정됩니다.
    • namespaces: []
    • namespaceSelectors: []
    • serviceSelectors: []

LoadBalancer Service

Reference
apiVersion: v1
kind: Service
metadata:
annotations:
metallb.io/<key>: <value>
spec:
loadBalancerClass: metallb
type: LoadBalancer
  • annotations
    • metallb.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를 할당받을 수 있습니다.
  • spec