Questa pagina descrive l'operatore Kubernetes di Network Function specializzato fornito con Google Distributed Cloud. Questo operatore implementa un insieme di CustomResourceDefinitions (CRD) che consentono a Distributed Cloud di eseguire carichi di lavoro ad alte prestazioni.
L'operatore di funzioni di rete e la funzionalità SR-IOV non sono disponibili sui server Distributed Cloud.
L'operatore di funzione di rete ti consente di svolgere le seguenti operazioni:
- Esegui il polling dei dispositivi di rete esistenti su un nodo.
- Esegui query sull'indirizzo IP e sullo stato del collegamento fisico per ogni dispositivo di rete su un nodo.
- Esegui il provisioning di interfacce di rete aggiuntive su un nodo.
- Configura le funzionalità di sistema di basso livello sulla macchina fisica del nodo necessarie per supportare i workload ad alte prestazioni.
- Utilizza la virtualizzazione di input/output a radice singola (SR-IOV) sulle interfacce di rete PCI Express per virtualizzarle in più interfacce virtuali. Puoi quindi configurare i tuoi carichi di lavoro Distributed Cloud in modo che utilizzino queste interfacce di rete virtuali.
Il supporto di Distributed Cloud per SR-IOV si basa sui seguenti progetti open source:
Prerequisiti
L'operatore Network Function recupera la configurazione di rete dall'API Distributed Cloud Edge Network.
Per consentirlo, devi concedere al account di servizio operatore della funzione di rete il ruolo Visualizzatore rete perimetrale
(roles/edgenetwork.viewer) utilizzando questo comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/edgenetwork.viewer \ --member "serviceAccount:PROJECT_ID.svc.id.goog[nf-operator/nf-angautomator-sa]"
Sostituisci PROJECT_ID con l'ID del progetto Google Cloud di destinazione.
Risorse per gli operatori di funzioni di rete
L'operatore Distributed Cloud Network Function implementa le seguenti CRD Kubernetes:
Network. Definisce una rete virtuale che i pod possono utilizzare per comunicare con risorse interne ed esterne. Prima di specificarla in questa risorsa, devi creare la VLAN corrispondente utilizzando l'API Distributed Cloud Edge Network. Per le istruzioni, vedi Creare una rete.NetworkInterfaceState. Consente il rilevamento degli stati dell'interfaccia di rete e l'esecuzione di query su un'interfaccia di rete per lo stato del collegamento e l'indirizzo IP.NodeSystemConfigUpdate. Consente la configurazione di funzionalità di sistema di basso livello come le opzioni del kernel e i flagKubelet.SriovNetworkNodePolicy. Seleziona un gruppo di interfacce di rete virtualizzate SR-IOV e lo istanzia come risorsa Kubernetes. Puoi utilizzare questa risorsa in una risorsaNetworkAttachmentDefinition.SriovNetworkNodeState. Consente di eseguire query sullo stato di provisioning della risorsaSriovNetworkNodePolicysu un nodo Distributed Cloud.NetworkAttachmentDefinition. Consente di collegare i pod Distributed Cloud a una o più reti logiche o fisiche sul nodo Distributed Cloud. Prima di specificarla in questa risorsa, devi creare la VLAN corrispondente utilizzando l'API Distributed Cloud Edge Network. Per le istruzioni, vedi Creare una rete.
L'operatore Network Function consente anche di definire interfacce di rete secondarie che non utilizzano funzioni virtuali SR-IOV.
Network risorsa
La risorsa Network definisce una rete virtuale all'interno del rack Distributed Cloud che i pod all'interno del cluster Distributed Cloud possono utilizzare per comunicare con risorse interne ed esterne.
La risorsa Network fornisce i seguenti parametri configurabili per l'interfaccia di rete esposta come campi scrivibili:
spec.type: specifica il livello di trasporto di rete per questa rete. L'unico valore valido èL2. Devi anche specificare un valorenodeInterfaceMatcher.interfaceName.spec.nodeInterfaceMatcher.interfaceName: il nome dell'interfaccia di rete fisica sul nodo Distributed Cloud di destinazione da utilizzare con questa rete.spec.gateway4: l'indirizzo IP del gateway di rete per questa rete.spec.l2NetworkConfig.prefixLength4: specifica l'intervallo CIDR per questa rete.
L'esempio seguente illustra la struttura della risorsa:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: vlan200-network
annotations:
networking.gke.io/gdce-vlan-id: 200
networking.gke.io/gdce-vlan-mtu: 1500
spec:
type: L2
nodeInterfaceMatcher:
interfaceName: gdcenet0.200
gateway4: 10.53.0.1
NetworkInterfaceState risorsa
La risorsa NetworkInterfaceState è una risorsa di sola lettura che ti consente di scoprire le interfacce di rete fisiche sul nodo e raccogliere statistiche di runtime sul traffico di rete che scorre attraverso queste interfacce.
Distributed Cloud crea una risorsa NetworkInterfaceState
per ogni nodo di un cluster.
La configurazione predefinita delle macchine Distributed Cloud
include un'interfaccia di rete aggregata sulla scheda di rete figlia di selezione rack
(rNDC) denominata gdcenet0. Questa interfaccia combina le interfacce di rete eno1np0 e eno2np1. Ciascuno è collegato a uno switch ToR di Distributed Cloud.
La risorsa NetworkInterfaceState fornisce le seguenti categorie di
informazioni sull'interfaccia di rete esposte come campi di stato di sola lettura.
Informazioni generali:
status.interfaces.ifname: il nome dell'interfaccia di rete di destinazione.status.lastReportTime: l'ora e la data dell'ultimo report sullo stato dell'interfaccia di destinazione.
Informazioni sulla configurazione dell'indirizzo IP:
status.interfaces.interfaceinfo.address: l'indirizzo IP assegnato all'interfaccia di destinazione.status.interfaces.interfaceinfo.dns: l'indirizzo IP del server DNS assegnato all'interfaccia di destinazione.status.interfaces.interfaceinfo.gateway: l'indirizzo IP del gateway di rete che gestisce l'interfaccia di destinazione.status.interfaces.interfaceinfo.prefixlen: la lunghezza del prefisso IP.
Informazioni sull'hardware:
status.interfaces.linkinfo.broadcast: l'indirizzo MAC di trasmissione dell'interfaccia di destinazione.status.interfaces.linkinfo.businfo: il percorso del dispositivo PCIe nel formatobus:slot.function.status.interfaces.linkinfo.flags: i flag dell'interfaccia, ad esempioBROADCAST.status.interfaces.linkinfo.macAddress: l'indirizzo MAC unicast dell'interfaccia di destinazione.status.interfaces.linkinfo.mtu: il valore MTU per l'interfaccia di destinazione.
Statistiche di ricezione:
status.interfaces.statistics.rx.bytes: il numero totale di byte ricevuti dall'interfaccia di destinazione.status.interfaces.statistics.rx.dropped: il numero totale di pacchetti eliminati dall'interfaccia di destinazione.status.interfaces.statistics.rx.errors: il numero totale di errori di ricezione dei pacchetti per l'interfaccia di destinazione.status.interfaces.statistics.rx.multicast: il numero totale di pacchetti multicast ricevuti dall'interfaccia di destinazione.status.interfaces.statistics.rx.overErrors: il numero totale di errori di ricezione dei pacchetti per l'interfaccia di destinazione.status.interfaces.statistics.rx.packets: il numero totale di pacchetti ricevuti dall'interfaccia di destinazione.
Statistiche sulla trasmissione:
status.interfaces.statistics.tx.bytes: il numero totale di byte trasmessi dall'interfaccia di destinazione.status.interfaces.statistics.tx.carrierErrors: il numero totale di errori dell'operatore riscontrati dall'interfaccia di destinazione.status.interfaces.statistics.tx.collisions: il numero totale di collisioni di pacchetti rilevate dall'interfaccia di destinazione.status.interfaces.statistics.tx.dropped: il numero totale di pacchetti eliminati dall'interfaccia di destinazione.status.interfaces.statistics.tx.errors: gli errori di trasmissione totali per l'interfaccia di destinazione.status.interfaces.statistics.tx.packets: il numero totale di pacchetti trasmessi dall'interfaccia di destinazione.
L'esempio seguente illustra la struttura della risorsa:
apiVersion: networking.gke.io/v1
kind: NetworkInterfaceState
metadata:
name: MyNode1
nodeName: MyNode1
status:
interfaces:
- ifname: eno1np0
linkinfo:
businfo: 0000:1a:00.0
flags: up|broadcast|multicast
macAddress: ba:16:03:9e:9c:87
mtu: 9000
statistics:
rx:
bytes: 1098522811
errors: 2
multicast: 190926
packets: 4988200
tx:
bytes: 62157709961
packets: 169847139
- ifname: eno2np1
linkinfo:
businfo: 0000:1a:00.1
flags: up|broadcast|multicast
macAddress: ba:16:03:9e:9c:87
mtu: 9000
statistics:
rx:
bytes: 33061895405
multicast: 110203
packets: 110447356
tx:
bytes: 2370516278
packets: 11324730
- ifname: enp95s0f0np0
interfaceinfo:
- address: fe80::63f:72ff:fec4:2bf4
prefixlen: 64
linkinfo:
businfo: 0000:5f:00.0
flags: up|broadcast|multicast
macAddress: 04:3f:72:c4:2b:f4
mtu: 9000
statistics:
rx:
bytes: 37858381
multicast: 205645
packets: 205645
tx:
bytes: 1207334
packets: 6542
- ifname: enp95s0f1np1
interfaceinfo:
- address: fe80::63f:72ff:fec4:2bf5
prefixlen: 64
linkinfo:
businfo: 0000:5f:00.1
flags: up|broadcast|multicast
macAddress: 04:3f:72:c4:2b:f5
mtu: 9000
statistics:
rx:
bytes: 37852406
multicast: 205607
packets: 205607
tx:
bytes: 1207872
packets: 6545
- ifname: enp134s0f0np0
interfaceinfo:
- address: fe80::63f:72ff:fec4:2b6c
prefixlen: 64
linkinfo:
businfo: 0000:86:00.0
flags: up|broadcast|multicast
macAddress: 04:3f:72:c4:2b:6c
mtu: 9000
statistics:
rx:
bytes: 37988773
multicast: 205584
packets: 205584
tx:
bytes: 1212385
packets: 6546
- ifname: enp134s0f1np1
interfaceinfo:
- address: fe80::63f:72ff:fec4:2b6d
prefixlen: 64
linkinfo:
businfo: 0000:86:00.1
flags: up|broadcast|multicast
macAddress: 04:3f:72:c4:2b:6d
mtu: 9000
statistics:
rx:
bytes: 37980702
multicast: 205548
packets: 205548
tx:
bytes: 1212297
packets: 6548
- ifname: gdcenet0
interfaceinfo:
- address: 208.117.254.36
prefixlen: 28
- address: fe80::b816:3ff:fe9e:9c87
prefixlen: 64
linkinfo:
flags: up|broadcast|multicast
macAddress: ba:16:03:9e:9c:87
mtu: 9000
statistics:
rx:
bytes: 34160422968
errors: 2
multicast: 301129
packets: 115435591
tx:
bytes: 64528301111
packets: 181171964
.. <remaining interfaces omitted>
lastReportTime: "2022-03-30T07:35:44Z"
NodeSystemConfigUpdate risorsa
La risorsa NodeSystemConfigUpdate consente di apportare modifiche alla configurazione del sistema operativo del nodo e di modificare i flag Kubelet. Le modifiche diverse da quelle di sysctl richiedono il riavvio di un nodo.
Quando crei un'istanza di questa risorsa, devi specificare i nodi di destinazione nel campo nodeSelector. Devi includere tutte le coppie chiave-valore per ogni
nodo di destinazione nel campo nodeSelector. Quando specifichi più di un nodo di destinazione
in questo campo, i nodi di destinazione vengono aggiornati un nodo alla volta.
ATTENZIONE: il campo nodeName è stato ritirato. Se lo utilizzi, i nodi di destinazione, inclusi i nodi del control plane locale, vengono riavviati immediatamente, il che può interrompere i carichi di lavoro critici.
La risorsa NodeSystemConfigUpdate fornisce i seguenti campi di configurazione
specifici per Distributed Cloud:
spec.containerRuntimeDNSConfig.ip: specifica un elenco di indirizzi IP per i registri delle immagini privati.spec.containerRuntimeDNSConfig: specifica un elenco di voci DNS personalizzate utilizzate dall'ambiente di runtime del container su ogni nodo Distributed Cloud. Ogni voce è composta dai seguenti campi:ip: specifica l'indirizzo IPv4 di destinazione.domain: specifica il dominio corrispondente.interface: specifica l'interfaccia di uscita di rete tramite la quale è raggiungibile l'indirizzo IP specificato nel campoip. Puoi specificare un'interfaccia definita tramite le seguenti risorse:CustomNetworkInterfaceConfig,Network(per annotazione),NetworkAttachmentDefinition(per annotazione). Questa è una funzionalità a livello di anteprima.
spec.kubeletConfig.cpuManagerPolicy: specifica il criterio CPUManager di Kubernetes. I valori validi sonoNoneeStatic.spec.kubeletConfig.topologyManagerPolicy: specifica il criterio TopologyManager di Kubernetes. I valori validi sonoNone,BestEffort,RestrictedeSingleNumaMode.spec.osConfig.hugePagesConfig: specifica la configurazione delle pagine enormi per nodo NUMA. I valori validi sono2MBe1GB. Il numero di pagine enormi richieste è distribuito uniformemente tra entrambi i nodi NUMA del sistema. Ad esempio, se allochi 16 pagine enormi da 1 GB ciascuna, ogni nodo riceve una pre-allocazione di 8 GB.spec.osConfig.isolatedCpusPerSocket: specifica il numero di CPU isolate per socket. Obbligatorio secpuManagerPolicyè impostato suStatic. Il numero massimo di CPU isolate deve essere inferiore all'80% delle CPU totali nel nodo.spec.osConfig.cpuIsolationPolicy: specifica la policy di isolamento della CPU. La policyDefaultisola solo le attivitàsystemddalle CPU riservate ai workload. Il criterioKernelcontrassegna le CPU comeisolcpuse imposta i flagrcu_nocb,nohz_fullercu_nocb_pollsu ogni CPU.spec.sysctls.NodeLevel: specifica i parametrisysctlsche puoi configurare a livello globale su un nodo utilizzando l'operatore Network Function. I parametri configurabili sono i seguenti:fs.inotify.max_user_instancesfs.inotify.max_user_watcheskernel.sched_rt_runtime_uskernel.core_patternnet.ipv4.tcp_wmemnet.ipv4.tcp_rmemnet.ipv4.tcp_slow_start_after_idlenet.ipv4.udp_rmem_minnet.ipv4.udp_wmem_minnet.ipv4.tcp_rmemnet.ipv4.tcp_wmemnet.core.rmem_maxnet.core.wmem_maxnet.core.rmem_defaultnet.core.wmem_defaultnet.netfilter.nf_conntrack_tcp_timeout_unacknowledgednet.netfilter.nf_conntrack_tcp_timeout_max_retransnet.sctp.auth_enablenet.sctp.sctp_memnet.ipv4.udp_memnet.ipv4.tcp_memnet.ipv4.tcp_slow_start_after_idlenet.sctp.auth_enablevm.max_map_count
Puoi anche limitare l'ambito dei parametri
sysctlssicuri e non sicuri a un pod o uno spazio dei nomi specifico utilizzando il plug-intuningContainer Networking Interface (CNI).
La risorsa NodeSystemConfigUpdate fornisce i seguenti campi di stato generali di sola lettura:
status.lastReportTime: l'ultima volta che è stato segnalato lo stato dell'interfaccia di destinazione.status.conditions.lastTransitionTime: l'ultima volta che la condizione dell'interfaccia è cambiata.status.conditions.observedGeneration: indica il valore.metadata.generationsu cui si basava la condizione iniziale.status.conditions.message: un messaggio informativo che descrive la modifica della condizione dell'interfaccia.status.conditions.reason: un identificatore programmatico che indica il motivo dell'ultima modifica della condizione dell'interfaccia.status.conditions.status: il descrittore di stato della condizione. I valori validi sonoTrue,FalseeUnknown.status.conditions.type: il tipo di condizione in camelCase.
L'esempio seguente illustra la struttura della risorsa:
apiVersion: networking.gke.io/v1
kind: NodeSystemConfigUpdate
metadata:
name: node-pool-1-config
namespace: default
spec:
nodeSelector:
baremetal.cluster.gke.io/node-pool: node-pool-1
networking.gke.io/worker-network-sriov.capable: true
sysctls:
nodeLevel:
"net.ipv4.udp_mem" : "12348035 16464042 24696060"
kubeletConfig:
topologyManagerPolicy: BestEffort
cpuManagerPolicy: Static
osConfig:
hugePagesConfig:
"TWO_MB": 0
"ONE_GB": 16
isolatedCpusPerSocket:
"0": 10
"1": 10
SriovNetworkNodePolicy risorsa
La risorsa SriovNetworkNodePolicy consente di allocare un gruppo di funzioni virtuali (VF) SR-IOV su una macchina fisica Distributed Cloud e di istanziare il gruppo come risorsa Kubernetes. Puoi quindi utilizzare
questa risorsa in una risorsa NetworkAttachmentDefinition.
Puoi selezionare ogni VF di destinazione in base al fornitore e all'ID dispositivo PCIe, agli indirizzi del dispositivo PCIe o al nome del dispositivo enumerato Linux. L'operatore di rete SR-IOV configura ogni interfaccia di rete fisica per eseguire il provisioning delle VF di destinazione. Ciò include l'aggiornamento del firmware dell'interfaccia di rete, la configurazione del driver del kernel Linux e il riavvio della macchina Distributed Cloud, se necessario.
Per scoprire le interfacce di rete disponibili sul nodo, puoi cercare le risorse NetworkInterfaceState su quel nodo nello spazio dei nomi nf-operator.
L'esempio seguente illustra la struttura della risorsa:
apiVersion: sriovnetwork.k8s.cni.cncf.io/v1
kind: SriovNetworkNodePolicy
metadata:
name: mlnx6-p2-sriov-en2
namespace: sriov-network-operator
spec:
deviceType: netdevice
isRdma: true
mtu: 9000
nicSelector:
pfNames:
- enp134s0f1np1
nodeSelector:
edgecontainer.googleapis.com/network-sriov.capable: "true"
numVfs: 31
priority: 99
resourceName: mlnx6_p2_sriov_en2
L'esempio precedente crea un massimo di 31 VF dalla seconda porta dell'interfaccia di rete denominata enp134s0f1np1 con un valore MTU di 9000 (il valore massimo consentito). Utilizza l'etichetta del selettore di nodi
edgecontainer.googleapis.com/network-sriov.capable, presente su tutti
i nodi Distributed Cloud in grado di supportare SR-IOV.
Per informazioni sull'utilizzo di questa risorsa, vedi
SriovNetworkNodeState.
SriovNetworkNodeState risorsa
La risorsa di sola lettura SriovNetworkNodeState consente di eseguire query sullo stato di provisioning della risorsa SriovNetworkNodePolicy su un nodo Distributed Cloud. Restituisce la configurazione
completa della risorsa SriovNetworkNodePolicy sul nodo
e un elenco di VF attive sul nodo. Il campo status.syncStatus
indica se tutte le risorse SriovNetworkNodePolicy definite per il nodo
sono state applicate correttamente.
L'esempio seguente illustra la struttura della risorsa:
apiVersion: sriovnetwork.k8s.cni.cncf.io/v1
kind: SriovNetworkNodeState
metadata:
name: MyNode1
namespace: sriov-network-operator
spec:
dpConfigVersion: "1969684"
interfaces:
- mtu: 9000
name: enp134s0f1np1
numVfs: 31
pciAddress: 0000:86:00.1
vfGroups:
- deviceType: netdevice
mtu: 9000
policyName: mlnx6-p2-sriov-en2
resourceName: mlnx6_p2_sriov_en2
vfRange: 0-30
status:
Status:
Interfaces:
Device ID: 1015
Driver: mlx5_core
Link Speed: 25000 Mb/s
Link Type: ETH
Mac: ba:16:03:9e:9c:87
Mtu: 9000
Name: eno1np0
Pci Address: 0000:1a:00.0
Vendor: 15b3
Device ID: 1015
Driver: mlx5_core
Link Speed: 25000 Mb/s
Link Type: ETH
Mac: ba:16:03:9e:9c:87
Mtu: 9000
Name: eno2np1
Pci Address: 0000:1a:00.1
Vendor: 15b3
Vfs:
- Vfs:
- deviceID: 101e
driver: mlx5_core
mac: c2:80:29:b5:63:55
mtu: 9000
name: enp134s0f1v0
pciAddress: 0000:86:04.1
vendor: 15b3
vfID: 0
- deviceID: 101e
driver: mlx5_core
mac: 7e:36:0c:82:d4:20
mtu: 9000
name: enp134s0f1v1
pciAddress: 0000:86:04.2
vendor: 15b3
vfID: 1
.. <omitted 29 other VFs here>
syncStatus: Succeeded
Per informazioni sull'utilizzo di questa risorsa, vedi
SriovNetworkNodeState.
NetworkAttachmentDefinition risorsa
La risorsa NetworkAttachmentDefinition consente di collegare
i pod Distributed Cloud a una o più reti logiche o fisiche
sul nodo Distributed Cloud. Sfrutta
il framework Multus-CNI e il
plug-in SRIOV-CNI.
Utilizza un'annotazione per fare riferimento al nome della risorsa
SriovNetworkNodePolicy appropriata. Quando crei questa annotazione, procedi
nel seguente modo:
- Usa il tasto
k8s.v1.cni.cncf.io/resourceName. - Utilizza il prefisso
gke.io/nel suo valore, seguito dal nome della risorsaSriovNetworkNodePolicydi destinazione.
L'esempio seguente illustra la struttura della risorsa:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: sriov-net1
namespace: mynamespace
annotations:
k8s.v1.cni.cncf.io/resourceName: gke.io/mlnx6_p2_sriov_en2
spec:
config: '{
"type": "sriov",
"cniVersion": "0.3.1",
"name": "sriov-network",
"ipam": {
"type": "host-local",
"subnet": "10.56.217.0/24",
"routes": [{
"dst": "0.0.0.0/0"
}],
"gateway": "10.56.217.1"
}
}'
Esegui l'upgrade delle risorse NetworkAttachmentDefinition a Distributed Cloud 1.4.0
Distributed Cloud versione 1.4.0 sostituisce l'interfaccia bond0
con una nuova interfaccia denominata gdcenet0. L'interfaccia gdcenet0 ti consente di utilizzare la scheda di interfaccia di rete (NIC) di gestione host in ogni macchina Distributed Cloud del rack per i tuoi carichi di lavoro, mantenendo completamente separato il traffico di rete del piano di controllo e gestione di Distributed Cloud. Per sfruttare questa funzionalità, completa i passaggi descritti in questa sezione per riconfigurare le risorse NetworkAttachmentDefinition, quindi segui le istruzioni riportate in Configura il networking di Distributed Cloud per eseguire il provisioning delle reti e delle subnet appropriate.
Per ogni cluster Distributed Cloud su cui hai
eseguito il deployment di una o più risorse NetworkAttachmentDefinition,
si applicano le seguenti regole di migrazione:
- Per ogni nuova risorsa
NetworkAttachmentDefinition, utilizzagdcenet0anzichébond0come valore del campomaster. Se applichi una risorsa che utilizzabond0o un valore vuoto per questo campo, Distributed Cloud sostituisce il valore congdcenet0, quindi archivia e applica la risorsa al cluster. - Per ogni risorsa
NetworkAttachmentDefinitionesistente, sostituiscibond0congdcenet0come valore del campomaster, quindi riapplica la risorsa al cluster per ripristinare la connettività di rete completa ai pod interessati.
Per informazioni sull'utilizzo di questa risorsa, vedi
NetworkAttachmentDefinition.
Configurare un'interfaccia secondaria su un pod utilizzando le VF SR-IOV
Dopo aver configurato una risorsa SriovNetworkNodePolicy e una risorsa NetworkAttachmentDefinition corrispondente, puoi configurare un'interfaccia di rete secondaria su un pod Distributed Cloud utilizzando le funzioni virtuali SR-IOV.
Per farlo, aggiungi un'annotazione alla definizione del pod Distributed Cloud nel seguente modo:
- Chiave:
k8s.v1.cni.cncf.io/networks - Valore:
nameSpace/<NetworkAttachmentDefinition1,nameSpace/NetworkAttachmentDefinition2...
Il seguente esempio illustra questa annotazione:
apiVersion: v1
kind: Pod
metadata:
name: sriovpod
annotations:
k8s.v1.cni.cncf.io/networks: mynamespace/sriov-net1
spec:
containers:
- name: sleeppodsriov
command: ["sh", "-c", "trap : TERM INT; sleep infinity & wait"]
image: alpine
securityContext:
capabilities:
add:
- NET_ADMIN
Configurare un'interfaccia secondaria su un pod utilizzando il driver MacVLAN
Distributed Cloud supporta anche la creazione di un'interfaccia di rete secondaria su un pod utilizzando il driver MacVLAN. Solo l'interfaccia gdcenet0
supporta questa configurazione e solo sui pod che eseguono carichi di lavoro containerizzati.
Per configurare un'interfaccia in modo che utilizzi il driver MacVLAN:
Configura una risorsa
NetworkAttachmentDefinitioncome mostrato nell'esempio seguente:apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: macvlan-b400-1 annotations: networking.gke.io/gdce-vlan-id: 400 spec: config: '{ "type": "macvlan", "master": "gdcenet0.400", "ipam": { "type": "static", "addresses": [ { "address": "192.168.100.20/27", "gateway": "192.168.100.1" } ] ... } }'Aggiungi un'annotazione alla definizione del pod Distributed Cloud come segue:
apiVersion: v1 kind: Pod metadata: name: macvlan-testpod1 annotations: k8s.v1.cni.cncf.io/networks: macvlan-b400-1
Configurare un'interfaccia secondaria su un pod utilizzando il multinetworking di Distributed Cloud
Distributed Cloud supporta la creazione di un'interfaccia di rete secondaria su un pod utilizzando la funzionalità multi-rete. Per farlo, segui questa procedura.
Configura una risorsa
Network. Ad esempio:apiVersion: networking.gke.io/v1 kind: Network metadata: name: vlan200-network spec: type: L2 nodeInterfaceMatcher: interfaceName: vlan200-interface gateway4: 10.53.0.1Aggiungi un'annotazione alla definizione del pod Distributed Cloud come segue:
apiVersion: v1 kind: Pod metadata: name: myPod annotations: networking.gke.io/interfaces: [{"interfaceName":"eth1","network":"vlan200-network"}] networking.gke.io/default-interface: eth1 ...Passaggi successivi