Inicio rápido: Implementación de un clúster de Azure Kubernetes Service mediante la CLI de AzureQuickstart: Deploy an Azure Kubernetes Service cluster using the Azure CLI

Azure Kubernetes Service (AKS) es un servicio de Kubernetes administrado que le permite implementar y administrar clústeres rápidamente.Azure Kubernetes Service (AKS) is a managed Kubernetes service that lets you quickly deploy and manage clusters. En este inicio rápido realizará lo siguiente:In this quickstart, you will:

  • Implementación de un clúster de AKS con la CLI de Azure.Deploy an AKS cluster using the Azure CLI.

  • Ejecución de una aplicación de varios contenedores con un servidor front-end web y una instancia de Redis en el clúster.Run a multi-container application with a web front-end and a Redis instance in the cluster.

  • Supervisión del estado del clúster y de los pods que ejecutan la aplicación.Monitor the health of the cluster and pods that run your application.

    Aplicación de votación implementada en Azure Kubernetes Service

En esta guía rápida se presupone un conocimiento básico de los conceptos de Kubernetes.This quickstart assumes a basic understanding of Kubernetes concepts. Para más información, consulte Conceptos básicos de Kubernetes de Azure Kubernetes Service (AKS).For more information, see Kubernetes core concepts for Azure Kubernetes Service (AKS).

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

Para más información sobre cómo crear un grupo de nodos de Windows Server, consulte Creación de un clúster de AKS que admita contenedores de Windows Server.To learn more about creating a Windows Server node pool, see Create an AKS cluster that supports Windows Server containers.

Requisitos previosPrerequisites

  • Use el entorno de Bash en Azure Cloud Shell.Use the Bash environment in Azure Cloud Shell.

    Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window

  • Si lo prefiere, instale la CLI de Azure para ejecutar sus comandos de referencia.If you prefer, install the Azure CLI to run CLI reference commands.

    • Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login.If you're using a local installation, sign in to the Azure CLI by using the az login command. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación.To finish the authentication process, follow the steps displayed in your terminal. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.For additional sign-in options, see Sign in with the Azure CLI.

    • Cuando se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use.When you're prompted, install Azure CLI extensions on first use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.For more information about extensions, see Use extensions with the Azure CLI.

    • Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas.Run az version to find the version and dependent libraries that are installed. Para realizar la actualización a la versión más reciente, ejecute az upgrade.To upgrade to the latest version, run az upgrade.

  • En este artículo se necesita la versión 2.0.64, o versiones posteriores, de la CLI de Azure.This article requires version 2.0.64 or greater of the Azure CLI. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.If using Azure Cloud Shell, the latest version is already installed.

Nota

Si planea ejecutar los comandos de este inicio rápido localmente en lugar de en Azure Cloud Shell, hágalo como administrador.Run the commands as administrator if you plan to run the commands in this quickstart locally instead of in Azure Cloud Shell.

Crear un grupo de recursosCreate a resource group

Un grupo de recursos de Azure es un grupo lógico en el que se implementan y administran recursos de Azure.An Azure resource group is a logical group in which Azure resources are deployed and managed. Cuando crea un grupo de recursos, se le pide que especifique una ubicación.When you create a resource group, you will be prompted to specify a location. Esta ubicación es:This location is:

  • La ubicación de almacenamiento de los metadatos del grupo de recursos.The storage location of your resource group metadata.
  • El lugar en el que se ejecutan los recursos en Azure si no se especifica otra región al crearlos.Where your resources will run in Azure if you don't specify another region during resource creation.

En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.The following example creates a resource group named myResourceGroup in the eastus location.

Cree un grupo de recursos con el comando az group create.Create a resource group using the az group create command.

az group create --name myResourceGroup --location eastus

Salida del grupo de recursos que se creó correctamente:Output for successfully created resource group:

{
  "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
  "location": "eastus",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Habilitación de la supervisión de clústeresEnable cluster monitoring

  1. Compruebe que Microsoft.OperationsManagement y Microsoft.OperationalInsights están registrados en la suscripción.Verify Microsoft.OperationsManagement and Microsoft.OperationalInsights are registered on your subscription. Para comprobar el estado del registro, siga estos pasos:To check the registration status:

    az provider show -n Microsoft.OperationsManagement -o table
    az provider show -n Microsoft.OperationalInsights -o table
    

    Si no están registrados, use el siguiente comando para registrar Microsoft.OperationsManagement y Microsoft.OperationalInsights:If they are not registered, register Microsoft.OperationsManagement and Microsoft.OperationalInsights using:

    az provider register --namespace Microsoft.OperationsManagement
    az provider register --namespace Microsoft.OperationalInsights
    
  2. Habilite Azure Monitor para contenedores mediante el parámetro --enable-addons monitoring.Enable Azure Monitor for containers using the --enable-addons monitoring parameter.

Creación de un clúster de AKSCreate AKS cluster

Cree un clúster de AKS con el comando az aks create.Create an AKS cluster using the az aks create command. En el siguiente ejemplo se crea un clúster denominado myAKSCluster con un nodo:The following example creates a cluster named myAKSCluster with one node:

az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 1 --enable-addons monitoring --generate-ssh-keys

Transcurridos unos minutos, el comando se completa y devuelve información en formato JSON sobre el clúster.After a few minutes, the command completes and returns JSON-formatted information about the cluster.

Nota

Al crear un clúster de AKS, se crea automáticamente un segundo grupo de recursos para almacenar los recursos de dicho clúster.When you create an AKS cluster, a second resource group is automatically created to store the AKS resources. Para más información, consulte ¿Por qué se crean dos grupos de recursos con AKS?For more information, see Why are two resource groups created with AKS?

Conectarse al clústerConnect to the cluster

Para administrar un clúster de Kubernetes, use kubectl, el cliente de línea de comandos de Kubernetes.To manage a Kubernetes cluster, use the Kubernetes command-line client, kubectl. Si usa Azure Cloud Shell, kubectl ya está instalado.kubectl is already installed if you use Azure Cloud Shell.

  1. Instale kubectl localmente mediante el comando az aks install-cli:Install kubectl locally using the az aks install-cli command:

    az aks install-cli
    
  2. Para configurar kubectl para conectarse a su clúster de Kubernetes, use el comando az aks get-credentials.Configure kubectl to connect to your Kubernetes cluster using the az aks get-credentials command. El siguiente comando:The following command:

    • Descarga las credenciales y configura la CLI de Kubernetes para usarlas.Downloads credentials and configures the Kubernetes CLI to use them.
    • Usa ~/.kube/config, la ubicación predeterminada del archivo de configuración de Kubernetes.Uses ~/.kube/config, the default location for the Kubernetes configuration file. Puede especificar otra ubicación para el archivo de configuración de Kubernetes con la opción --file.Specify a different location for your Kubernetes configuration file using --file.
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. Compruebe la conexión al clúster con el comando kubectl get.Verify the connection to your cluster using the kubectl get command. Este comando devuelve una lista de los nodos del clúster.This command returns a list of the cluster nodes.

    kubectl get nodes
    

    La salida muestra el nodo único creado en los pasos anteriores.Output shows the single node created in the previous steps. Asegúrese de que el estado del nodo es Listo:Make sure the node status is Ready:

    NAME                       STATUS   ROLES   AGE     VERSION
    aks-nodepool1-31718369-0   Ready    agent   6m44s   v1.12.8
    

Ejecución de la aplicaciónRun the application

Un archivo de manifiesto de Kubernetes define el estado deseado del clúster, por ejemplo, qué imágenes de contenedor se van a ejecutar.A Kubernetes manifest file defines a cluster's desired state, such as which container images to run.

En este inicio rápido se usa un manifiesto para crear todos los objetos necesarios para ejecutar la aplicación Azure Vote.In this quickstart, you will use a manifest to create all objects needed to run the Azure Vote application. Este manifiesto incluye dos implementaciones de Kubernetes:This manifest includes two Kubernetes deployments:

  • Las aplicaciones de Python de ejemplo de Azure Vote.The sample Azure Vote Python applications.
  • Una instancia de Redis.A Redis instance.

También se crean dos servicios de Kubernetes:Two Kubernetes Services are also created:

  • Un servicio interno para la instancia de Redis.An internal service for the Redis instance.
  • Un servicio externo para acceder a la aplicación Azure Vote desde Internet.An external service to access the Azure Vote application from the internet.
  1. Cree un archivo llamado azure-vote.yaml.Create a file named azure-vote.yaml.

    • Si usa Azure Cloud Shell, este archivo se puede crear mediante code, vi o nano como si trabajara en un sistema físico o virtual:If you use the Azure Cloud Shell, this file can be created using code, vi, or nano as if working on a virtual or physical system
  2. Copie la siguiente definición de código YAML:Copy in the following YAML definition:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-back
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-back
      template:
        metadata:
          labels:
            app: azure-vote-back
        spec:
          nodeSelector:
            "beta.kubernetes.io/os": linux
          containers:
          - name: azure-vote-back
            image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
            env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 6379
              name: redis
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-back
    spec:
      ports:
      - port: 6379
      selector:
        app: azure-vote-back
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-front
      template:
        metadata:
          labels:
            app: azure-vote-front
        spec:
          nodeSelector:
            "beta.kubernetes.io/os": linux
          containers:
          - name: azure-vote-front
            image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 80
            env:
            - name: REDIS
              value: "azure-vote-back"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-front
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: azure-vote-front
    
  3. Implemente la aplicación mediante el comando kubectl apply y especifique el nombre del manifiesto de YAML:Deploy the application using the kubectl apply command and specify the name of your YAML manifest:

    kubectl apply -f azure-vote.yaml
    

    La salida muestra los servicios y las implementaciones que se crearon correctamente:Output shows the successfully created deployments and services:

    deployment "azure-vote-back" created
    service "azure-vote-back" created
    deployment "azure-vote-front" created
    service "azure-vote-front" created
    

Prueba de la aplicaciónTest the application

Cuando se ejecuta la aplicación, un servicio de Kubernetes expone el front-end de la aplicación a Internet.When the application runs, a Kubernetes service exposes the application front end to the internet. Este proceso puede tardar unos minutos en completarse.This process can take a few minutes to complete.

Para supervisar el progreso, utilice el comando kubectl get service con el argumento --watch.Monitor progress using the kubectl get service command with the --watch argument.

kubectl get service azure-vote-front --watch

La salida de EXTERNAL-IP del servicio azure-vote-front aparecerá inicialmente como pendiente.The EXTERNAL-IP output for the azure-vote-front service will initially show as pending.

NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

Una vez que la dirección EXTERNAL-IP cambia de pendiente a una dirección IP pública real, use CTRL-C para detener el kubectl proceso de inspección.Once the EXTERNAL-IP address changes from pending to an actual public IP address, use CTRL-C to stop the kubectl watch process. En la salida del ejemplo siguiente se muestra una dirección IP pública válida asignada al servicio:The following example output shows a valid public IP address assigned to the service:

azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Para ver la aplicación Azure Vote en acción, abra un explorador web en la dirección IP externa del servicio.To see the Azure Vote app in action, open a web browser to the external IP address of your service.

Aplicación de votación implementada en Azure Kubernetes Service

Vea las métricas de mantenimiento de los nodos del clúster y los pods capturadas por Azure Monitor para contenedores en Azure Portal.View the cluster nodes' and pods' health metrics captured by Azure Monitor for containers in the Azure portal.

Eliminación del clústerDelete the cluster

Para evitar cargos de Azure, se recomienda limpiar los recursos que no sean necesarios.To avoid Azure charges, clean up your unnecessary resources. Use el comando az group delete para quitar el grupo de recursos, el servicio de contenedor y todos los recursos relacionados.Use the az group delete command to remove the resource group, container service, and all related resources.

az group delete --name myResourceGroup --yes --no-wait

Nota

Cuando elimina el clúster, la entidad de servicio Azure Active Directory que utiliza el clúster de AKS no se quita.When you delete the cluster, the Azure Active Directory service principal used by the AKS cluster is not removed. Para conocer los pasos que hay que realizar para quitar la entidad de servicio, consulte Consideraciones principales y eliminación de AKS.For steps on how to remove the service principal, see AKS service principal considerations and deletion.

Si usó una identidad administrada, esta está administrada por la plataforma y no requiere que la quite.If you used a managed identity, the identity is managed by the platform and does not require removal.

Obtención del códigoGet the code

En este inicio rápido, se han usado imágenes de un contenedor creado previamente para crear una implementación de Kubernetes.Pre-existing container images were used in this quickstart to create a Kubernetes deployment. El código de la aplicación relacionada, Dockerfile, y el archivo de manifiesto de Kubernetes están disponibles en GitHub.The related application code, Dockerfile, and Kubernetes manifest file are available on GitHub.

Pasos siguientesNext steps

En este inicio rápido, ha implementado un clúster de Kubernetes y luego ha implementado en él una aplicación de varios contenedores.In this quickstart, you deployed a Kubernetes cluster and then deployed a multi-container application to it. Acceda al panel web de Kubernetes del clúster de AKS.Access the Kubernetes web dashboard for your AKS cluster.

Para obtener más información sobre AKS y un ejemplo completo desde el código hasta la implementación, continúe con el tutorial del clúster de Kubernetes.To learn more about AKS, and walk through a complete code to deployment example, continue to the Kubernetes cluster tutorial.