《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 17 MetalLB 使用

本篇大綱

MetalLB 要分配 IP 需要套用他們的設定檔,這篇將會講解如何建立 IP Pool 跟分配。

內文

MetalLB 在上篇文章安裝完畢,但系統還不具有分配 IP 的功能,我們就要讓他有分配 IP 的能力。

廣播分兩種模式:Layer 2 modeBGP mode

Layer 2 mode 廣播利用 ARP (IPv4) 跟 NDP (IPv6),好處是可以在任何網卡上使用,不需要再有額外設備,像是 Router。

BGP mode 就需要 BGP Peering 廣播使用 IP,然而 BGP 通常應用於比較大型的網路結構中。

BGP mode 部分筆者就沒有使用過了,需要等有設備才能測試實驗,而且通常 Layer 2 mode 廣播就夠用了。

IP Pool 建立

這裡就按照 MetalLB 官網上的 Usage **>** Full example 做設定。

我會分配 192.168.200.200 - 192.168.200.209 作為 External IP:

1
2
3
4
5
6
7
8
9
10
11
# 1. Save as `IPAddressPool.yaml`
# 2. In bash, `kubectl apply -f IPAddressPool.yaml`
# 3. If you want to remove, `kubectl delete -f IPAddressPool.yaml`
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: first-pool # IP Pool 的名字
namespace: metallb-system # Namespace
spec:
addresses:
- 192.168.200.200-192.168.200.209 # 打上 IP Range,或者 CIDR 也是可以

建立完 IP Pool 之後,就可以建立廣播了。

L2 Mode Advertisement

這裡就按照 MetalLB 官網上的 Configuration > Advanced L2 configuration 做設定。

也可以指定 .spec.ipAddressPools 套用指定的 IP Pool:

1
2
3
4
5
6
7
8
9
10
11
# 1. Save as `L2Advertisement.yaml`
# 2. In bash, `kubectl apply -f L2Advertisement.yaml`
# 3. If you want to remove, `kubectl delete -f L2Advertisement.yaml`
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: example
namespace: metallb-system
#spec: # 沒有填寫 Spec 就是對於全部的 namespace 下的 IPAddressPool 都套用
# ipAddressPools:
# - first-pool # 對於 first-pool 會套用廣播

最後就把他們 Apply 進去:

1
2
kubectl apply -f IPAddressPool.yaml
kubectl apply -f L2Advertisement.yaml

https://ithelp.ithome.com.tw/upload/images/20221002/20112934pUZW0UJg4j.png

這樣設定上去,確定 MetalLB 沒有 Crash 就好,要怎麼驗證這東西是好的呢?下一篇將會安裝 Istio 來驗證這個設定是否成功,並且在這裡裝上 Layer 7 的 Load Balancer。

本系列內容也會同步貼到我的 iT 邦幫忙 https://ithelp.ithome.com.tw/users/20112934 歡迎來點一下追蹤,那我們就下一篇文章見啦!

Source


《關於我怎麼把一年內學到的新手 IT/SRE 濃縮到 30 天筆記這檔事》 Day 17 MetalLB 使用
https://blog.yangjerry.tw/2022/10/02/it2022-day17/
作者
Jerry Yang
發布於
2022年10月2日
許可協議