Distribuire il plug-in CNI (Container Network Interface) della rete virtuale di Azure
Il plug-in CNI (Container Network Interface) della rete virtuale di Azure viene installato in una macchina virtuale di Azure e aggiunge funzionalità di rete virtuale ai pod Kubernetes e ai contenitori Docker. Per altre informazioni sul plug-in, vedere Enable containers to use Azure Virtual Network capabilities (Abilitare i contenitori all'uso delle funzionalità di rete virtuale di Azure). Il plug-in può inoltre essere usato con il servizio Azure Kubernetes scegliendo l'opzione Rete avanzata, che inserisce automaticamente i contenitori del servizio Azure Kubernetes in una rete virtuale.
Distribuire il plug-in per il cluster Kubernetes del servizio Azure Container
Il motore di servizio Azure Container distribuisce un cluster Kubernetes con un modello di Azure Resource Manager. La configurazione del cluster è specificata in un file JSON che viene passato allo strumento durante la generazione del modello. Per altre informazioni sull'intero elenco delle impostazioni di cluster supportate e le relative descrizioni, vedere Microsoft Azure Container Service Engine - Cluster Definition (Motore del servizio Microsoft Azure Container - Definizione del cluster). Il plug-in è il plug-in di rete predefinito per i cluster creati usando il motore del servizio Azure Container. Le seguenti impostazioni di configurazione di rete sono importanti per la configurazione del plug-in:
Impostazione | Descrizione |
---|---|
firstConsecutiveStaticIP | Indirizzo IP allocato al nodo principale. Questa impostazione è obbligatoria. |
clusterSubnet sotto kubernetesConfig | CIDR della subnet della rete virtuale in cui viene distribuito il cluster e da cui gli indirizzi IP vengono allocati ai pod |
vnetSubnetId sotto masterProfile | Specifica l'ID risorsa di Azure Resource Manager della subnet in cui verrà distribuito il cluster |
vnetCidr | CIDR della rete virtuale in cui è distribuito il cluster |
max-Pods sotto kubeletConfig | Numero massimo di pod in ogni macchina virtuale agente. Per il plug-in, il valore predefinito è 30. È possibile specificare fino a 250 pod |
Configurazione di esempio
L'esempio JSON che segue è per un cluster con le proprietà seguenti:
Un nodo principale e due nodi agente
Distribuito in una subnet denominata KubeClusterSubnet (10.0.0.0/20), con nodi sia principali che dell'agente che si trovano in esso.
{
"apiVersion": "vlabs",
"properties": {
"orchestratorProfile": {
"orchestratorType": "Kubernetes",
"kubernetesConfig": {
"clusterSubnet": "10.0.0.0/20" --> Subnet allocated for the cluster
}
},
"masterProfile": {
"count": 1,
"dnsPrefix": "ACSKubeMaster",
"vmSize": "Standard_A2",
"vnetSubnetId": "/subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<Vnet Name>/subnets/KubeClusterSubnet",
"firstConsecutiveStaticIP": "10.0.1.50", --> IP address allocated to the Master node
"vnetCidr": "10.0.0.0/16" --> Virtual network address space
},
"agentPoolProfiles": [
{
"name": "k8sagentpoo1",
"count": 2,
"vmSize": "Standard_A2_v2",
"vnetSubnetId": "/subscriptions/<subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Network/virtualNetworks/<VNet Name>/subnets/KubeClusterSubnet",
"availabilityProfile": "AvailabilitySet"
}
],
"linuxProfile": {
"adminUsername": "KubeServerAdmin",
"ssh": {
"publicKeys": [
{…}
]
}
},
"servicePrincipalProfile": {
"clientId": "dd438987-aa12-4754-b47d-375811889714",
"secret": "azure123"
}
}
}
Distribuire il plug-in per un cluster Kubernetes
Completare i passaggi seguenti per installare il plug-in ogni macchina virtuale di Azure in un cluster Kubernetes:
Preallocare un pool di indirizzi IP di rete virtuale in ogni macchina virtuale da cui vengono assegnati indirizzi IP ai pod. Ogni macchina virtuale di Azure è fornita con un indirizzo IP privato di rete virtuale primaria in ogni interfaccia di rete. Il pool di indirizzi IP per i pod viene aggiunto come indirizzi secondari (ipconfigs) nell'interfaccia di rete della macchina virtuale, usando una delle opzioni seguenti:
Interfaccia della riga di comando: Assegnare più indirizzi IP usando l'interfaccia della riga di comando di Azure
PowerShell: Assegnare più indirizzi IP usando PowerShell
Portale: Assegnare più indirizzi IP usando il portale di Azure
Modello di Azure Resource Manager: Assegnare più indirizzi IP usando modelli
Assicurarsi di aggiungere indirizzi IP sufficienti per tutti i pod che si prevede di creare nella macchina virtuale.
Selezionare il plug-in per fornire funzionalità di rete per il cluster passando a Kubelet l'
–network-plugin=cni
opzione della riga di comando durante la creazione del cluster. Kubernetes, per impostazione predefinita, cerca il plug-in e il file di configurazione nelle directory in cui sono già installati.Se si desidera che i pod accedano a Internet, aggiungere la regola iptables seguente nelle macchine virtuali Linux per applicare la conversione Source NAT al traffico Internet. Nell'esempio seguente, l'intervallo IP specificato è 10.0.0.0/8.
iptables -t nat -A POSTROUTING -m iprange ! --dst-range 168.63.129.16 -m addrtype ! --dst-type local ! -d 10.0.0.0/8 -j MASQUERADE
Il traffico NAT delle regole che non è destinato agli intervalli IP specificati. Il presupposto è che tutto il traffico esterno agli intervalli precedenti sia traffico Internet. È possibile specificare gli intervalli IP della rete virtuale della macchina virtuale, delle reti virtuali con peering e delle reti locali.
Le macchine virtuali Windows applicano automaticamente la conversione Source NAT al traffico con una destinazione esterna alla subnet a cui appartiene la macchina virtuale. Non è possibile specificare intervalli IP personalizzati.
Al termine dei passaggi precedenti, alle macchine virtuali dell'agente Kubernetes vengono assegnati automaticamente indirizzi IP privati dalla rete virtuale.
Distribuire il plug-in per i contenitori Docker
Creare contenitori Docker con il comando seguente:
./docker-run.sh \<container-name\> \<container-namespace\> \<image\>
I contenitori inizieranno automaticamente a ricevere gli indirizzi IP dal pool allocato. Se si vuole bilanciare il carico del traffico verso i contenitori Docker, è necessario posizionarli dietro un servizio di bilanciamento del carico software con un probe di bilanciamento del carico.
File di configurazione di rete CNI
Il file di configurazione di rete CNI è descritto in formato JSON. Per impostazione predefinita, è presente in /etc/cni/net.d
per Linux e in c:\cni\netconf
per Windows. Il file specifica la configurazione del plug-in ed è diverso per Windows e Linux. Il codice JSON seguente è un file di configurazione Linux di esempio, seguito da una spiegazione per alcune delle impostazioni chiave. Non è necessario apportare modifiche al file:
{
"cniVersion":"0.3.0",
"name":"azure",
"plugins":[
{
"type":"azure-vnet",
"mode":"bridge",
"bridge":"azure0",
"ipam":{
"type":"azure-vnet-ipam"
}
},
{
"type":"portmap",
"capabilities":{
"portMappings":true
},
"snat":true
}
]
}
Spiegazione delle impostazioni
"cniVersion": i plug-in CNI di Azure Rete virtuale supportano le versioni 0.3.0 e 0.3.1 della specifica CNI.
"name": nome della rete. Questa proprietà può essere impostata su qualsiasi valore univoco.
"type": nome del plug-in di rete. Impostato su azure-vnet.
"mode": modalità operativa. Questo campo è facoltativo. L'unica modalità supportata è "bridge". Per altre informazioni, vedere le modalità operative.
"bridge": nome del bridge usato per connettere i contenitori a una rete virtuale. Questo campo è facoltativo. Se omesso, il plug-in seleziona automaticamente un nome univoco, in base all'indice dell'interfaccia principale.
"ipam"" - type": nome del plug-in Gestione indirizzi IP. È impostato sempre su azure-vnet-ipam.
Scaricare e installare il plug-in
Scaricare il plug-in da GitHub. Scaricare la versione più recente per la piattaforma in uso:
Copiare lo script di installazione per Linux o Windows nel computer in uso. Salvare lo script in una directory scripts
nel computer e denominare il file install-cni-plugin.sh
per Linux o install-cni-plugin.ps1
per Windows.
Per installare il plug-in, eseguire lo script appropriato per la piattaforma specificando la versione del plug-in uso. Ad esempio, è possibile specificare v1.4.20. Per l'installazione di Linux, specificare una versione appropriata del plug-in CNI, ad esempio v1.0.1:
scripts/install-cni-plugin.sh [azure-cni-plugin-version] [cni-plugin-version]
scripts\\ install-cni-plugin.ps1 [azure-cni-plugin-version]
Lo script installa il plug-in nel percorso /opt/cni/bin
per Linux e c:\cni\bin
per Windows. Nel plug-in installato è incluso un semplice file di configurazione di rete che funziona dopo l'installazione senza necessità di aggiornamenti. Per altre informazioni sulle impostazioni nel file, vedere File di configurazione di rete CNI.