如何在 vSphere 上配置具有多 NIC/VLAN 的 Kubernetes?

如何在 vSphere 上配置具有多 NIC/VLAN 的 Kubernetes?

使用 Kubespray 和 Terraform 在 vSphere 上配置 Kubernetes 集群以自动化部署过程(没有问题)。

我的目标是能够将 Pod 连接到不同的 VLAN(或端口组),这样每个应用程序都可以像我的虚拟机一样在自己的网络中运行。

我认为有两种方法:1. 创建“所有 VLAN 端口组 (0-4095)”并管理 K8S 节点操作系统内的 VLAN 2. 将多个 NIC 连接到 K8S 节点虚拟机,每个虚拟机将连接到不同的 VLAN

在谷歌搜索了数周后,我仍然找不到类似要求的解决方案。

所以我的问题是,我被困在试图弄清楚如何以这种方式构建 K8S 集群,同时我也不完全确定我是否走在正确的道路上。

在我发疯之前请帮助我!

答案1

这可以通过以下方式实现多图斯-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 添加更多接口

更多的细节

相关内容