Compartir a través de


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 taintnpy 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.yamly 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

Pasos siguientes