(EN DESUSO)Implementación de un clúster de Kubernetes para contenedores de Linux

Sugerencia

Para obtener la versión actualizada, esta guía de inicio rápido que usa Azure Kubernetes Service, consulte Inicio rápido: Implementación de un clúster de Azure Kubernetes Service (AKS).

Advertencia

Azure Container Service (ACS) está en desuso. No hay características o funcionalidades nuevas para agregar a ACS. Todas las API, la experiencia del portal, los comandos de la CLI y la documentación se marcan como en desuso.

En 2017, presentamos Azure Kubernetes Service (AKS) para simplificar la administración, la implementación y las operaciones de Kubernetes. Si usa el orquestador de Kubernetes, migre a AKS antes del 31 de enero de 2020. Para empezar, vea Migración de Azure Container Service (ACS) a Azure Kubernetes Service (AKS).

Para más información, consulte el anuncio de desuso de Azure Container Service en Azure.com.

En este inicio rápido, se implementa un clúster de Kubernetes mediante la CLI de Azure. A continuación, se ejecuta e implementa en el clúster una aplicación de varios contenedores que consta de un front-end web y una instancia de Redis. Una vez finalizado el proceso, la aplicación es accesible a través de Internet.

La aplicación de ejemplo usada en este documento está escrita en Python. Los conceptos y los pasos que se detallan aquí pueden utilizarse para implementar cualquier imagen de contenedor en un clúster de Kubernetes. Los archivos de manifiesto de Kubernetes creados previamente, Dockerfile y el código relacionados con este proyecto están disponibles en GitHub.

Imagen de la exploración hasta Azure Vote

En esta guía de inicio rápido se supone que tiene unos conocimientos básicos de los conceptos de Kubernetes. Para obtener información más detallada sobre esta aplicación, consulte la documentación de Kubernetes.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Uso de Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.

Para iniciar Azure Cloud Shell:

Opción Ejemplo o vínculo
Seleccione Pruébelo en la esquina superior derecha de un bloque de código. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador. Iniciar Cloud Shell en una nueva ventana
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:

  1. Inicie Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione CtrlMayúsV en Windows y Linux, o bien seleccione CmdMayúsV en macOS.

  4. Seleccione Entrar para ejecutar el código.

Si decide instalar y usar la CLI localmente, para esta guía de inicio rápido es preciso que ejecute la CLI de Azure versión 2.0.4 o posterior. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, consulte Instalación de la CLI de Azure.

Crear un grupo de recursos

Para crear un grupo de recursos, use el comando az group create. Un grupo de recursos de Azure es un grupo lógico en el que se implementan y administran recursos de Azure.

En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación westeurope.

az group create --name myResourceGroup --location westeurope

Salida:

{
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
  "location": "westeurope",
  "managedBy": null,
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Creación de un clúster de Kubernetes

Cree un clúster de Kubernetes en Azure Container Service con el comando az acs create. En el ejemplo siguiente, se crea un clúster denominado myK8sCluster con un nodo maestro de Linux y tres nodos de agente de Linux.

az acs create --orchestrator-type kubernetes --resource-group myResourceGroup --name myK8sCluster --generate-ssh-keys

En algunos casos, como con las versiones de evaluación de tiempo limitado, una suscripción a Azure tiene un acceso limitado a los recursos de Azure. Si se produce un error en la implementación debido a que los núcleos disponibles son limitados, reduzca el número de agentes predeterminado agregando --agent-count 1 al comando az acs create.

Después de varios minutos, el comando se completa y devuelve información en formato json sobre el clúster.

Conectarse al clúster

Para administrar un clúster de Kubernetes, use kubectl, el cliente de línea de comandos de Kubernetes.

Si usa Azure Cloud Shell, kubectl ya está instalado. Si desea instalarlo de forma local, puede usar el comando az acs kubernetes install-cli.

Para configurar kubectl para conectarse al clúster de Kubernetes, ejecute el comando az acs kubernetes get-credentials. Con este paso se descargan las credenciales y se configura la CLI de Kubernetes para usarlas.

az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster

Para comprobar la conexión al clúster, use el comando kubectl get para devolver una lista de los nodos del clúster.

kubectl get nodes

Salida:

NAME                    STATUS                     AGE       VERSION
k8s-agent-14ad53a1-0    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-1    Ready                      10m       v1.6.6
k8s-agent-14ad53a1-2    Ready                      10m       v1.6.6
k8s-master-14ad53a1-0   Ready,SchedulingDisabled   10m       v1.6.6

Ejecución de la aplicación

Un archivo de manifiesto de Kubernetes define un estado deseado del clúster, por ejemplo, qué imágenes de contenedor se deben ejecutar. En este ejemplo, se usa un manifiesto para crear todos los objetos necesarios para ejecutar la aplicación Azure Vote.

Cree un archivo denominado azure-vote.yml y copie el siguiente código YAML. Si está trabajando en Azure Cloud Shell, este archivo se puede crear mediante vi o Nano, como si trabajara en un sistema físico o virtual.

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: azure-vote-back
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-back
    spec:
      containers:
      - name: azure-vote-back
        image: redis
        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/v1beta1
kind: Deployment
metadata:
  name: azure-vote-front
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: azure-vote-front
    spec:
      containers:
      - name: azure-vote-front
        image: microsoft/azure-vote-front:v1
        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

Use el comando kubectl create para ejecutar la aplicación.

kubectl create -f azure-vote.yml

Salida:

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

Prueba de la aplicación

Cuando se ejecuta la aplicación, se crea un servicio de Kubernetes que expone la aplicación front-end a Internet. Este proceso puede tardar unos minutos en completarse.

Para supervisar el progreso, utilice el comando kubectl get service con el argumento --watch.

kubectl get service azure-vote-front --watch

En un primer momento, el parámetro EXTERNAL-IP del servicio azure-vote-front aparece como pendiente. Una vez que la dirección EXTERNAL-IP haya cambiado de pendiente a una dirección IP, use CTRL-C para detener el proceso de inspección de kubectl.

azure-vote-front   10.0.34.242   <pending>     80:30676/TCP   7s
azure-vote-front   10.0.34.242   52.179.23.131   80:30676/TCP   2m

Ahora ya puede navegar a la dirección IP externa para ver la aplicación Azure Vote.

Imagen de la exploración hasta Azure Vote

Eliminación de un clúster

Cuando un clúster ya no se necesite, puede usar el comando az group delete para quitar el grupo de recursos, el servicio de contenedor y todos los recursos relacionados.

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

Obtención del código

En esta guía de inicio rápido, se han usado imágenes de un contenedor creado previamente para crear una implementación de Kubernetes. El código de la aplicación relacionada, Dockerfile, y el archivo de manifiesto de Kubernetes están disponibles en GitHub.

https://github.com/Azure-Samples/azure-voting-app-redis

Pasos siguientes

En esta guía de inicio rápido, ha implementado un clúster de Kubernetes y una aplicación de varios contenedores en él.

Para más información sobre Azure Container Service y sobre un ejemplo completo desde el código hasta la implementación, siga con el tutorial del clúster de Kubernetes.