如何在 vSphere 上為 Kubernetes 配置多個 NIC/VLAN?

如何在 vSphere 上為 Kubernetes 配置多個 NIC/VLAN?

使用 Kubespray 和 Terraform 在 vSphere 上配置 Kubernetes 叢集來自動化部署流程(沒有問題)。

我的目標是能夠將 Pod 連接到不同的 VLAN(或連接埠群組),這樣每個應用程式都會像我的虛擬機器一樣在自己的網路中運行。

我認為有兩種方法: 1. 建立「所有VLAN 連接埠群組(0-4095)」並管理K8S 節點作業系統內的VLAN 2. 將多個NIC 連接到K8S 節點虛擬機,每個網路卡將連接到不同的VLAN

經過幾週的谷歌搜尋後,我仍然找不到類似要求的解決方案。

所以我的問題是,我一直在試圖弄清楚如何以這種方式建立 K8S 集群,同時我並不完全確定我的方式是否正確。

請在我發瘋之前幫助我!

答案1

這可以透過以下方式實現multus-cni插入。它創建NetworkAttachmentDefinition自訂資源,您可以在其中指定網路介面,即

apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
  name: macvlan-conf
spec:
  config: '{
      "cniVersion": "0.3.0",
      "type": "macvlan",
      "master": "eth0",
      "mode": "bridge",
      "ipam": {
        "type": "host-local",
        "subnet": "192.168.1.0/24",
        "rangeStart": "192.168.1.200",
        "rangeEnd": "192.168.1.216",
        "routes": [
          { "dst": "0.0.0.0/0" }
        ],
        "gateway": "192.168.1.1"
      }
    }'

然後,將此配置附加到 pod:

apiVersion: v1
kind: Pod
metadata:
  name: samplepod
  annotations:
    k8s.v1.cni.cncf.io/networks: macvlan-conf

此外,您可以透過建立更多自訂資源然後在 pod 的註解中引用它們來向 pod 新增更多介面

更多的細節

相關內容