Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I nodi del servizio Azure Kubernetes non richiedono i propri indirizzi IP pubblici per la comunicazione. Tuttavia, gli scenari possono richiedere che i nodi in un pool ricevano i propri indirizzi IP pubblici dedicati. Uno scenario comune riguarda i carichi di lavoro di gioco, in cui una console deve stabilire una connessione diretta a una macchina virtuale cloud per ridurre al minimo gli hop. Questo scenario può essere ottenuto nel servizio Azure Kubernetes usando l'indirizzo IP pubblico del nodo.
Fare clic su Crea un nuovo gruppo di risorse.
az group create --name <resourceGroup> --location <region>
Creare un nuovo cluster del servizio Azure Kubernetes e collegare un indirizzo IP pubblico per i nodi. Ogni nodo nel pool riceve un indirizzo IP pubblico univoco. È possibile eseguire una verifica esaminando le istanze del set di scalabilità di macchine virtuali.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--generate-ssh-keys
Per i cluster del servizio Azure Kubernetes esistenti, è possibile anche aggiungere un nuovo pool di nodi e collegare un indirizzo IP pubblico per i nodi.
az aks nodepool add --resource-group <resourceGroup> --cluster-name <aksClusterName> --name <newNodePool> --enable-node-public-ip
Usare un prefisso di indirizzo IP pubblico
I vantaggi dell'uso di un prefisso di indirizzo IP pubblico sono numerosi. Il servizio Azure Kubernetes supporta l'uso di indirizzi da un prefisso di indirizzo IP pubblico esistente per i nodi passando l'ID risorsa con il flag --node-public-ip-prefix-id quando si crea un nuovo cluster o si aggiunge un pool di nodi.
Innanzitutto, creare un prefisso di indirizzo IP pubblico con il comando az network public-ip prefix create:
az network public-ip prefix create --length 28 --location <region> --name <publicIPPrefixName> --resource-group <resourceGroup>
Visualizzare l'output e prendere nota dell'elemento id per il prefisso:
{
...
"id": "/subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName>",
...
}
Infine, quando si crea un nuovo cluster o si aggiunge un nuovo pool di nodi, usare il flag --node-public-ip-prefix-id e passare l'ID risorsa del prefisso:
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--node-public-ip-prefix-id /subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName> \
--generate-ssh-keys
Usa un prefisso IP pubblico a doppio stack (anteprima)
È possibile assegnare indirizzi IP pubblici IPv4 e IPv6 a ogni nodo in un pool di nodi usando un prefisso IP pubblico dual stack. Questo approccio consente di portare i propri prefissi IP pubblici e assicurarsi che ogni nodo riceva un indirizzo IPv4 e un indirizzo IPv6.
Questa funzionalità è utile per i carichi di lavoro che richiedono connettività in ingresso o in uscita diretta su IPv4 e IPv6 o applicazioni che operano in ambienti che richiedono la conformità IPv6.
Importante
La funzionalità di anteprima AKS sono disponibili in modalità self-service, sulla base dell'attivazione facoltativa. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime di AKS sono parzialmente coperte dal supporto clienti secondo il principio del massimo sforzo. Di conseguenza, queste funzionalità non sono destinate all'uso in ambienti di produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Requisiti
Per usare prefissi IP pubblici dual stack con indirizzi IP pubblici del nodo, assicurarsi che siano soddisfatti i prerequisiti seguenti:
- Il cluster è configurato come cluster dual stack con famiglie IP IPv4 e IPv6.
- Il cluster usa Azure CNI con rete overlay.
- Si dispone di un prefisso IP pubblico IPv4 e di un prefisso IP pubblico IPv6 creato nella stessa area del cluster del servizio Azure Kubernetes.
- Entrambi i prefissi IP pubblici usano lo SKU Standard.
- L'identità del cluster AKS ha l'autorizzazione per gestire i prefissi IP pubblici. Se i prefissi sono in un gruppo di risorse diverso, assegnare all'identità del cluster il ruolo Collaboratore di rete per quel gruppo di risorse.
Registrare le funzionalità di anteprima
Il supporto per i prefissi IP pubblici (IPv4 e IPv6) dual-stack per gli IP pubblici dei nodi è attualmente disponibile in anteprima. Prima di poter usare questa funzionalità, è necessario installare o aggiornare l'estensione interfaccia della riga di comando di Azure e registrare i NodePublicIPv6PrefixPreview flag di funzionalità nella sottoscrizione.
Installare o aggiornare l'estensione aks-preview:
az extension add --name aks-preview --upgrade
Registrare le funzionalità di anteprima necessarie:
az feature register --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview
Il completamento delle registrazioni delle funzionalità può richiedere alcuni minuti. Per controllare lo stato della registrazione, eseguire:
az feature show --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview --query "properties.state"
Attendere fino a quando entrambe le funzionalità segnalano lo stato Registrato prima di procedere.
Dopo aver registrato i flag di funzionalità, aggiornare il provider di risorse per assicurarsi che vengano applicate le modifiche:
az provider register --namespace Microsoft.ContainerService
Una volta completata la registrazione, è possibile creare o aggiornare un cluster per utilizzare prefissi IP pubblici dual-stack per gli indirizzi IP pubblici dei nodi.
Creare prefissi IP pubblici
Creare un prefisso IP pubblico per IPv4 e IPv6 usando il interfaccia della riga di comando di Azure.
Per IPv4:
az network public-ip prefix create \
--resource-group <resourceGroup> \
--name <ipv4PrefixName> \
--location <region> \
--length 28 \
--sku Standard \
--version IPv4
Per IPv6:
az network public-ip prefix create \
--resource-group <resourceGroup> \
--name <ipv6PrefixName> \
--location <region> \
--length 124 \
--sku Standard \
--version IPv6
Dopo aver creato i prefissi, annota gli ID delle risorse di entrambi i prefissi.
Creare un nuovo cluster con prefissi IP pubblici dei nodi dual-stack
Quando si crea un nuovo cluster AKS, usare il parametro --node-public-ip-prefix-ids per specificare sia i prefissi IP pubblici IPv4 sia quelli IPv6.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--ip-families IPv4,IPv6 \
--network-plugin azure \
--network-plugin-mode overlay \
--node-public-ip-prefix-ids "<ipv4PrefixResourceId>,<ipv6PrefixResourceId>" \
--generate-ssh-keys
Il parametro --node-public-ip-prefix-ids accetta un elenco di ID risorsa dei prefissi IP pubblici separati da virgole. L'elenco deve includere un prefisso IPv4 e un prefisso IPv6.
Aggiungere un pool di nodi con prefissi IP pubblici del nodo dual-stack
È anche possibile aggiungere a un cluster dual-stack esistente un pool di nodi con prefissi IP pubblici dei nodi dual-stack.
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--enable-node-public-ip \
--node-public-ip-prefix-ids "<ipv4PrefixResourceId>,<ipv6PrefixResourceId>"
Limitazioni
Le limitazioni seguenti si applicano al prefisso IP pubblico dual-stack:
- È necessario specificare sia un prefisso IPv4 che un prefisso IPv6. Le configurazioni solo IPv6 non sono supportate.
- La configurazione ip pubblico del nodo non è modificabile. Per modificare i prefissi IP pubblici, è necessario creare un nuovo pool di nodi ed eseguire la migrazione dei carichi di lavoro.
- A ogni nodo viene assegnato un singolo indirizzo IP pubblico IPv6.
- Questa funzionalità non è supportata con AKS Automatic o con il provisioning automatico dei nodi.
- I pool di nodi con più schede di interfaccia di rete non sono supportati.
- Cluster Autoscaler è supportato, ma assicurarsi che il numero massimo di nodi configurato non superi il numero di indirizzi IP disponibili nel prefisso IP pubblico, perché ogni nodo richiede un indirizzo IP dal prefisso.
Individuare indirizzi IP pubblici per i nodi
Per individuare gli IP pubblici per i nodi, sono disponibili diverse procedure:
- Usare il comando dell'interfaccia della riga di comando di Azure
az vmss list-instance-public-ips. - Usare i comandi PowerShell o Bash.
- È possibile anche individuare gli indirizzi IP pubblici nel portale di Azure visualizzando le istanze nel set di scalabilità di macchine virtuali.
Importante
Il gruppo di risorse del nodo contiene i nodi e i relativi indirizzi IP pubblici. Usare il gruppo di risorse del nodo durante l'esecuzione dei comandi per individuare gli indirizzi IP pubblici per i nodi.
az vmss list-instance-public-ips --resource-group <MC_region_aksClusterName_region> --name <virtualMachineScaleSetName>
Usare tag di indirizzi IP pubblici negli indirizzi IP pubblici del nodo
I tag IP pubblici possono essere usati negli INDIRIZZI IP pubblici del nodo per usare la funzionalità Preferenza di routing di Azure , disponibile nelle aree specificate.
Requisiti
- È richiesto il servizio Azure Kubernetes versione 1.29 o successiva.
Creare un nuovo cluster usando la preferenza di routing Internet
az aks create \
--name <aksClusterName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet \
--generate-ssh-keys
Aggiungere un pool di nodi con la preferenza di routing Internet
az aks nodepool add --cluster-name <aksClusterName> \
--name <nodePoolName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet
Consentire le connessioni alle porte host e aggiungere pool di nodi ai gruppi di sicurezza delle applicazioni
I nodi del servizio Azure Kubernetes che usano indirizzi IP pubblici dei nodi che ospitano i servizi sul proprio indirizzo host devono avere una regola del gruppo di sicurezza di rete aggiunta per consentire il traffico. L'aggiunta delle porte desiderate nella configurazione del pool di nodi determina la creazione delle regole di autorizzazione appropriate nel gruppo di sicurezza di rete del cluster.
Se nella subnet è presente un gruppo di sicurezza di rete con un cluster che usa una rete virtuale di tipo Bring Your Own, è necessario aggiungere una regola di autorizzazione a tale gruppo. Ciò può essere limitato ai nodi di un determinato pool aggiungendo il pool di nodi a un gruppo di sicurezza delle applicazioni. Un gruppo di sicurezza delle viene creato per impostazione predefinita nel gruppo di risorse gestite se sono specificate le porte host consentite. I nodi possono anche essere aggiunti a uno o più gruppi di sicurezza delle applicazioni personalizzati specificando l'ID risorsa dei gruppi di sicurezza di rete nei parametri del pool di nodi.
Formato della specifica della porta host
Quando si specifica l'elenco di porte da consentire, usare un elenco separato da virgole con voci nel formato port/protocol o startPort-endPort/protocol.
Esempi:
- 80/tcp
- 80/tcp,443/tcp
- 53/udp,80/tcp
- 50000-60000/tcp
Requisiti
- È richiesto il servizio Azure Kubernetes versione 1.29 o successiva.
Creare un nuovo cluster con porte consentite e gruppi di sicurezza delle applicazioni
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--nodepool-name <nodePoolName> \
--nodepool-allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp\
--nodepool-asg-ids "<asgId>,<asgId>" \
--generate-ssh-keys
Aggiungere un nuovo pool con porte consentite e gruppi di sicurezza delle applicazioni
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Aggiornare le porte consentite e i gruppi di sicurezza delle applicazioni per un pool di nodi
az aks nodepool update \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Assegnare automaticamente le porte host per i carichi di lavoro dei pod (ANTEPRIMA)
Quando gli indirizzi IP pubblici sono configurati nei nodi, è possibile usare le porte host per consentire ai pod di ricevere direttamente il traffico senza la necessità di configurare un servizio di bilanciamento del carico. Ciò è particolarmente utile in scenari come il gioco, in cui la natura temporanea dell'indirizzo IP del nodo e della porta non è un problema perché un servizio matchmaker in un nome host noto può fornire l'host e la porta corretti da usare in fase di connessione. Tuttavia, poiché un solo processo in un host può essere in ascolto su una stessa porta, l'uso di applicazioni con porte host può causare problemi di pianificazione. Per evitare questo problema, il servizio Azure Kubernetes consente al sistema di assegnare dinamicamente una porta disponibile in fase di pianificazione, impedendo i conflitti.
Avviso
Il traffico della porta host del pod viene bloccato dalle regole predefinite del gruppo di sicurezza di rete sul cluster. Questa funzione deve essere combinata assegnando alle porte host sul pool di nodi l'autorizzazione per consentire il flusso del traffico.
Importante
La funzionalità di anteprima AKS sono disponibili in modalità self-service, sulla base dell'attivazione facoltativa. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime di AKS sono parzialmente coperte dal supporto clienti secondo il principio del massimo sforzo. Di conseguenza, queste funzionalità non sono destinate all'uso in ambienti di produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Requisiti
- È richiesto il servizio Azure Kubernetes versione 1.29 o successiva.
Registrare il flag di funzionalità "PodHostPortAutoAssignPreview"
Per registrare il flag di funzionalità PodHostPortAutoAssignPreview, usare il comando az feature register come illustrato nell'esempio seguente:
az feature register --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Sono necessari alcuni minuti per visualizzare lo stato Registered. Verificare lo stato della registrazione usando il comando az feature show:
az feature show --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Quando lo stato passa a Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando az provider register:
az provider register --namespace Microsoft.ContainerService
Assegnare automaticamente una porta host a un pod
L'attivazione dell'assegnazione automatica delle porte host viene eseguita distribuendo un carico di lavoro senza porte host e applicando l'annotazione kubernetes.azure.com/assign-hostports-for-containerports con l'elenco di porte che richiedono assegnazioni di porte host. Il valore dell'annotazione deve essere specificato come elenco delimitato da virgole di voci come port/protocol, dove la porta è un singolo numero di porta definito nella specifica Pod e il protocollo è tcp o udp.
Le porte vengono assegnate nell'intervallo 40000-59999 e sono univoche nel cluster. Le porte assegnate vengono aggiunte anche alle variabili di ambiente nel pod, in modo che l'applicazione possa determinare quali porte siano state assegnate. Il nome della variabile di ambiente è formato seguente (più in basso): <deployment name>_PORT_<port number>_<protocol>_HOSTPORT, quindi un esempio potrebbe essere mydeployment_PORT_8080_TCP_HOSTPORT: 41932.
Di seguito è riportato un esempio di distribuzione echoserver, che mostra il mapping delle porte host per le porte 8080 e 8443:
apiVersion: apps/v1
kind: Deployment
metadata:
name: echoserver-hostport
labels:
app: echoserver-hostport
spec:
replicas: 3
selector:
matchLabels:
app: echoserver-hostport
template:
metadata:
annotations:
kubernetes.azure.com/assign-hostports-for-containerports: 8080/tcp,8443/tcp
labels:
app: echoserver-hostport
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: echoserver-hostport
image: k8s.gcr.io/echoserver:1.10
ports:
- name: http
containerPort: 8080
protocol: TCP
- name: https
containerPort: 8443
protocol: TCP
Quando viene applicata la distribuzione, le voci hostPort sono incluse nel file YAML dei singoli pod:
$ kubectl describe pod echoserver-hostport-75dc8d8855-4gjfc
<cut for brevity>
Containers:
echoserver-hostport:
Container ID: containerd://d0b75198afe0612091f412ee7cf7473f26c80660143a96b459b3e699ebaee54c
Image: k8s.gcr.io/echoserver:1.10
Image ID: k8s.gcr.io/echoserver@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229 Ports: 8080/TCP, 8443/TCP
Host Ports: 46645/TCP, 49482/TCP
State: Running
Started: Thu, 12 Jan 2023 18:02:50 +0000
Ready: True
Restart Count: 0
Environment:
echoserver-hostport_PORT_8443_TCP_HOSTPORT: 49482
echoserver-hostport_PORT_8080_TCP_HOSTPORT: 46645
Passaggi successivi
Informazioni sull'uso di più pool di nodi nel servizio Azure Kubernetes.
Informazioni sull'uso dei servizi di bilanciamento del carico stadard nel servizio Azure Kubernetes