antony@notes:~/rancher$ cat "設定-Harvester-VM-使用獨立的-Bond-網卡.md"
設定 Harvester VM 使用獨立的 Bond 網卡
設定 Harvester VM 使用獨立的 Bond 網卡
1. 新增 Cluster Network 並設定 Bond mode
- 當前每台 node 額外多出來的網路卡資訊
# node 1
$ ip a s
...
4: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:23:59:d5 brd ff:ff:ff:ff:ff:ff
altname enp2s3
5: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:23:59:df brd ff:ff:ff:ff:ff:ff
altname enp2s4
...
# node 2
$ ip a s
...
4: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:ac:a8:58 brd ff:ff:ff:ff:ff:ff
altname enp2s2
5: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:ac:a8:62 brd ff:ff:ff:ff:ff:ff
altname enp2s3
...
# node 3
$ ip a s
4: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:f4:48:52 brd ff:ff:ff:ff:ff:ff
altname enp2s3
5: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:f4:48:5c brd ff:ff:ff:ff:ff:ff
altname enp2s4
...- 建立
Cluster Network
左側選單 Networks -> Cluster Network -> 點選 Create Cluster Network 按鈕

取名: vm 然後點右下角 Create 按鈕

點 Create Network Config 按鈕

勾選 Select specific node
Node Name: 點選展開下拉式選單,選擇要設定的主機名稱

點選單 Uplink
NICs 選擇主機上多的兩張網卡 ens35 和 ens36
Bond Options Mode 選擇 balance-alb

再點 Create Network Config 按鈕,依照剛剛的步驟將其他節點的網卡都加入到這 Cluster Network,最後就會看到下圖

要確認每個
Config Network狀態都是Active
2. 永久設定 brige 裝置一個 IP 位置 (可選)
:::info 讓 Harvester node 能夠連接使用這個 Network 的 VM,如果不做此步驟則 VM 建出來會無法從 Harvester node 連接,但還是能夠從同網段的機器連到 VM。 :::
2.1. 檢查當前網卡的設定
$ ip a s
4: ens35: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vm-bo state UP group default qlen 1000
link/ether 00:0c:29:23:59:d5 brd ff:ff:ff:ff:ff:ff
altname enp2s3
5: ens36: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vm-bo state UP group default qlen 1000
link/ether 00:0c:29:23:59:df brd ff:ff:ff:ff:ff:ff
altname enp2s4
...
65: vm-bo: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master vm-br state UP group default qlen 1000
link/ether 00:0c:29:23:59:d5 brd ff:ff:ff:ff:ff:ff
66: vm-br: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
link/ether 1e:df:20:6d:88:47 brd ff:ff:ff:ff:ff:ff發現多了
vm-bo這張網卡和vm-br這個 bridge 裝置 但是vm-br橋接裝置沒有自己的 IP
2.2. 備份 Harvester Configuration 檔案 /oem/90_custom.yaml
$ sudo cp /oem/90_custom.yaml /oem/install/90_custom.yaml.$(date --iso-8601=minutes)2.3. 修改 /oem/90_custom.yaml 檔案,並且更新以下 Yaml 檔中路徑的值 stages.initramfs[0].files
$ vi /oem/90_custom.yaml內容如下
name: Harvester Configuration
stages:
initramfs:
- commands:
...
files:
# add the following context
- path: /etc/wicked/scripts/setup_vm_bond.sh
permissions: 493
owner: 0
group: 0
content: |
#!/bin/sh
ACTION=$1
INTERFACE=$2
case $ACTION in
post-up)
# inherit MAC address
ip link set dev vm-br address $(ip -json link show dev $INTERFACE | jq -j '.[0]["address"]')
# accept all vlan, PVID=1 by default
bridge vlan add vid 2-4094 dev $INTERFACE
;;
esac
encoding: ""
ownerstring: ""
- path: /etc/sysconfig/network/ifcfg-vm-bo
permissions: 384
owner: 0
group: 0
content: |+
STARTMODE='onboot'
BONDING_MASTER='yes'
BOOTPROTO='none'
POST_UP_SCRIPT="wicked:setup_vm_bond.sh"
BONDING_SLAVE_0='ens35'
BONDING_SLAVE_1='ens36'
BONDING_MODULE_OPTS='miimon=100 mode=balance-alb '
DHCLIENT_SET_DEFAULT_ROUTE='no'
encoding: ""
- path: /etc/sysconfig/network/ifcfg-ens35
permissions: 384
owner: 0
group: 0
content: |
STARTMODE='hotplug'
BOOTPROTO='none'
encoding: ""
ownerstring: ""
- path: /etc/sysconfig/network/ifcfg-ens36
permissions: 384
owner: 0
group: 0
content: |
STARTMODE='hotplug'
BOOTPROTO='none'
encoding: ""
ownerstring: ""
- path: /etc/wicked/scripts/setup_vm_bridge.sh
permissions: 493
owner: 0
group: 0
content: |
#!/bin/sh
ACTION=$1
INTERFACE=$2
case $ACTION in
pre-up)
# enable vlan-aware
ip link set $INTERFACE type bridge vlan_filtering 1
;;
post-up)
# accept all vlan, PVID=1 by default
bridge vlan add vid 2-4094 dev $INTERFACE self
bridge vlan add vid 2-4094 dev vm-bo
;;
esac
encoding: ""
ownerstring: ""
- path: /etc/sysconfig/network/ifcfg-vm-br
permissions: 384
owner: 0
group: 0
content: |+
STARTMODE='onboot'
BOOTPROTO='static'
BRIDGE='yes'
BRIDGE_STP='off'
BRIDGE_FORWARDDELAY='0'
BRIDGE_PORTS='vm-bo'
PRE_UP_SCRIPT="wicked:setup_vm_bridge.sh"
POST_UP_SCRIPT="wicked:setup_vm_bridge.sh"
IPADDR=192.168.81.21
NETMASK=255.255.255.0
DHCLIENT_SET_DEFAULT_ROUTE='yes'
encoding: ""
ownerstring: ""/etc/wicked/scripts/setup_vm_bond.sh修改內容如下 :ip link set dev <你的 bridge 名稱> address- bridge 的名稱會是
<cluster network name>-br - 譬如: 我的
cluster network取名為vm,那麼名稱就是vm-br
- bridge 的名稱會是
- 此檔名可自訂義
/etc/sysconfig/network/ifcfg-vm-bo修改內容如下 :POST_UP_SCRIPT="wicked:setup_vm_bond.sh"- 格式 :
wicked:<第一個 script 的名稱>
- 格式 :
BONDING_SLAVE_0='ens35'- 格式 :
ONDING_SLAVE_0='第一張網卡名稱'
- 格式 :
BONDING_SLAVE_1='ens36'- 格式 :
ONDING_SLAVE_1='第二張網卡名稱'
- 格式 :
BONDING_MODULE_OPTS='miimon=100 mode=balance-alb '- 格式 :
BONDING_MODULE_OPTS='miimon=<在 UI 上建立的值> node=<在 UI 上選的 Bond mode>'
- 格式 :
/etc/sysconfig/network/ifcfg-ens35修改內容如下 :- 檔名須為:
ifcfg-<網卡名稱>
- 檔名須為:
/etc/sysconfig/network/ifcfg-ens36修改內容如下 :- 檔名須為:
ifcfg-<網卡名稱>
- 檔名須為:
/etc/wicked/scripts/setup_vm_bridge.sh修改內容如下 :- 檔名可自訂義
/etc/sysconfig/network/ifcfg-vm-br修改內容如下 :BRIDGE_PORTS='vm-bo'- 格式:
BRIDGE_PORTS='bridge 名稱'
- 格式:
PRE_UP_SCRIPT="wicked:setup_vm_bridge.sh"- 格式:
PRE_UP_SCRIPT="上一個 Script 檔案的名稱"
- 格式:
POST_UP_SCRIPT="wicked:setup_vm_bridge.sh"- 格式:
POST_UP_SCRIPT="上一個 Script 檔案的名稱"
- 格式:
IPADDR=192.168.81.21- 改成符合這張網卡的 IP Address
NETMASK=255.255.255.0- 改成符合這張網卡的子網路遮罩
2.4. 重開機
$ sudo init 6如果這台 node 上有正在跑的 VM 要先關機。
2.5. 確認成功幫 Bridge 設靜態 IP
$ ip a s
...
4: ens35: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vm-bo state UP group default qlen 1000
link/ether 00:0c:29:f4:48:52 brd ff:ff:ff:ff:ff:ff
altname enp2s3
5: ens36: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vm-bo state UP group default qlen 1000
link/ether 00:0c:29:f4:48:5c brd ff:ff:ff:ff:ff:ff
altname enp2s4
6: vm-br: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:f4:48:52 brd ff:ff:ff:ff:ff:ff
inet 192.168.81.23/24 brd 192.168.81.255 scope global vm-br
valid_lft forever preferred_lft forever
7: vm-bo: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master vm-br state UP group default qlen 1000
link/ether 00:0c:29:f4:48:52 brd ff:ff:ff:ff:ff:ff2.6. 重複以上 2.1. ~ 2.5. 的步驟依序做完每一台有在 Cluster Netwrok 底下的節點
這樣設定完 Harvester node 就能夠連到 VM
3. 建立 VM Network
點選左側選單 Networks -> VM Networks -> Create

- Name:
vm - Type:
UntaggedNetwrok - Cluster Network:
vm

建立成功,之前 VM 在建立的時候就能有自己獨立的網卡辣~
