Wie konfiguriere ich Kubernetes mit mehreren NICs/VLANs auf vSphere?

Wie konfiguriere ich Kubernetes mit mehreren NICs/VLANs auf vSphere?

Spielen Sie mit der Bereitstellung eines Kubernetes-Clusters auf vSphere unter Verwendung von Kubespray und Terraform, um den Bereitstellungsprozess zu automatisieren (keine Probleme damit).

Mein Ziel ist die Möglichkeit, Pods mit verschiedenen VLANs (oder Portgruppen) zu verbinden, sodass dann jede App wie meine VMs in ihrem eigenen Netzwerk ausgeführt wird.

Ich denke, es gibt zwei Ansätze: 1. Erstellen Sie „Alle VLANs-Portgruppe (0-4095)“ und verwalten Sie VLANs innerhalb des K8S-Knoten-Betriebssystems. 2. Schließen Sie mehrere Netzwerkkarten an die K8S-Knoten-VMs an, wobei jede davon mit einem anderen VLAN verbunden wird.

Nach wochenlangem Googeln kann ich immer noch keine Lösung für ähnliche Anforderungen finden.

Mein Problem besteht also darin, dass ich nicht weiterkomme und nicht weiß, wie ich auf diese Weise einen K8S-Cluster erstellen kann. Gleichzeitig bin ich mir jedoch nicht ganz sicher, ob ich überhaupt auf dem richtigen Weg bin.

Bitte helfen Sie mir, bevor ich verrückt werde!

Antwort1

Dies kann erreicht werden mitmultus-cniPlugin. Es erstelltNetworkAttachmentDefinitionbenutzerdefinierte Ressource, in der Sie die Netzwerkschnittstelle angeben können, d. h.

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"
      }
    }'

Und dann fügen Sie diese Konfiguration dem Pod hinzu:

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

Darüber hinaus können Sie einem Pod weitere Schnittstellen hinzufügen, indem Sie weitere benutzerdefinierte Ressourcen erstellen und dann in der Annotation des Pods darauf verweisen.

MehrEinzelheiten.

verwandte Informationen