Administración de grupos de nodos para un clúster (AKS en Azure Stack HCI 22H2)
Se aplica a: AKS en Azure Stack HCI 22H2, AKS en Windows Server
Nota:
Para obtener información sobre cómo administrar grupos de nodos en AKS en Azure Stack HCI 23H2, consulte Administración de grupos de nodos.
En AKS habilitado por Azure Arc, los nodos de la misma configuración se agrupan en grupos de nodos. Estos grupos de nodos contienen las máquinas virtuales subyacentes que ejecutan las aplicaciones. En este artículo se muestra cómo crear y administrar grupos de nodos para un clúster en AKS Arc.
Nota:
Esta característica permite un mayor control sobre cómo crear y administrar varios grupos de nodos. Como resultado, se requieren comandos independientes para las operaciones de creación, actualización y eliminación. Anteriormente, las operaciones de clúster a través de New-AksHciCluster o Set-AksHciCluster eran la única opción para crear o escalar un clúster con un grupo de nodos de Windows y un grupo de nodos de Linux. Esta característica expone un conjunto de operaciones independiente para los grupos de nodos que requieren el uso de los comandos del grupo de nodos New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool y Remove-AksHciNodePool para ejecutar operaciones en un grupo de nodos individual.
Antes de empezar
Se recomienda instalar la versión 1.1.6. Si ya tiene instalado el módulo de PowerShell, ejecute el siguiente comando para buscar la versión:
Get-Command -Module AksHci
Si necesita actualizar PowerShell, siga las instrucciones de Actualización del host de AKS.
Creación de un clúster de AKS
Para empezar, cree un clúster de AKS con un grupo de nodo único. En el ejemplo siguiente se usa el comando New-AksHciCluster para crear un nuevo clúster de Kubernetes con un grupo de nodos de Linux denominado linuxnodepool, que tiene 1 nodo. Si ya tiene un clúster implementado con una versión anterior de AKS y desea seguir usando la implementación anterior, puede omitir este paso. Todavía puede usar el nuevo conjunto de comandos del grupo de nodos para agregar más grupos de nodos al clúster existente.
New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1 -osType linux
Nota:
Todavía se admite el conjunto de parámetros antiguo para New-AksHciCluster
.
Adición de un grupo de nodos
El clúster denominado mycluster
*', creado en el paso anterior, tiene un único grupo de nodos. Puede agregar un segundo grupo de nodos al clúster existente mediante el comando New-AksHciNodePool. En el ejemplo siguiente se crea un grupo de nodos de Windows denominado windowsnodepool con un nodo. Asegúrese de que el nombre del grupo de nodos no es el mismo que ningún grupo de nodos existente.
New-AksHciNodePool -clusterName mycluster -name windowsnodepool -count 1 -osType Windows -osSku Windows2022
Obtención de la información de configuración de un grupo de nodos
Para ver la información de configuración de los grupos de nodos, use el comando Get-AksHciNodePool.
Get-AksHciNodePool -clusterName mycluster
Ejemplo:
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
Para ver la información de configuración de un grupo de nodos específico, use el -name
parámetro en Get-AksHciNodePool.
Get-AksHciNodePool -clusterName mycluster -name linuxnodepool
Salida de ejemplo:
ClusterName : mycluster
NodePoolName : linuxnodepool
Version : v1.20.7
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Get-AksHciNodePool -clusterName mycluster -name windowsnodepool
Salida de ejemplo:
ClusterName : mycluster
NodePoolName : windowsnodepool
Version : v1.20.7
OsType : Windows
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Nota:
Si usa los nuevos conjuntos de parámetros en New-AksHciCluster
para implementar un clúster y después ejecuta Get-AksHciCluster
para obtener la información del clúster, los campos WindowsNodeCount
y LinuxNodeCount
de la salida devolverán 0
. Para obtener el número preciso de nodos de cada grupo de nodos, use el comando Get-AksHciNodePool
con el nombre de clúster especificado.
Escalado de un grupo de nodos
Puede escalar o reducir verticalmente el número de nodos de los grupos de nodos.
Para escalar el número de nodos de un grupo de nodos, use el comando Set-AksHciNodePool. En el ejemplo siguiente se escala el número de nodos a 3 de un grupo de nodos denominado linuxnodepool
en el mycluster
clúster.
Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3
Escalar nodos del plano de control
La administración de nodos del plano de control no ha cambiado. La forma en que se crean, escalan y quitan sigue siendo la misma. Seguirá implementando nodos del plano de control con el comando New-AksHciCluster con los parámetros y controlPlaneVmSize
con los valores predeterminados controlPlaneNodeCount
de 1 y Standard_A4_V2, respectivamente, si no proporciona ningún valor.
Es posible que tenga que escalar los nodos del plano de control a medida que cambia la demanda de carga de trabajo de las aplicaciones. Use el comando Set-AksHciCluster para escalar los nodos del plano de control. En el ejemplo siguiente se escalan los nodos del plano de control a 3 en mycluster
el clúster, que se creó en los pasos anteriores.
Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3
Eliminación de un grupo de nodos
Si necesita eliminar un grupo de nodos, use el comando Remove-AksHciNodePool. En el ejemplo siguiente se quita el grupo de nodos denominado windowsnodepool
del mycluster
clúster.
Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool
Especificación de una intolerancia para un grupo de nodos
Al crear un grupo de nodos, puede agregar intolerancias a ese grupo de nodos. Al agregar una intolerancia, todos los nodos de ese grupo de nodos también obtienen esa intolerancia. Para más información sobre tolerancias e intolerancias, consulte Intolerancias y tolerancias de Kubernetes.
Establecimiento de intolerancias del grupo de nodos
Para crear un grupo de nodos con una intolerancia, use New-AksHciNodePool. Especifique el nombre taintnp
y use el -taints
parámetro para especificar sku=gpu:noSchedule
el valor taint.
New-AksHciNodePool -clusterName mycluster -name taintnp -count 1 -osType linux -taints sku=gpu:NoSchedule
Nota:
Solo pueden crearse intolerancias para los grupos de nodos cuando estos se crean.
Ejecute el siguiente comando para asegurarse de que el grupo de nodos se implementó correctamente con el taint especificado.
Get-AksHciNodePool -clusterName mycluster -name taintnp
Salida
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}
En el paso anterior, aplicó el valor taint sku=gpu:NoSchedule cuando creó el grupo de nodos. El siguiente manifiesto YAML básico de ejemplo usa un valor toleration para permitir al programador de Kubernetes ejecutar un pod NGINX en un nodo de ese grupo de nodos.
Cree un archivo denominado nginx-toleration.yaml
y copie la información en el texto siguiente.
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"
A continuación, programe el pod con el comando siguiente.
kubectl apply -f nginx-toleration.yaml
Para comprobar si el pod se ha implementado, ejecute el comando siguiente:
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