vSphere 上で複数の NIC / VLAN を使用して Kubernetes を構成するにはどうすればよいでしょうか?

vSphere 上で複数の NIC / VLAN を使用して Kubernetes を構成するにはどうすればよいでしょうか?

Kubespray と Terraform を使用して vSphere 上の Kubernetes クラスターのプロビジョニングを試し、デプロイメント プロセスを自動化します (問題はありません)。

私の目標は、ポッドを異なる VLAN (またはポート グループ) に接続できるようにして、各アプリが VM と同様に独自のネットワークで実行されるようにすることです。

2つのアプローチがあると思います: 1. 「すべてのVLANポートグループ(0-4095)」を作成し、K8SノードOS内でVLANを管理する 2. 複数のNICをK8SノードVMに接続し、それぞれが異なる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"
      }
    }'

次に、この構成をポッドにアタッチします。

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

さらに、カスタムリソースをさらに作成し、ポッドのアノテーションでそれらを参照することで、ポッドにインターフェースを追加できます。

もっと詳細

関連情報