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.
Si applica a: AKS su Windows Server
Nota
Per informazioni sulla gestione dei pool di nodi in AKS su Azure Locale, vedere Gestire i pool di nodi.
Nel servizio Azure Kubernetes in Windows Server i nodi della stessa configurazione vengono raggruppati in pool di nodi. Questi pool di nodi contengono le macchine virtuali sottostanti che eseguono le applicazioni. Questo articolo illustra come creare e gestire pool di nodi per un cluster in AKS Arc.
Nota
Questa funzionalità consente un maggiore controllo su come creare e gestire più pool di nodi. Di conseguenza, per le operazioni di creazione, aggiornamento ed eliminazione sono necessari comandi separati. In precedenza, le operazioni del cluster tramite New-AksHciCluster o Set-AksHciCluster erano l'unica opzione per creare o ridimensionare un cluster con un pool di nodi Windows e un pool di nodi Linux. Questa funzionalità espone un set di operazioni separato per i pool di nodi che richiedono l'uso dei comandi del pool di nodi New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool e Remove-AksHciNodePool per eseguire operazioni su un singolo pool di nodi.
Operazioni preliminari
È consigliabile installare la versione 1.1.6. Se il modulo PowerShell è già installato, eseguire il comando seguente per trovare la versione:
Get-Command -Module AksHci
Se è necessario aggiornare PowerShell, seguire le istruzioni riportate in Aggiornare l'host del servizio Azure Kubernetes.
Creare un cluster di Azure Kubernetes Service (AKS)
Per iniziare, crea un cluster AKS con un singolo pool di nodi. L'esempio seguente usa il comando New-AksHciCluster per creare un nuovo cluster Kubernetes con un pool di nodi Linux denominato linuxnodepool, con 1 nodo. Se è già stato distribuito un cluster con una versione precedente del servizio Azure Kubernetes e si vuole continuare a usare la distribuzione precedente, è possibile ignorare questo passaggio. È comunque possibile usare il nuovo set di comandi del pool di nodi per aggiungere altri pool di nodi al cluster esistente.
New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1 -osType linux
Nota
Il set di parametri precedente per New-AksHciCluster
è ancora supportato.
Aggiungere un pool di nodi
Il cluster denominato mycluster
*', creato nel passaggio precedente, ha un singolo pool di nodi. È possibile aggiungere un secondo pool di nodi al cluster esistente usando il comando New-AksHciNodePool . L'esempio seguente crea un pool di nodi Windows denominato windowsnodepool con un nodo. Assicurarsi che il nome del pool di nodi non corrisponda a quello di qualsiasi pool di nodi esistente.
New-AksHciNodePool -clusterName mycluster -name windowsnodepool -count 1 -osType Windows -osSku Windows2022
Ottenere informazioni di configurazione di un pool di nodi
Per visualizzare le informazioni di configurazione dei pool di nodi, usare il comando Get-AksHciNodePool .
Get-AksHciNodePool -clusterName mycluster
Output di esempio:
ClusterName : mycluster
NodePoolName : linuxnodepool
Version : v1.20.7
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
ClusterName : mycluster
NodePoolName : windowsnodepool
Version : v1.20.7
OsType : Windows
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Per visualizzare le informazioni di configurazione di un pool di nodi specifico, usare il -name
parametro in Get-AksHciNodePool.
Get-AksHciNodePool -clusterName mycluster -name linuxnodepool
Output di esempio:
ClusterName : mycluster
NodePoolName : linuxnodepool
Version : v1.20.7
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Get-AksHciNodePool -clusterName mycluster -name windowsnodepool
Output di esempio:
ClusterName : mycluster
NodePoolName : windowsnodepool
Version : v1.20.7
OsType : Windows
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Nota
Se si usa il nuovo set di parametri in New-AksHciCluster
per distribuire un cluster e quindi eseguire Get-AksHciCluster
per ottenere le informazioni sul cluster, i campi WindowsNodeCount
e LinuxNodeCount
nell'output restituiranno 0
. Per ottenere il numero accurato di nodi in ogni pool di nodi, usare il comando Get-AksHciNodePool
con il nome del cluster specificato.
Ridimensionare un pool di nodi
È possibile aumentare o ridurre il numero di nodi in un pool di nodi.
Per ridimensionare il numero di nodi in un pool di nodi, usare il comando Set-AksHciNodePool . Nell'esempio seguente il numero di nodi viene ridimensionato a 3 in un pool di nodi denominato linuxnodepool
nel mycluster
cluster.
Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3
Ridimensionare i nodi del piano di controllo
La gestione dei nodi del piano di controllo non è stata modificata. Il modo in cui vengono creati, ridimensionati e rimossi rimane invariato. I nodi del piano di controllo verranno comunque distribuiti con il comando New-AksHciCluster con i controlPlaneNodeCount
parametri e controlPlaneVmSize
con i valori predefiniti rispettivamente 1 e Standard_A4_V2, se non si specificano valori.
Potrebbe essere necessario ridimensionare i nodi del piano di controllo quando cambia la domanda del carico di lavoro delle applicazioni. Per ridimensionare i nodi del piano di controllo, usare il comando Set-AksHciCluster . Nell'esempio seguente i nodi del piano di controllo vengono ridimensionati su 3 nel mycluster
cluster, creati nei passaggi precedenti.
Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3
Eliminare un pool di nodi
Se è necessario eliminare un pool di nodi, usare il comando Remove-AksHciNodePool . Nell'esempio seguente viene rimosso il pool di nodi denominato windowsnodepool
dal mycluster
cluster.
Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool
Specificare un taint per un pool di nodi
Quando si crea un pool di nodi, è possibile aggiungere segni distintivi a tale pool di nodi. Quando si aggiunge un taint, tutti i nodi all'interno di quel pool di nodi ricevono anch'essi quel taint. Per ulteriori informazioni sulle taint e tolleranze, consultare Kubernetes Taints e Tolerations.
Impostazione dei taint del pool di nodi
Per creare un pool di nodi con un taint, usare New-AksHciNodePool. Specificare il nome taintnp
, e usare il parametro -taints
per specificare sku=gpu:noSchedule
per il taint.
New-AksHciNodePool -clusterName mycluster -name taintnp -count 1 -osType linux -taints sku=gpu:NoSchedule
Nota
Un taint può essere impostato per i pool di nodi solo durante la loro creazione.
Eseguire il comando seguente per assicurarsi che il pool di nodi sia stato implementato con successo con il taint specificato.
Get-AksHciNodePool -clusterName mycluster -name taintnp
Status : {Phase, Details}
ClusterName : mycluster
NodePoolName : taintnp
Version : v1.20.7-kvapkg.1
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Taints : {sku=gpu:NoSchedule}
Nel passaggio precedente hai applicato il taint sku=gpu:NoSchedule durante la creazione del pool di nodi. L'esempio di manifesto YAML di base seguente utilizza una tolleranza per consentire all'utilità di pianificazione Kubernetes di eseguire un pod NGINX su un nodo del gruppo di nodi.
Creare un file denominato nginx-toleration.yaml
e copiare le informazioni nel testo seguente.
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
name: mypod
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 1
memory: 2G
tolerations:
- key: "sku"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"
Quindi, pianifica il pod usando il comando seguente.
kubectl apply -f nginx-toleration.yaml
Per verificare che il pod sia stato distribuito, eseguire il comando seguente:
kubectl describe pod mypod
[...]
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
sku=gpu:NoSchedule
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 32s default-scheduler Successfully assigned default/mypod to moc-lk4iodl7h2y
Normal Pulling 30s kubelet Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
Normal Pulled 26s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 4.529046457s
Normal Created 26s kubelet Created container mypod