K3s 網(wǎng)絡(luò)選項(xiàng)

2022-08-19 11:47 更新

網(wǎng)絡(luò)選項(xiàng)

默認(rèn)情況下,K3s 將以 flannel 作為 CNI 運(yùn)行,使用 VXLAN 作為默認(rèn)后端。

Flannel 選項(xiàng)

Flannel 的默認(rèn)后端是 VXLAN。要啟用加密,請使用下面的 IPSec(Internet Protocol Security)或 WireGuard 選項(xiàng)。

如果你想使用 WireGuard 作為你的 flannel 后端,可能需要額外的內(nèi)核模塊。請參閱 WireGuard 安裝指南了解詳情。WireGuard 的安裝步驟將確保為您的操作系統(tǒng)安裝適當(dāng)?shù)膬?nèi)核模塊。在嘗試使用 WireGuard flannel 后端選項(xiàng)之前,您需要在 server 和 agent 的每個節(jié)點(diǎn)上安裝 WireGuard。

CLI Flag 和 Value 描述
--flannel-backend=vxlan (默認(rèn)) 使用 VXLAN 后端。
--flannel-backend=ipsec 使用 IPSEC 后端,對網(wǎng)絡(luò)流量進(jìn)行加密。
--flannel-backend=host-gw 使用 host-gw 后端。
--flannel-backend=wireguard 使用 WireGuard 后端,對網(wǎng)絡(luò)流量進(jìn)行加密。可能需要額外的內(nèi)核模塊和配置。
--flannel-ipv6-masq 將偽裝規(guī)則應(yīng)用于 IPv6 流量(默認(rèn)為 IPv4)。僅適用于 dual-stack 或僅 IPv6 集群

自定義 CNI

使用?--flannel-backend=none?運(yùn)行 K3s,然后在安裝你選擇的 CNI。大多數(shù) CNI 插件都有自己的網(wǎng)絡(luò)策略引擎,因此建議同時設(shè)置 ?--disable-network-policy? 以避免沖突。應(yīng)該為 Canal 和 Calico 啟用 IP 轉(zhuǎn)發(fā)。請參考以下步驟。

  • Canal
  • 訪問Project Calico Docs網(wǎng)站。按照以下步驟安裝 Canal。修改 Canal 的 YAML,在 container_settings 部分中允許 IP 轉(zhuǎn)發(fā),例如:

    "container_settings": {
                  "allow_ip_forwarding": true
              }

    應(yīng)用 Canal YAML.

    通過在主機(jī)上運(yùn)行以下命令,確保設(shè)置已被應(yīng)用:

    cat /etc/cni/net.d/10-canal.conflist

    你應(yīng)該看到 IP 轉(zhuǎn)發(fā)被設(shè)置為 true。

  • Calico
  • 按照Calico CNI 插件指南。修改 Calico YAML,在 container_settings 部分中允許 IP 轉(zhuǎn)發(fā),例如:

    "container_settings": {
                  "allow_ip_forwarding": true
              }

    應(yīng)用 Calico YAML.

    通過在主機(jī)上運(yùn)行以下命令,確保設(shè)置已被應(yīng)用:

    cat /etc/cni/net.d/10-calico.conflist

    你應(yīng)該看到 IP 轉(zhuǎn)發(fā)被設(shè)置為 true。

Dual-stack 安裝

首次創(chuàng)建集群時必須配置 dual-stack 組網(wǎng)。它不能在現(xiàn)有的 single-stack 集群上啟用。

k3s v1.21 或更高版本支持 dual-stack 。

要在 K3s 中啟用 dual-stack ,你必須在所有 server 節(jié)點(diǎn)上提供有效的 dual-stack ?cluster-cidr? 和 ?service-cidr?。server 和 agent 都必須提供有效的 dual-stack ?node-ip? 設(shè)置。 dual-stack 集群不支持節(jié)點(diǎn)地址自動檢測,因?yàn)?nbsp;kubelet 只獲取它找到的第一個 IP 地址。此外,目前僅支持 vxlan 后端。這是有效配置的示例:

k3s server --node-ip 10.0.10.7,2a05:d012:c6f:4611:5c2:5602:eed2:898c --cluster-cidr 10.42.0.0/16,2001:cafe:42:0::/56 --service-cidr 10.43.0.0/16,2001:cafe:42:1::/112

注意,你可以選擇任何 ?cluster-cidr? 和 ?service-cidr? 的值,但是 ?node-ip? 的值必須與你的主接口的 ip 地址相對應(yīng)。如果你在公有云中部署,記住要允許 ipv6 流量。

如果你使用的是自定義的 cni 插件,即與 flannel 不同的 cni 插件,前面的配置可能不足以在 cni 插件中啟用 dual-stack。請?jiān)谄湮臋n中查看如何啟用 dual-stack,并驗(yàn)證是否可以啟用網(wǎng)絡(luò)策略。

只安裝 IPv6

K3s v1.22 或以上版本支持只安裝 IPv6。

提示:
如果你的 IPv6 默認(rèn)路由是由路由器廣告(RA)設(shè)置的,你需要設(shè)置 net.ipv6.conf.all.accept_ra = 2,否則,一旦默認(rèn)路由過期,節(jié)點(diǎn)將放棄該路由。請注意,接受 RA 可能會增加中間人攻擊的風(fēng)險。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號